// Note: we adjust the aesthetic form of the m_strDefaultValue string for the "modify mode"
// of ifacecheck: we may need to write it out in an interface header
- wxString *p wxDUMMY_INITIALIZE(NULL);
+ wxString *p = NULL;
for (int i=0; i<2; i++) // to avoid copying&pasting the code!
{
if (i == 0) p = &m_strDefaultValue;
(m.m_strDefaultValueForCmp.IsNumber() && m_strDefaultValueForCmp.StartsWith("wx")))
{
if (g_verbose)
+ {
wxLogMessage("Supposing '%s' default value to be the same of '%s'...",
m_strDefaultValueForCmp, m.m_strDefaultValueForCmp);
+ }
return true;
}
}
if (g_verbose)
+ {
wxLogMessage("Argument type '%s = %s' has different default value from '%s = %s'",
m_strType, m_strDefaultValueForCmp, m.m_strType, m.m_strDefaultValueForCmp);
+ }
return false;
}
GetName() != m.GetName())
{
if (g_verbose)
+ {
wxLogMessage("The method '%s' does not match method '%s'; different names/rettype", GetName(), m.GetName());
+ }
return false;
}
if (m_args.GetCount()!=m.m_args.GetCount()) {
if (g_verbose)
+ {
wxLogMessage("Method '%s' has %d arguments while '%s' has %d arguments",
m_strName, m_args.GetCount(), m_strName, m.m_args.GetCount());
+ }
return false;
}
GetAccessSpecifier() != m.GetAccessSpecifier())
{
if (g_verbose)
+ {
wxLogMessage("The method '%s' does not match method '%s'; different attributes", GetName(), m.GetName());
+ }
return false;
}
}
// utility specialized to parse efficiently the gccXML list of IDs which occur
-// in nodes like <Class> ones... i.e. numeric values separed by " _" token
+// in nodes like <Class> ones... i.e. numeric values separated by " _" token
bool getMemberIDs(wxClassMemberIdHashMap* map, wxClass* p, const wxString& str)
{
const wxStringCharType * const start = str.wx_str();
// they're never used as return/argument types by wxWidgets methods
if (g_verbose)
+ {
wxLogWarning("Type node '%s' with ID '%s' does not have name attribute",
n, child->GetAttribute("id"));
+ }
types[id] = "TOFIX";
}
while (toResolveTypes.size()>0)
{
if (g_verbose)
+ {
wxLogMessage("%d types were collected; %d types need yet to be resolved...",
types.size(), toResolveTypes.size());
+ }
for (wxToResolveTypeHashMap::iterator i = toResolveTypes.begin();
i != toResolveTypes.end();)
// NOTE: gccxml is smart enough to mark as virtual those functions
// which are declared virtual in base classes but don't have
- // the "virtual" keyword explicitely indicated in the derived
+ // the "virtual" keyword explicitly indicated in the derived
// classes... so we don't need any further logic for virtuals
m.SetVirtual(p->GetAttribute("virtual") == "1");
int nodes = 0;
if (g_verbose)
+ {
wxLogMessage("Parsing %s...", filename);
+ }
if (!doc.Load(filename)) {
wxLogError("can't load %s", filename);
membernode->GetAttribute("kind") == "function" &&
(accessSpec == "public" || accessSpec == "protected"))
{
-
wxMethod m;
if (!ParseMethod(membernode, m, header)) {
wxLogError("The method '%s' could not be added to class '%s'",
- m.GetName(), klass.GetName());
+ m.GetName(), klass.GetName());
return false;
}
absoluteFile = header;
else if (header != absoluteFile)
{
- wxLogError("The method '%s' is documented in a different "
- "file from others (which belong to '%s') ?",
- header, absoluteFile);
+ wxLogError("Found inconsistency in the XML file '%s': "
+ "the method '%s' is documented in the "
+ "file '%s' but the other methods of the same "
+ "class are documented in the file '%s'",
+ filename, m.GetName(), header, absoluteFile);
return false;
}
// add a new class
if (klass.IsOk())
+ {
m_classes.Add(klass);
+ }
else if (g_verbose)
+ {
wxLogWarning("discarding class '%s' with %d methods...",
klass.GetName(), klass.GetMethodCount());
+ }
}
child = child->GetNext();
// NOTE: Doxygen is smart enough to mark as virtual those functions
// which are declared virtual in base classes but don't have
- // the "virtual" keyword explicitely indicated in the derived
+ // the "virtual" keyword explicitly indicated in the derived
// classes... so we don't need any further logic for virtuals
m.SetVirtual(p->GetAttribute("virt")=="virtual");