void Compare( const String& repositoryRoot1, const String& repositoryRoot2) { // // Create repositories: // CIMRepository r1(repositoryRoot1); CIMRepository r2(repositoryRoot2); // // Compare the namespaces. // Array<CIMNamespaceName> nameSpaces1 = r1.enumerateNameSpaces(); Array<CIMNamespaceName> nameSpaces2 = r2.enumerateNameSpaces(); BubbleSort(nameSpaces1); BubbleSort(nameSpaces2); PEGASUS_TEST_ASSERT(nameSpaces1 == nameSpaces2); // // Compare classes in each namespace: // for (Uint32 i = 0; i < nameSpaces1.size(); i++) { CompareQualifiers(r1, r2, nameSpaces1[i]); CompareClasses(r1, r2, nameSpaces1[i]); CompareInstances(r1, r2, nameSpaces1[i]); } }
bool FContentComparisonHelper::CompareClasses(const FString& InBaseClassName, int32 InRecursionDepth) { TArray<FString> EmptyIgnoreList; return CompareClasses(InBaseClassName, EmptyIgnoreList, InRecursionDepth); }
bool IfaceCheckApp::Compare() { const wxClassArray& interfaces = m_doxyInterface.GetClasses(); const wxClass* c; int mcount = 0, ccount = 0; wxLogMessage("Comparing the interface API to the real API (%d classes to compare)...", interfaces.GetCount()); if (!m_strToMatch.IsEmpty()) { wxLogMessage("Processing only header files matching '%s' expression.", m_strToMatch); } #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for (unsigned int i=0; i<interfaces.GetCount(); i++) { // only compare the methods which are available for the port // for which the gcc XML was produced if (interfaces[i].GetAvailability() != wxPORT_UNKNOWN && (interfaces[i].GetAvailability() & m_gccInterface.GetInterfacePort()) == 0) { if (g_verbose) { wxLogMessage("skipping class '%s' since it's not available for the %s port.", interfaces[i].GetName(), m_gccInterface.GetInterfacePortName()); } continue; // skip this method } // shorten the name of the header so the log file is more readable // and also for calling IsToProcess() against it wxString header = wxFileName(interfaces[i].GetHeader()).GetFullName(); if (!IsToProcess(header)) continue; // skip this one wxString cname = interfaces[i].GetName(); // search in the real headers for i-th interface class; we search for // both class cname and cnameBase since in wxWidgets world tipically // class cname is platform-specific while the real public interface of // that class is part of the cnameBase class. /*c = m_gccInterface.FindClass(cname + "Base"); if (c) api.Add(c);*/ c = m_gccInterface.FindClass(cname); if (!c) { // sometimes the platform-specific class is named "wxGeneric" + cname // or similar: c = m_gccInterface.FindClass("wxGeneric" + cname.Mid(2)); if (!c) { c = m_gccInterface.FindClass("wxGtk" + cname.Mid(2)); } } if (c) { // there is a class with the same (logic) name! mcount += CompareClasses(&interfaces[i], c); } else { wxLogMessage("%s: couldn't find the real interface for the '%s' class", header, cname); ccount++; } } wxLogMessage("%d on a total of %d methods (%.1f%%) of the interface headers do not exist in the real headers", mcount, m_doxyInterface.GetMethodCount(), (float)(100.0 * mcount/m_doxyInterface.GetMethodCount())); wxLogMessage("%d on a total of %d classes (%.1f%%) of the interface headers do not exist in the real headers", ccount, m_doxyInterface.GetClassesCount(), (float)(100.0 * ccount/m_doxyInterface.GetClassesCount())); return true; }