From: Francesco Montorsi Date: Sun, 9 Nov 2008 15:36:36 +0000 (+0000) Subject: fix VC6 builds by removing variadic macros; use standard wxLogXXX functions instead... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7f8fae980f78332671c163002ae9e3316fedf663 fix VC6 builds by removing variadic macros; use standard wxLogXXX functions instead, together with a new wxLog-derived target to print everything on stdout git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/utils/ifacecheck/src/ifacecheck.cpp b/utils/ifacecheck/src/ifacecheck.cpp index 92192904f2..df069501b2 100644 --- a/utils/ifacecheck/src/ifacecheck.cpp +++ b/utils/ifacecheck/src/ifacecheck.cpp @@ -70,6 +70,19 @@ static const wxCmdLineEntryDesc g_cmdLineDesc[] = wxCMD_LINE_DESC_END }; +class IfaceCheckLog : public wxLog +{ +public: + IfaceCheckLog() {} + + void DoLog(wxLogLevel level, const wxString& msg, time_t stamp) + { + wxPrintf(msg); + wxPrintf("\n"); + Flush(); + } +}; + class IfaceCheckApp : public wxAppConsole { public: @@ -84,7 +97,6 @@ public: bool FixMethod(const wxString& header, const wxMethod* iface, const wxMethod* api); bool StringContainsMethodName(const wxString& str, const wxMethod* m); - void ShowProgress(); void PrintStatistics(long secs); bool IsToProcess(const wxString& headername) const @@ -117,6 +129,10 @@ int IfaceCheckApp::OnRun() wxString::Format("wxWidgets Interface checker utility (built %s against %s)", __DATE__, wxVERSION_STRING)); + // make the output more readable: + wxLog::SetActiveTarget(new IfaceCheckLog); + wxLog::DisableTimestamp(); + // parse the command line... bool ok = true; wxString preprocFile; @@ -145,14 +161,14 @@ int IfaceCheckApp::OnRun() !m_doxyInterface.Parse(parser.GetParam(1))) return 1; - g_bLogEnabled = true; +// g_bLogEnabled = true; if (parser.Found(DUMP_SWITCH)) { - LogMessage("Dumping real API to '%s'...", API_DUMP_FILE); + wxLogMessage("Dumping real API to '%s'...", API_DUMP_FILE); m_gccInterface.Dump(API_DUMP_FILE); - LogMessage("Dumping interface API to '%s'...", INTERFACE_DUMP_FILE); + wxLogMessage("Dumping interface API to '%s'...", INTERFACE_DUMP_FILE); m_doxyInterface.Dump(INTERFACE_DUMP_FILE); } else @@ -192,23 +208,17 @@ int IfaceCheckApp::OnRun() } } -void IfaceCheckApp::ShowProgress() -{ - wxPrint("."); - //fflush(stdout); -} - bool IfaceCheckApp::Compare() { const wxClassArray& interfaces = m_doxyInterface.GetClasses(); const wxClass* c; int mcount = 0, ccount = 0; - LogMessage("Comparing the interface API to the real API (%d classes to compare)...", - interfaces.GetCount()); + wxLogMessage("Comparing the interface API to the real API (%d classes to compare)...", + interfaces.GetCount()); if (!m_strToMatch.IsEmpty()) - LogMessage("Processing only header files matching '%s' expression.", m_strToMatch); + wxLogMessage("Processing only header files matching '%s' expression.", m_strToMatch); for (unsigned int i=0; iGetHeader(), &m, &tmp)) - LogMessage("Adjusted attributes of '%s' method", m.GetAsString()); + wxLogMessage("Adjusted attributes of '%s' method", m.GetAsString()); proceed = false; break; @@ -360,7 +370,7 @@ int IfaceCheckApp::CompareClasses(const wxClass* iface, const wxClass* api) { if (overloads.GetCount()==0) { - LogMessage("%s: real '%s' class and their parents have no method '%s'", + wxLogMessage("%s: real '%s' class and their parents have no method '%s'", header, api->GetName(), m.GetAsString()); // we've found no overloads } @@ -383,7 +393,7 @@ int IfaceCheckApp::CompareClasses(const wxClass* iface, const wxClass* api) for (unsigned int j=0; jGetAsString(true, true, true, true); - wxPrint(warning + "\n"); + wxLogWarning(warning); count++; if (overloads.GetCount()>1) @@ -391,7 +401,7 @@ int IfaceCheckApp::CompareClasses(const wxClass* iface, const wxClass* api) // TODO: decide which of these overloads is the most "similar" to m // and eventually modify it if (m_modify) - wxPrint("\tmanual fix is required\n"); + wxLogWarning("\tmanual fix is required"); } else { @@ -399,7 +409,7 @@ int IfaceCheckApp::CompareClasses(const wxClass* iface, const wxClass* api) if (m_modify || m.IsCtor()) { - wxPrint("\tfixing it...\n"); + wxLogWarning("\tfixing it..."); // try to modify it! FixMethod(iface->GetHeader(), &m, overloads[0]); @@ -427,7 +437,7 @@ bool IfaceCheckApp::FixMethod(const wxString& header, const wxMethod* iface, con wxTextFile file; if (!file.Open(header)) { - LogError("\tcan't open the '%s' header file.", header); + wxLogError("\tcan't open the '%s' header file.", header); return false; } @@ -435,13 +445,13 @@ bool IfaceCheckApp::FixMethod(const wxString& header, const wxMethod* iface, con // i.e. the line containing the semicolon at the end of the declaration. int end = iface->GetLocation()-1; if (end <= 0 || end >= (int)file.GetLineCount()) { - LogWarning("\tinvalid location info for method '%s': %d.", + wxLogWarning("\tinvalid location info for method '%s': %d.", iface->GetAsString(), iface->GetLocation()); return false; } if (!file.GetLine(end).Contains(";")) { - LogWarning("\tinvalid location info for method '%s': %d.", + wxLogWarning("\tinvalid location info for method '%s': %d.", iface->GetAsString(), iface->GetLocation()); return false; } @@ -476,7 +486,7 @@ bool IfaceCheckApp::FixMethod(const wxString& header, const wxMethod* iface, con if (start <= 0 || !founddecl) { - LogError("\tcan't find the beginning of the declaration of '%s' method in '%s' header looking backwards from line %d; I arrived at %d and gave up", + wxLogError("\tcan't find the beginning of the declaration of '%s' method in '%s' header looking backwards from line %d; I arrived at %d and gave up", iface->GetAsString(), header, end+1 /* zero-based => 1-based */, start); return false; } @@ -557,7 +567,7 @@ bool IfaceCheckApp::FixMethod(const wxString& header, const wxMethod* iface, con // now save the modification if (!file.Write()) { - LogError("\tcan't save the '%s' header file.", header); + wxLogError("\tcan't save the '%s' header file.", header); return false; } @@ -567,7 +577,7 @@ bool IfaceCheckApp::FixMethod(const wxString& header, const wxMethod* iface, con return false; if (g_verbose) - LogMessage("\tthe final row offset for following methods is %d lines.", nOffset); + wxLogMessage("\tthe final row offset for following methods is %d lines.", nOffset); // update the other method's locations for those methods which belong to the modified header // and are placed _below_ the modified method @@ -592,7 +602,7 @@ bool IfaceCheckApp::ParsePreprocessorOutput(const wxString& filename) { wxTextFile tf; if (!tf.Open(filename)) { - LogError("can't open the '%s' preprocessor output file.", filename); + wxLogError("can't open the '%s' preprocessor output file.", filename); return false; } @@ -605,7 +615,7 @@ bool IfaceCheckApp::ParsePreprocessorOutput(const wxString& filename) // the format of this line should be: // #define DEFNAME DEFVALUE if (!line.StartsWith("#define ")) { - LogError("unexpected content in '%s' at line %d.", filename, i+1); + wxLogError("unexpected content in '%s' at line %d.", filename, i+1); return false; } @@ -634,7 +644,7 @@ bool IfaceCheckApp::ParsePreprocessorOutput(const wxString& filename) } } - LogMessage("Parsed %d preprocessor #defines from '%s' which will be used later...", + wxLogMessage("Parsed %d preprocessor #defines from '%s' which will be used later...", useful, filename); return true; @@ -645,9 +655,9 @@ void IfaceCheckApp::PrintStatistics(long secs) // these stats, for what regards the gcc XML, are all referred to the wxWidgets // classes only! - LogMessage("wx real headers contains declaration of %d classes (%d methods)", + wxLogMessage("wx real headers contains declaration of %d classes (%d methods)", m_gccInterface.GetClassesCount(), m_gccInterface.GetMethodCount()); - LogMessage("wx interface headers contains declaration of %d classes (%d methods)", + wxLogMessage("wx interface headers contains declaration of %d classes (%d methods)", m_doxyInterface.GetClassesCount(), m_doxyInterface.GetMethodCount()); // build a list of the undocumented wx classes @@ -664,7 +674,7 @@ void IfaceCheckApp::PrintStatistics(long secs) list.RemoveLast(); list.RemoveLast(); - LogMessage("the list of the %d undocumented wx classes is: %s", undoc, list); - LogMessage("total processing took %d seconds.", secs); + wxLogMessage("the list of the %d undocumented wx classes is: %s", undoc, list); + wxLogMessage("total processing took %d seconds.", secs); } diff --git a/utils/ifacecheck/src/xmlparser.cpp b/utils/ifacecheck/src/xmlparser.cpp index a01147afca..eb02ad584f 100644 --- a/utils/ifacecheck/src/xmlparser.cpp +++ b/utils/ifacecheck/src/xmlparser.cpp @@ -1,4 +1,4 @@ - ///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// // Name: xmlparser.cpp // Purpose: Parser of the API/interface XML files // Author: Francesco Montorsi @@ -135,8 +135,8 @@ bool wxType::operator==(const wxType& m) const if (g_verbose) { - LogMessage("Type '%s' does not match type '%s'", m_strType, m.m_strType); - LogMessage(" => TypeClean %s / %s; IsConst %d / %d; IsStatic %d / %d; IsPointer %d / %d; IsReference %d / %d", + wxLogMessage("Type '%s' does not match type '%s'", m_strType, m.m_strType); + wxLogMessage(" => TypeClean %s / %s; IsConst %d / %d; IsStatic %d / %d; IsPointer %d / %d; IsReference %d / %d", m_strTypeClean, m.m_strTypeClean, IsConst(), m.IsConst(), IsStatic(), m.IsStatic(), IsPointer(), m.IsPointer(), IsReference(), m.IsReference()); @@ -226,7 +226,7 @@ bool wxArgumentType::operator==(const wxArgumentType& m) const (m.m_strDefaultValueForCmp.IsNumber() && m_strDefaultValueForCmp.StartsWith("wx"))) { if (g_verbose) - LogMessage("Supposing '%s' default value to be the same of '%s'...", + wxLogMessage("Supposing '%s' default value to be the same of '%s'...", m_strDefaultValueForCmp, m.m_strDefaultValueForCmp); return true; @@ -247,7 +247,7 @@ bool wxArgumentType::operator==(const wxArgumentType& m) const } if (g_verbose) - LogMessage("Argument type '%s = %s' has different default value from '%s = %s'", + wxLogMessage("Argument type '%s = %s' has different default value from '%s = %s'", m_strType, m_strDefaultValueForCmp, m.m_strType, m.m_strDefaultValueForCmp); return false; } @@ -267,7 +267,7 @@ bool wxMethod::IsOk() const // NOTE: m_retType can be a wxEmptyType, and means that this method // is a ctor or a dtor. if (!m_retType.IsOk() && m_retType!=wxEmptyType) { - LogError("'%s' method has invalid return type: %s", m_retType.GetAsString()); + wxLogError("'%s' method has invalid return type: %s", m_retType.GetAsString()); return false; } @@ -276,7 +276,7 @@ bool wxMethod::IsOk() const // a function can't be both const and static or virtual and static! if ((m_bConst && m_bStatic) || ((m_bVirtual || m_bPureVirtual) && m_bStatic)) { - LogError("'%s' method can't be both const/static or virtual/static", m_strName); + wxLogError("'%s' method can't be both const/static or virtual/static", m_strName); return false; } @@ -284,7 +284,7 @@ bool wxMethod::IsOk() const for (unsigned int i=0; iFindClass(m_parents[i]); if (!parent) { - LogError("Could not find parent '%s' of class '%s'...", + wxLogError("Could not find parent '%s' of class '%s'...", m_parents[i], GetName()); return false; } @@ -589,7 +589,7 @@ wxMethodPtrArray wxClass::RecursiveUpwardFindMethodsNamed(const wxString& name, { const wxClass *parent = allclasses->FindClass(m_parents[i]); if (!parent) { - LogError("Could not find parent '%s' of class '%s'...", + wxLogError("Could not find parent '%s' of class '%s'...", m_parents[i], GetName()); return false; } @@ -632,13 +632,23 @@ void wxXmlInterface::Dump(const wxString& filename) sorted[i]->Dump(apiout); } -bool wxXmlInterface::CheckParseResults() const +bool wxXmlInterface::CheckConsistency() const { // this check can be quite slow, so do it only for debug releases: //#ifdef __WXDEBUG__ for (unsigned int i=0; iGetName() != "GCC_XML") { - LogError("invalid root node for %s", filename); + wxLogError("invalid root node for %s", filename); return false; } @@ -807,7 +817,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) if (old) { - LogError("The version of GCC-XML used for the creation of %s is too old; " + wxLogError("The version of GCC-XML used for the creation of %s is too old; " "the cvs_revision attribute of the root node reports '%s', " "minimal required is 1.%d.", filename, version, MIN_REVISION); return false; @@ -833,7 +843,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) // NOTE: nodes can have an id == "f0"... - LogError("Invalid id for node %s: %s", n, child->GetAttribute("id")); + wxLogError("Invalid id for node %s: %s", n, child->GetAttribute("id")); return false; } @@ -841,7 +851,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { wxString cname = child->GetAttribute("name"); if (cname.IsEmpty()) { - LogError("Invalid empty name for '%s' node", n); + wxLogError("Invalid empty name for '%s' node", n); return false; } @@ -870,7 +880,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) if (ids.IsEmpty()) { if (child->GetAttribute("incomplete") != "1") { - LogError("Invalid member IDs for '%s' class node: %s", + wxLogError("Invalid member IDs for '%s' class node: %s", cname, child->GetAttribute("id")); return false; } @@ -881,7 +891,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { // decode the non-empty list of IDs: if (!getMemberIDs(&members, newClass, ids)) { - LogError("Invalid member IDs for '%s' class node: %s", + wxLogError("Invalid member IDs for '%s' class node: %s", cname, child->GetAttribute("id")); return false; } @@ -895,7 +905,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { unsigned long typeId = 0; if (!getID(&typeId, child->GetAttribute("type"))) { - LogError("Invalid type for node %s: %s", n, child->GetAttribute("type")); + wxLogError("Invalid type for node %s: %s", n, child->GetAttribute("type")); return false; } @@ -913,7 +923,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { unsigned long type = 0; if (!getID(&type, child->GetAttribute("type")) || type == 0) { - LogError("Invalid type for node %s: %s", n, child->GetAttribute("type")); + wxLogError("Invalid type for node %s: %s", n, child->GetAttribute("type")); return false; } @@ -959,7 +969,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) else if (n == "File") { if (!child->GetAttribute("id").StartsWith("f")) { - LogError("Unexpected file ID: %s", child->GetAttribute("id")); + wxLogError("Unexpected file ID: %s", child->GetAttribute("id")); return false; } @@ -984,7 +994,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) // they're never used as return/argument types by wxWidgets methods if (g_verbose) - LogWarning("Type node '%s' with ID '%s' does not have name attribute", + wxLogWarning("Type node '%s' with ID '%s' does not have name attribute", n, child->GetAttribute("id")); types[id] = "TOFIX"; @@ -1003,7 +1013,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) while (toResolveTypes.size()>0) { if (g_verbose) - LogMessage("%d types were collected; %d types need yet to be resolved...", + wxLogMessage("%d types were collected; %d types need yet to be resolved...", types.size(), toResolveTypes.size()); for (wxToResolveTypeHashMap::iterator i = toResolveTypes.begin(); @@ -1057,7 +1067,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) } else { - LogError("Cannot solve '%d' reference type!", referenced); + wxLogError("Cannot solve '%d' reference type!", referenced); return false; } } @@ -1069,7 +1079,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { unsigned long fileID = 0; if (!getID(&fileID, m_classes[i].GetHeader()) || fileID == 0) { - LogError("invalid header id: %s", m_classes[i].GetHeader()); + wxLogError("invalid header id: %s", m_classes[i].GetHeader()); return false; } @@ -1078,7 +1088,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) if (idx == files.end()) { // this is an error! - LogError("couldn't find file ID '%s'", m_classes[i].GetHeader()); + wxLogError("couldn't find file ID '%s'", m_classes[i].GetHeader()); } else m_classes[i].SetHeader(idx->second); @@ -1092,7 +1102,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) unsigned long id; if (!getID(&id, m_classes[i].GetParent(k))) { - LogError("invalid parent class ID for '%s'", m_classes[i].GetName()); + wxLogError("invalid parent class ID for '%s'", m_classes[i].GetName()); return false; } @@ -1100,7 +1110,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) if (idx == types.end()) { // this is an error! - LogError("couldn't find parent class ID '%d'", id); + wxLogError("couldn't find parent class ID '%d'", id); } else // replace k-th parent with its true name: @@ -1120,7 +1130,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) { unsigned long id = 0; if (!getID(&id, child->GetAttribute("id"))) { - LogError("invalid ID for node '%s' with ID '%s'", n, child->GetAttribute("id")); + wxLogError("invalid ID for node '%s' with ID '%s'", n, child->GetAttribute("id")); return false; } @@ -1132,7 +1142,7 @@ bool wxXmlGccInterface::Parse(const wxString& filename) // this node is a method of the i-th class! wxMethod newfunc; if (!ParseMethod(child, types, newfunc)) { - LogError("The method '%s' could not be added to class '%s'", + wxLogError("The method '%s' could not be added to class '%s'", child->GetAttribute("demangled"), p->GetName()); return false; } @@ -1140,12 +1150,12 @@ bool wxXmlGccInterface::Parse(const wxString& filename) // do some additional check that we can do only here: if (newfunc.IsCtor() && !p->IsValidCtorForThisClass(newfunc)) { - LogError("The method '%s' does not seem to be a ctor for '%s'", + wxLogError("The method '%s' does not seem to be a ctor for '%s'", newfunc.GetName(), p->GetName()); return false; } if (newfunc.IsDtor() && !p->IsValidDtorForThisClass(newfunc)) { - LogError("The method '%s' does not seem to be a dtor for '%s'", + wxLogError("The method '%s' does not seem to be a dtor for '%s'", newfunc.GetName(), p->GetName()); return false; } @@ -1160,8 +1170,8 @@ bool wxXmlGccInterface::Parse(const wxString& filename) if ((++nodes%PROGRESS_RATE)==0) ShowProgress(); } - if (!CheckParseResults()) - return false; + if (!CheckConsistency()) + return false; // the check failed return true; } @@ -1183,7 +1193,7 @@ bool wxXmlGccInterface::ParseMethod(const wxXmlNode *p, if (!getID(&retid, p->GetAttribute("returns")) || retid == 0) { if (p->GetName() != "Destructor" && p->GetName() != "Constructor") { - LogError("Empty return ID for method '%s', with ID '%s'", + wxLogError("Empty return ID for method '%s', with ID '%s'", name, p->GetAttribute("id")); return false; } @@ -1192,13 +1202,13 @@ bool wxXmlGccInterface::ParseMethod(const wxXmlNode *p, { wxTypeIdHashMap::const_iterator retidx = types.find(retid); if (retidx == types.end()) { - LogError("Could not find return type ID '%s'", retid); + wxLogError("Could not find return type ID '%s'", retid); return false; } ret = wxType(retidx->second); if (!ret.IsOk()) { - LogError("Invalid return type '%s' for method '%s', with ID '%s'", + wxLogError("Invalid return type '%s' for method '%s', with ID '%s'", retidx->second, name, p->GetAttribute("id")); return false; } @@ -1213,14 +1223,14 @@ bool wxXmlGccInterface::ParseMethod(const wxXmlNode *p, { unsigned long id = 0; if (!getID(&id, arg->GetAttribute("type")) || id == 0) { - LogError("Invalid argument type ID '%s' for method '%s' with ID %s", + wxLogError("Invalid argument type ID '%s' for method '%s' with ID %s", arg->GetAttribute("type"), name, p->GetAttribute("id")); return false; } wxTypeIdHashMap::const_iterator idx = types.find(id); if (idx == types.end()) { - LogError("Could not find argument type ID '%s'", id); + wxLogError("Could not find argument type ID '%s'", id); return false; } @@ -1256,7 +1266,7 @@ bool wxXmlGccInterface::ParseMethod(const wxXmlNode *p, m.SetAccessSpecifier(wxMAS_PRIVATE); if (!m.IsOk()) { - LogError("The prototype '%s' is not valid!", m.GetAsString()); + wxLogError("The prototype '%s' is not valid!", m.GetAsString()); return false; } @@ -1294,7 +1304,7 @@ static wxString GetTextFromChildren(const wxXmlNode *n) else if (ref->GetType() == wxXML_TEXT_NODE) text += ref->GetContent(); else - LogWarning("Unexpected node type while getting text from '%s' node", n->GetName()); + wxLogWarning("Unexpected node type while getting text from '%s' node", n->GetName()); ref = ref->GetNext(); } @@ -1368,7 +1378,7 @@ int GetAvailabilityFor(const wxXmlNode *node) for (unsigned int i=0; i < ports.GetCount(); i++) { if (!ports[i].StartsWith("wx")) { - LogError("unexpected port ID '%s'", ports[i]); + wxLogError("unexpected port ID '%s'", ports[i]); return false; } @@ -1388,16 +1398,16 @@ bool wxXmlDoxygenInterface::Parse(const wxString& filename) wxXmlDocument index; wxXmlNode *compound; - LogMessage("Parsing %s...", filename); + wxLogMessage("Parsing %s...", filename); if (!index.Load(filename)) { - LogError("can't load %s", filename); + wxLogError("can't load %s", filename); return false; } // start processing the index: if (index.GetRoot()->GetName() != "doxygenindex") { - LogError("invalid root node for %s", filename); + wxLogError("invalid root node for %s", filename); return false; } @@ -1428,8 +1438,8 @@ bool wxXmlDoxygenInterface::Parse(const wxString& filename) } //wxPrint("\n"); - if (!CheckParseResults()) - return false; + if (!CheckConsistency()) + return false; // the check failed return true; } @@ -1442,16 +1452,16 @@ bool wxXmlDoxygenInterface::ParseCompoundDefinition(const wxString& filename) int nodes = 0; if (g_verbose) - LogMessage("Parsing %s...", filename); + wxLogMessage("Parsing %s...", filename); if (!doc.Load(filename)) { - LogError("can't load %s", filename); + wxLogError("can't load %s", filename); return false; } // start processing this compound definition XML if (doc.GetRoot()->GetName() != "doxygen") { - LogError("invalid root node for %s", filename); + wxLogError("invalid root node for %s", filename); return false; } @@ -1485,7 +1495,7 @@ bool wxXmlDoxygenInterface::ParseCompoundDefinition(const wxString& filename) wxMethod m; if (!ParseMethod(membernode, m, header)) { - LogError("The method '%s' could not be added to class '%s'", + wxLogError("The method '%s' could not be added to class '%s'", m.GetName(), klass.GetName()); return false; } @@ -1501,7 +1511,7 @@ bool wxXmlDoxygenInterface::ParseCompoundDefinition(const wxString& filename) absoluteFile = header; else if (header != absoluteFile) { - LogError("The method '%s' is documented in a different " + wxLogError("The method '%s' is documented in a different " "file from others (which belong to '%s') ?", header, absoluteFile); return false; @@ -1547,8 +1557,8 @@ bool wxXmlDoxygenInterface::ParseCompoundDefinition(const wxString& filename) if (klass.IsOk()) m_classes.Add(klass); else if (g_verbose) - LogWarning("discarding class '%s' with %d methods...", - klass.GetName(), klass.GetMethodCount()); + wxLogWarning("discarding class '%s' with %d methods...", + klass.GetName(), klass.GetMethodCount()); } child = child->GetNext(); @@ -1593,7 +1603,7 @@ bool wxXmlDoxygenInterface::ParseMethod(const wxXmlNode* p, wxMethod& m, wxStrin } if (typestr.IsEmpty()) { - LogError("cannot find type node for a param in method '%s'", m.GetName()); + wxLogError("cannot find type node for a param in method '%s'", m.GetName()); return false; } @@ -1641,7 +1651,7 @@ bool wxXmlDoxygenInterface::ParseMethod(const wxXmlNode* p, wxMethod& m, wxStrin m.SetPureVirtual(p->GetAttribute("virt")=="pure-virtual"); if (!m.IsOk()) { - LogError("The prototype '%s' is not valid!", m.GetAsString()); + wxLogError("The prototype '%s' is not valid!", m.GetAsString()); return false; } diff --git a/utils/ifacecheck/src/xmlparser.h b/utils/ifacecheck/src/xmlparser.h index 34c44fff8b..f491bf0b08 100644 --- a/utils/ifacecheck/src/xmlparser.h +++ b/utils/ifacecheck/src/xmlparser.h @@ -16,6 +16,7 @@ #include #include #include +#include /* @@ -30,24 +31,8 @@ // ...fix description... */ - - -// helper macros -#define LogMessage(fmt, ...) { if (g_bLogEnabled) { wxPrintf(fmt "\n", __VA_ARGS__); fflush(stdout); }} -#define LogWarning(fmt, ...) { if (g_bLogEnabled) { wxPrintf(fmt "\n", __VA_ARGS__); fflush(stdout); }} -#define LogError(fmt, ...) { if (g_bLogEnabled) { wxPrintf("ERROR: " fmt "\n", __VA_ARGS__); fflush(stdout); }} -#define wxPrint(str) { wxPrintf(str); fflush(stdout); } - -// enable/disable logging -extern bool g_bLogEnabled; - -class LogNull -{ -public: - LogNull() { g_bLogEnabled = false; } - ~LogNull() { g_bLogEnabled = true; } -}; - +// NOTE: all messages in this way are printed on the stderr +//#define wxLogWarning wxLogMessage // ---------------------------------------------------------------------------- @@ -445,9 +430,10 @@ public: wxClassPtrArray FindClassesDefinedIn(const wxString& headerfile) const; void ShowProgress() - { /*wxPrint(".");*/ } + { /*wxFprintf(stderr, ".");*/ } - bool CheckParseResults() const; + // is this interface coherent? + bool CheckConsistency() const; protected: wxClassArray m_classes;