X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ffa4348d3385fa67e87587c87132ba95e75f7e95..6ce8b8484654b5ab073951373c93d9bdd8221881:/utils/HelpGen/src/HelpGen.cpp?ds=sidebyside diff --git a/utils/HelpGen/src/HelpGen.cpp b/utils/HelpGen/src/HelpGen.cpp index 01ca91cc75..47b9ae8726 100644 --- a/utils/HelpGen/src/HelpGen.cpp +++ b/utils/HelpGen/src/HelpGen.cpp @@ -241,7 +241,7 @@ public: // return true if we ignore this class entirely bool IgnoreClass(const wxString& classname) const { - IgnoreListEntry ignore(classname, _T("")); + IgnoreListEntry ignore(classname, wxEmptyString); return m_ignore.Index(&ignore) != wxNOT_FOUND; } @@ -426,6 +426,8 @@ protected: // information about all functions documented in the TeX file(s) // ------------------------------------------------------------- +public: // Note: Sun C++ 5.5 requires TypeInfo and ParamInfo to be public + // info about a type: for now stored as text string, but must be parsed // further later (to know that "char *" == "char []" - TODO) class TypeInfo @@ -673,7 +675,7 @@ int main(int argc, char **argv) } directoryOut = argv[current]; - if ( !directoryOut.IsEmpty() ) { + if ( !directoryOut.empty() ) { // terminate with a '/' if it doesn't have it switch ( directoryOut.Last() ) { case '/': @@ -733,7 +735,7 @@ int main(int argc, char **argv) // create a parser object and a visitor derivation CJSourceParser parser; HelpGenVisitor visitor(directoryOut, overwrite); - if ( !ignoreFile.IsEmpty() && mode == Mode_Dump ) + if ( !ignoreFile.empty() && mode == Mode_Dump ) visitor.GetIgnoreHandler().AddNamesFromFile(ignoreFile); spContext *ctxTop = NULL; @@ -748,14 +750,14 @@ int main(int argc, char **argv) header.c_str()); } else if ( mode == Mode_Dump ) { - ((spFile *)ctxTop)->mFileName = header; + ((spFile *)ctxTop)->m_FileName = header; visitor.VisitAll(*ctxTop); visitor.EndVisit(); } #ifdef __WXDEBUG__ if ( 0 && ctxTop ) - ctxTop->Dump(""); + ctxTop->Dump(wxEmptyString); #endif // __WXDEBUG__ } @@ -779,7 +781,7 @@ int main(int argc, char **argv) } } - if ( !ignoreFile.IsEmpty() ) + if ( !ignoreFile.empty() ) docman.GetIgnoreHandler().AddNamesFromFile(ignoreFile); docman.DumpDifferences(ctxTop); @@ -811,7 +813,7 @@ void HelpGenVisitor::Reset() m_funcName = m_textFunc = m_textStoredTypedefs = - m_textStoredFunctionComment = ""; + m_textStoredFunctionComment = wxEmptyString; m_arrayFuncDocs.Empty(); @@ -867,7 +869,7 @@ void HelpGenVisitor::CloseFunction() m_textFunc << "}\n\n"; - if ( !m_textStoredFunctionComment.IsEmpty() ) { + if ( !m_textStoredFunctionComment.empty() ) { m_textFunc << m_textStoredFunctionComment << '\n'; } @@ -900,7 +902,7 @@ void HelpGenVisitor::CloseClass() wxString section(m_arrayFuncDocs[n].text); // Strip leading whitespace - int pos = section.Find("\\membersection"); + int pos = section.Find(_T("\\membersection")); if (pos > -1) { section = section.Mid(pos); @@ -913,7 +915,7 @@ void HelpGenVisitor::CloseClass() } else { - membersections.Put(ms, & membersections); + membersections.Put(ms.c_str(), & membersections); } } @@ -951,7 +953,7 @@ void HelpGenVisitor::EndVisit() void HelpGenVisitor::VisitFile( spFile& file ) { - m_fileHeader = file.mFileName; + m_fileHeader = file.m_FileName; wxLogVerbose("%s: started generating docs for classes from file '%s'...", GetCurrentTimeFormatted("%H:%M:%S"), m_fileHeader.c_str()); } @@ -1103,7 +1105,7 @@ void HelpGenVisitor::VisitClass( spClass& cl ) // derived from section wxString derived = "\\wxheading{Derived from}\n\n"; - const StrListT& baseClasses = cl.mSuperClassNames; + const StrListT& baseClasses = cl.m_SuperClassNames; if ( baseClasses.size() == 0 ) { derived << "No base class"; } @@ -1161,9 +1163,9 @@ void HelpGenVisitor::VisitEnumeration( spEnumeration& en ) wxString enumeration = GetAllComments(en), enumerationVerb; - enumerationVerb << "\\begin{verbatim}\n" - << en.mEnumContent - << "\n\\end{verbatim}\n"; + enumerationVerb << _T("\\begin{verbatim}\n") + << en.m_EnumContent + << _T("\n\\end{verbatim}\n"); // remember for later use if we're not inside a class yet if ( !m_inClass ) { @@ -1192,14 +1194,14 @@ void HelpGenVisitor::VisitTypeDef( spTypeDef& td ) } wxString typedefdoc; - typedefdoc << "{\\small \\begin{verbatim}\n" - << "typedef " << td.mOriginalType << ' ' << td.GetName() - << "\n\\end{verbatim}}\n" + typedefdoc << _T("{\\small \\begin{verbatim}\n") + << _T("typedef ") << td.m_OriginalType << _T(' ') << td.GetName() + << _T("\n\\end{verbatim}}\n") << GetAllComments(td); // remember for later use if we're not inside a class yet if ( !m_inClass ) { - if ( !m_textStoredTypedefs.IsEmpty() ) { + if ( !m_textStoredTypedefs.empty() ) { m_textStoredTypedefs << '\n'; } @@ -1293,13 +1295,19 @@ void HelpGenVisitor::VisitOperation( spOperation& op ) m_classname.c_str(), funcname.c_str(), MakeLabel(m_classname, funcname).c_str()); + wxString constStr; + if(op.mIsConstant) constStr = _T("const"); + + wxString virtualStr; + if(op.mIsVirtual) virtualStr = _T("virtual "); + wxString func; - func.Printf("\n" - "\\%sfunc{%s%s}{%s}{", - op.mIsConstant ? "const" : "", - op.mIsVirtual ? "virtual " : "", - op.mRetType.c_str(), - funcname.c_str()); + func.Printf(_T("\n") + _T("\\%sfunc{%s%s}{%s}{"), + constStr.c_str(), + virtualStr.c_str(), + op.m_RetType.c_str(), + funcname.c_str()); m_textFunc += func; } @@ -1315,9 +1323,9 @@ void HelpGenVisitor::VisitParameter( spParameter& param ) m_textFunc << ", "; } - m_textFunc << "\\param{" << param.mType << " }{" << param.GetName(); - wxString defvalue = param.mInitVal; - if ( !defvalue.IsEmpty() ) { + m_textFunc << "\\param{" << param.m_Type << " }{" << param.GetName(); + wxString defvalue = param.m_InitVal; + if ( !defvalue.empty() ) { m_textFunc << " = " << defvalue; } @@ -1388,7 +1396,7 @@ wxString DocManager::ExtractStringBetweenBraces(const char **pp) if ( !SkipSpaceUntil(pp, '{') ) { wxLogWarning("file %s(%d): '{' expected after '\\param'", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); } else { @@ -1396,7 +1404,7 @@ wxString DocManager::ExtractStringBetweenBraces(const char **pp) if ( !SkipUntil(pp, '}') ) { wxLogWarning("file %s(%d): '}' expected after '\\param'", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); } else { result = wxString(startParam, (*pp)++ - startParam); @@ -1494,7 +1502,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) if ( !SkipSpaceUntil(¤t, '{') ) { wxLogWarning("file %s(%d): '{' expected after \\func, " "\\constfunc or \\membersection.", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1506,7 +1514,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) const char *startClass = current; if ( !SkipUntil(¤t, ':') || *(current + 1) != ':' ) { wxLogWarning("file %s(%d): '::' expected after " - "\\membersection.", m_filename.c_str(), m_line); + "\\membersection.", m_filename.c_str(), (int)m_line); } else { classname = wxString(startClass, current - startClass); @@ -1521,7 +1529,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) if ( !SkipUntil(¤t, '}') ) { wxLogWarning("file %s(%d): '}' expected after return type", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1532,7 +1540,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) current++; if ( !SkipSpaceUntil(¤t, '{') ) { wxLogWarning("file %s(%d): '{' expected after return type", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1541,7 +1549,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) const char *funcEnd = current; if ( !SkipUntil(&funcEnd, '}') ) { wxLogWarning("file %s(%d): '}' expected after function name", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1570,7 +1578,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) size_t len = strlen("\\destruct{"); if ( funcName(0, len) != "\\destruct{" ) { wxLogWarning("file %s(%d): \\destruct expected", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1580,7 +1588,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) if ( !SkipSpaceUntil(¤t, '}') ) { wxLogWarning("file %s(%d): '}' expected after destructor", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1595,7 +1603,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) if ( !SkipSpaceUntil(¤t, '{') || (current++, !SkipSpaceUntil(¤t, '\\')) ) { wxLogWarning("file %s(%d): '\\param' or '\\void' expected", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1613,9 +1621,9 @@ bool DocManager::ParseTeXFile(const wxString& filename) // now come {paramtype}{paramname} wxString paramType = ExtractStringBetweenBraces(¤t); - if ( !!paramType ) { + if ( !paramType.empty() ) { wxString paramText = ExtractStringBetweenBraces(¤t); - if ( !!paramText ) { + if ( !paramText.empty() ) { // the param declaration may contain default value wxString paramName = paramText.BeforeFirst('='), paramValue = paramText.AfterFirst('='); @@ -1652,7 +1660,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) } else { wxLogWarning("file %s(%d): ',' or '}' expected after " - "'\\param'", m_filename.c_str(), m_line); + "'\\param'", m_filename.c_str(), (int)m_line); continue; } @@ -1661,7 +1669,7 @@ bool DocManager::ParseTeXFile(const wxString& filename) // if we got here there was no '\\void', so must have some params if ( paramNames.IsEmpty() ) { wxLogWarning("file %s(%d): '\\param' or '\\void' expected", - m_filename.c_str(), m_line); + m_filename.c_str(), (int)m_line); continue; } @@ -1678,13 +1686,18 @@ bool DocManager::ParseTeXFile(const wxString& filename) paramsAll << paramTypes[param] << ' ' << paramNames[param]; } + wxString constStr; + if (foundCommand == ConstFunc) + constStr = _T(" const"); + wxLogVerbose("file %s(%d): found '%s %s::%s(%s)%s'", - m_filename.c_str(), m_line, + m_filename.c_str(), + (int)m_line, returnType.c_str(), classname.c_str(), funcName.c_str(), paramsAll.c_str(), - foundCommand == ConstFunc ? " const" : ""); + constStr.c_str()); // store the info about the just found function ArrayMethodInfo *methods; @@ -1748,7 +1761,7 @@ bool DocManager::DumpDifferences(spContext *ctxTop) const } spClass *ctxClass = (spClass *)ctx; - const wxString& nameClass = ctxClass->mName; + const wxString& nameClass = ctxClass->m_Name; int index = m_classes.Index(nameClass); if ( index == wxNOT_FOUND ) { if ( !m_ignoreNames.IgnoreClass(nameClass) ) { @@ -1784,7 +1797,7 @@ bool DocManager::DumpDifferences(spContext *ctxTop) const continue; spOperation *ctxMethod = (spOperation *)ctx; - const wxString& nameMethod = ctxMethod->mName; + const wxString& nameMethod = ctxMethod->m_Name; // find all functions with the same name wxArrayInt aMethodsWithSameName; @@ -1822,21 +1835,29 @@ bool DocManager::DumpDifferences(spContext *ctxTop) const const MethodInfo& method = *(methods[index]); bool isVirtual = ctxMethod->mIsVirtual; - if ( isVirtual != method.HasFlag(MethodInfo::Virtual) ) { + if ( isVirtual != method.HasFlag(MethodInfo::Virtual) ) + { + wxString virtualStr; + if(isVirtual)virtualStr = _T("not "); + wxLogWarning("'%s::%s' is incorrectly documented as %s" "virtual.", nameClass.c_str(), nameMethod.c_str(), - isVirtual ? "not " : ""); + virtualStr.c_str()); } bool isConst = ctxMethod->mIsConstant; - if ( isConst != method.HasFlag(MethodInfo::Const) ) { + if ( isConst != method.HasFlag(MethodInfo::Const) ) + { + wxString constStr; + if(isConst)constStr = _T("not "); + wxLogWarning("'%s::%s' is incorrectly documented as %s" "constant.", nameClass.c_str(), nameMethod.c_str(), - isConst ? "not " : ""); + constStr.c_str()); } // check that the params match @@ -1847,7 +1868,7 @@ bool DocManager::DumpDifferences(spContext *ctxTop) const "in the docs: should be %d instead of %d.", nameClass.c_str(), nameMethod.c_str(), - params.size(), method.GetParamCount()); + (int)params.size(), (int)method.GetParamCount()); } else { size_t nParam = 0; @@ -1862,42 +1883,42 @@ bool DocManager::DumpDifferences(spContext *ctxTop) const spParameter *ctxParam = (spParameter *)ctx; const ParamInfo& param = method.GetParam(nParam); if ( m_checkParamNames && - (param.GetName() != ctxParam->mName) ) { + (param.GetName() != ctxParam->m_Name.c_str()) ) { foundDiff = true; wxLogError("Parameter #%d of '%s::%s' should be " "'%s' and not '%s'.", - nParam + 1, + (int)(nParam + 1), nameClass.c_str(), nameMethod.c_str(), - ctxParam->mName.c_str(), + ctxParam->m_Name.c_str(), param.GetName().c_str()); continue; } - if ( param.GetType() != ctxParam->mType ) { + if ( param.GetType() != ctxParam->m_Type ) { foundDiff = true; wxLogError("Type of parameter '%s' of '%s::%s' " "should be '%s' and not '%s'.", - ctxParam->mName.c_str(), + ctxParam->m_Name.c_str(), nameClass.c_str(), nameMethod.c_str(), - ctxParam->mType.c_str(), + ctxParam->m_Type.c_str(), param.GetType().GetName().c_str()); continue; } - if ( param.GetDefValue() != ctxParam->mInitVal ) { + if ( param.GetDefValue() != ctxParam->m_InitVal.c_str() ) { wxLogWarning("Default value of parameter '%s' of " "'%s::%s' should be '%s' and not " "'%s'.", - ctxParam->mName.c_str(), + ctxParam->m_Name.c_str(), nameClass.c_str(), nameMethod.c_str(), - ctxParam->mInitVal.c_str(), + ctxParam->m_InitVal.c_str(), param.GetDefValue().c_str()); } } @@ -2015,7 +2036,7 @@ bool IgnoreNamesHandler::AddNamesFromFile(const wxString& filename) } else { // entire class - m_ignore.Add(new IgnoreListEntry(line, "")); + m_ignore.Add(new IgnoreListEntry(line, wxEmptyString)); } } //else: comment @@ -2157,7 +2178,7 @@ static wxString GetAllComments(const spContext& ctx) // don't take comments like "// ----------" &c comment.Trim(false); - if ( !!comment && + if ( !comment.empty() && comment == wxString(comment[0u], comment.length() - 1) + '\n' ) comments << "\n"; else @@ -2190,6 +2211,33 @@ static const wxString GetVersionString() /* $Log$ + Revision 1.44 2005/05/31 17:47:45 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.43 2005/05/31 15:42:43 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.42 2005/05/31 15:32:49 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.41 2005/05/30 13:06:15 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.40 2005/05/30 11:49:32 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.39 2005/05/30 09:26:42 ABX + More warning and error fixes (work in progress with Tinderbox). + + Revision 1.38 2005/05/24 09:06:20 ABX + More fixes and wxWidgets coding standards. + + Revision 1.37 2005/05/23 15:22:08 ABX + Initial HelpGen source cleaning. + + Revision 1.36 2005/04/07 19:54:58 MW + Workarounds to allow compilation by Sun C++ 5.5 + Revision 1.35 2004/12/12 11:03:31 VZ give an error message if we're built in Unicode mode (in response to bug 1079224)