]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/HelpGen/src/HelpGen.cpp
cleaning up the mess created by the FloodFill patch
[wxWidgets.git] / utils / HelpGen / src / HelpGen.cpp
index 1cada46acb4152aac99bb1a46a34d834bca9db6f..4bf5e4418fa397e70e0efe831609e7754b5803e7 100644 (file)
@@ -894,13 +894,43 @@ void HelpGenVisitor::CloseFunction()
 
 void HelpGenVisitor::CloseClass()
 {
+       CloseFunction();
+
     if ( m_inClass ) {
         size_t count = m_arrayFuncDocs.GetCount();
         if ( count ) {
+                       size_t n;
             FunctionDocEntry::classname = m_classname;
+
             m_arrayFuncDocs.Sort(FunctionDocEntry::Compare);
 
-            for ( size_t n = 0; n < count; n++ ) {
+                       // Now examine each first line and if it's been seen, cut it
+                       // off (it's a duplicate \membersection)
+                       wxHashTable membersections(wxKEY_STRING);
+
+            for ( n = 0; n < count; n++ )
+                       {
+                wxString section(m_arrayFuncDocs[n].text);
+
+                               // Strip leading whitespace
+                               int pos = section.Find("\\membersection");
+                               if (pos > -1)
+                               {
+                                       section = section.Mid(pos);
+                               }
+
+                               wxString ms(section.BeforeFirst(wxT('\n')));
+                               if (membersections.Get(ms))
+                               {
+                                       m_arrayFuncDocs[n].text = section.AfterFirst(wxT('\n'));
+                               }
+                               else
+                               {
+                                       membersections.Put(ms, & membersections);
+                               }
+            }
+
+            for ( n = 0; n < count; n++ ) {
                 m_file.WriteTeX(m_arrayFuncDocs[n].text);
             }
 
@@ -1110,6 +1140,12 @@ void HelpGenVisitor::VisitClass( spClass& cl )
     }
     totalText << derived << "\n\n";
 
+    // include file section
+    wxString includeFile = "\\wxheading{Include files}\n\n";
+    includeFile << "<" << m_fileHeader << ">";
+
+    totalText << includeFile << "\n\n";
+
     // write all this to file
     m_file.WriteTeX(totalText);
 
@@ -1118,7 +1154,7 @@ void HelpGenVisitor::VisitClass( spClass& cl )
     InsertTypedefDocs();
     InsertEnumDocs();
 
-       m_file.Flush();
+       //m_file.Flush();
 }
 
 void HelpGenVisitor::VisitEnumeration( spEnumeration& en )
@@ -1265,19 +1301,10 @@ void HelpGenVisitor::VisitOperation( spOperation& op )
         funcname = dtor;
     }
 
-       static wxHashTable sg_MemberSectionsDone(wxKEY_STRING);
-       wxString memberSectionName;
-       memberSectionName.Printf("%s::%s", m_classname.c_str(), funcname.c_str());
-
-       m_textFunc = wxEmptyString;
-       if (!sg_MemberSectionsDone.Get(memberSectionName))
-       {
-               m_textFunc.Printf("\n"
-                      "\\membersection{%s::%s}\\label{%s}\n",
-                      m_classname.c_str(), funcname.c_str(),
-                      MakeLabel(m_classname, funcname).c_str());
-               sg_MemberSectionsDone.Put(memberSectionName, (wxObject*) & sg_MemberSectionsDone);
-       }
+       m_textFunc.Printf("\n"
+               "\\membersection{%s::%s}\\label{%s}\n",
+               m_classname.c_str(), funcname.c_str(),
+               MakeLabel(m_classname, funcname).c_str());
 
        wxString func;
        func.Printf("\n"
@@ -2176,6 +2203,13 @@ static const wxString GetVersionString()
 
 /*
    $Log$
+   Revision 1.22  2002/01/21 21:18:50  JS
+   Now adds 'include file' heading
+
+   Revision 1.21  2002/01/04 11:06:09  JS
+   Fixed missing membersections bug and also bug with functions not being written
+   in the right class
+
    Revision 1.20  2002/01/03 14:23:33  JS
    Added code to make it not duplicate membersections for overloaded functions