diff --git a/src/tools/ICheck/ICheck.pri b/src/tools/ICheck/ICheck.pri deleted file mode 100644 index 22772cc4b1c22bf799a519c5ed59399864fe2430..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheck.pri +++ /dev/null @@ -1,5 +0,0 @@ -# ---------------------------------------------------- -# This file is generated by the Qt Visual Studio Add-in. -# ------------------------------------------------------ - -SOURCES += ./main.cpp diff --git a/src/tools/ICheck/ICheck.pro b/src/tools/ICheck/ICheck.pro deleted file mode 100644 index 75a1f24c02ec342fb5cfd8c726f936f30a30f2cb..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheck.pro +++ /dev/null @@ -1,6 +0,0 @@ -TEMPLATE = subdirs -CONFIG += ordered - -SUBDIRS = \ - ICheckLib \ - ICheckApp diff --git a/src/tools/ICheck/ICheckApp/ICheckApp.pro b/src/tools/ICheck/ICheckApp/ICheckApp.pro deleted file mode 100644 index c841d43072f399e2013301d3e8665c56191b0742..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckApp/ICheckApp.pro +++ /dev/null @@ -1,23 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2010-01-18T15:27:35 -# -#------------------------------------------------- - -QT -= gui - -TARGET = ICheckApp -CONFIG += console -CONFIG -= app_bundle - -TEMPLATE = app - -INCLUDEPATH += ../ICheckLib -CONFIG(debug, debug|release){ - LIBS += -L../ICheckLib/debug -lICheckLibd -} -else { - LIBS += -L../ICheckLib/release -lICheckLib -} - -SOURCES += main.cpp diff --git a/src/tools/ICheck/ICheckApp/main.cpp b/src/tools/ICheck/ICheckApp/main.cpp deleted file mode 100644 index 94e9a999b5215f8c68678ff064d8422f6696b36e..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckApp/main.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "ichecklib.h" -#include <QtCore/QCoreApplication> -#include <QString> -#include <QStringList> -#include <iostream> -#include <QDebug> -#include <QDir> -#include <QFile> -#include <QFileInfo> -#include <QProcess> - -using namespace std; - -QStringList getQTIncludePath() -{ - QStringList ret; - QStringList processevironment = QProcess::systemEnvironment(); - foreach(QString item, processevironment){ - if(item.indexOf("QTDIR=") == 0){ - QString qtpath = item.remove("QTDIR="); - ret << qtpath + "\\include\\QtCore"; - break; - } - } - return ret; -} - -int main(int argc, char *argv[]) -{ - int ret = 0; - if(argc == 3){ - try{ - //Extract the file name and path from the arguments - QString interfaceHeaderFile = argv[1]; - QString checkHeaderFile = argv[2]; - QString curpath = QDir::currentPath(); - //Create FileInfos for the header files - QFile ifile(interfaceHeaderFile); - if (!ifile.exists()){ - QString err = "File does not exist: " + interfaceHeaderFile; - throw err; - } - QFile chfile(checkHeaderFile); - if (!chfile.exists()){ - QString err = "File does not exist: " + checkHeaderFile; - throw err; - } - QFileInfo iFileInfo(ifile); - QFileInfo chFileInfo(chfile); - - //Now create a list of the include path - QString chIncludepath = chFileInfo.absolutePath(); - QStringList chIncludepathlist; - chIncludepathlist << chIncludepath; - chIncludepathlist << getQTIncludePath(); - - QString iIncludepath = iFileInfo.absolutePath(); - QStringList iIncludepathlist; - iIncludepathlist << iIncludepath; - - //Create a list of all the soucre files they need to be parsed. - //In our case it is just the header file - QStringList chFilelist; - chFilelist << chFileInfo.filePath(); - - QStringList iFilelist; - iFilelist << iFileInfo.filePath(); - - ICheckLib i_ichecklib; - i_ichecklib.ParseHeader(iIncludepathlist, iFilelist); - - ICheckLib ichecklib; - ichecklib.ParseHeader(chIncludepathlist, chFilelist); - - if(!ichecklib.check(i_ichecklib)){ - cout << "Folowing interface items are missing:" << endl; - QStringList errorlist = ichecklib.getErrorMsg(); - foreach(QString msg, errorlist){ - cout << (const char *)msg.toLatin1() << endl; - } - ret = -1; - } - else - cout << "Interface is full defined."; - -/* - //Parse the interface header - CPlusPlus::ParseManager* iParseManager = new CPlusPlus::ParseManager(); - iParseManager->setIncludePath(iIncludepathlist); - iParseManager->parse(iFilelist); - - //Parse the header that needs to be compared against the interface header - CPlusPlus::ParseManager* chParseManager = new CPlusPlus::ParseManager(); - chIncludepathlist << getQTIncludePath(); - chParseManager->setIncludePath(chIncludepathlist); - chParseManager->parse(chFilelist); - - if(!chParseManager->checkAllMetadatas(iParseManager)){ - cout << "Folowing interface items are missing:" << endl; - QStringList errorlist = chParseManager->getErrorMsg(); - foreach(QString msg, errorlist){ - cout << (const char *)msg.toLatin1() << endl; - } - ret = -1; - } - else - cout << "Interface is full defined."; - - delete iParseManager; - delete chParseManager; - */ - } - catch (QString msg) - { - cout << endl << "Error:" << endl; - cout << (const char *)msg.toLatin1(); - ret = -2; - } - } - else{ - cout << "CompareHeaderWithHeader.exe"; - cout << " \"Interface header\""; - cout << " \"headerfile to check\""; - } - - qDebug() << endl << endl << "return value: " << ret; - getchar(); - return ret; -} diff --git a/src/tools/ICheck/ICheckLib/ICheckLib.pri b/src/tools/ICheck/ICheckLib/ICheckLib.pri deleted file mode 100644 index 9eebf58160fb8edc82d03ff7c2777f7727959a1e..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ICheckLib.pri +++ /dev/null @@ -1,110 +0,0 @@ -# ---------------------------------------------------- -# This file is generated by the Qt Visual Studio Add-in. -# ------------------------------------------------------ -HEADERS += $$REL_PATH_TO_SRC/shared/cplusplus/Array.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/AST.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTMatcher.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTVisitor.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckDeclaration.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckDeclarator.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckExpression.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckName.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckSpecifier.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckStatement.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Control.h \ - $$REL_PATH_TO_SRC/plugins/coreplugin/core_global.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CoreTypes.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/CPlusPlusForwardDeclarations.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/CppBindings.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/CppDocument.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/DiagnosticClient.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/FastPreprocessor.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/FullySpecifiedType.h \ - ./ichecklib.h \ - ./ICheckLib_global.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Lexer.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Literals.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/LiteralTable.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/Macro.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/MemoryPool.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Name.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/NamePrettyPrinter.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Names.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/NameVisitor.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/ObjectiveCTypeQualifiers.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/Overview.h \ - ./ParseManager.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Parser.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-cctype.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-engine.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-macro-expander.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-scanner.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/PreprocessorClient.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/PreprocessorEnvironment.h \ - $$REL_PATH_TO_SRC/libs/utils/qtcassert.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Scope.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Semantic.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/SemanticCheck.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Symbol.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Symbols.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/SymbolVisitor.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Token.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/TranslationUnit.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/Type.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/TypeMatcher.h \ - $$REL_PATH_TO_SRC/libs/cplusplus/TypePrettyPrinter.h \ - $$REL_PATH_TO_SRC/shared/cplusplus/TypeVisitor.h -SOURCES += $$REL_PATH_TO_SRC/shared/cplusplus/Array.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/AST.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTMatch0.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTMatcher.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTVisit.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ASTVisitor.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckDeclaration.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckDeclarator.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckExpression.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckName.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckSpecifier.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CheckStatement.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Control.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/CoreTypes.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/CppBindings.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/CppDocument.cpp \ - $$REL_PATH_TO_SRC/plugins/cpptools/cppmodelmanager.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/DiagnosticClient.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/FastPreprocessor.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/FullySpecifiedType.cpp \ - ./ichecklib.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Keywords.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Lexer.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Literals.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/LiteralTable.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/Macro.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/MemoryPool.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Name.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/NamePrettyPrinter.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Names.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/NameVisitor.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ObjectiveCAtKeywords.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/ObjectiveCTypeQualifiers.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/Overview.cpp \ - ./ParseManager.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Parser.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-engine.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-macro-expander.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/pp-scanner.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/PreprocessorClient.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/PreprocessorEnvironment.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Scope.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Semantic.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/SemanticCheck.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Symbol.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Symbols.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/SymbolVisitor.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Token.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/TranslationUnit.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/Type.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/TypeMatcher.cpp \ - $$REL_PATH_TO_SRC/libs/cplusplus/TypePrettyPrinter.cpp \ - $$REL_PATH_TO_SRC/shared/cplusplus/TypeVisitor.cpp diff --git a/src/tools/ICheck/ICheckLib/ICheckLib.pro b/src/tools/ICheck/ICheckLib/ICheckLib.pro deleted file mode 100644 index 36f8c33b283507dd89000621a756404c68b4a76d..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ICheckLib.pro +++ /dev/null @@ -1,35 +0,0 @@ -REL_PATH_TO_SRC = ../../../ - -TEMPLATE = lib - -CONFIG(debug, debug|release){ - TARGET = ICheckLibd - DESTDIR = ./debug - DLLDESTDIR = ../ICheckApp/debug - MOC_DIR += ./debug/GeneratedFiles - OBJECTS_DIR += ./debug - INCLUDEPATH += ./ \ - ./debug/GeneratedFiles \ - $$REL_PATH_TO_SRC/plugins \ - $$REL_PATH_TO_SRC/libs \ - $$REL_PATH_TO_SRC/shared/cplusplus \ - $$REL_PATH_TO_SRC/libs/cplusplus \ - $(QTDIR) -} -else { - TARGET = ICheckLib - DESTDIR = ./release - DLLDESTDIR = ../ICheckApp/release - MOC_DIR += ./release/GeneratedFiles - OBJECTS_DIR += ./release - INCLUDEPATH += ./ \ - ./release/GeneratedFiles \ - $$REL_PATH_TO_SRC/plugins \ - $$REL_PATH_TO_SRC/libs \ - $$REL_PATH_TO_SRC/shared/cplusplus \ - $$REL_PATH_TO_SRC/libs/cplusplus \ - $(QTDIR) -} - -DEFINES += ICHECKLIB_LIBRARY ICHECK_BUILD -include(ICheckLib.pri) diff --git a/src/tools/ICheck/ICheckLib/ParseManager.cpp b/src/tools/ICheck/ICheckLib/ParseManager.cpp deleted file mode 100644 index c4330a628c7d17155255b8227c475cd1779bb074..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ParseManager.cpp +++ /dev/null @@ -1,1362 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "ParseManager.h" -#include "cplusplus/CppDocument.h" -#include "Control.h" -#include "TranslationUnit.h" -#include "AST.h" -#include "Symbols.h" -#include <QDebug> -#include "Name.h" -#include "cpptools/cppmodelmanager.h" - -using namespace CppTools; -using namespace CppTools::Internal; - - -using namespace CPlusPlus; - -//<------------------------------------------------------- Compare function for the internal structures -/********************************** -Compares function with function -with return type, function name -and their arguments and arguments -types. -**********************************/ -bool ParseManager::FUNCTIONITEM::isEqualTo(ParseManager::FUNCTIONITEM *cpfct, bool ignoreName/* = true*/) -{ - if(ignoreName) - return function->isEqualTo(cpfct->function, true); - return function->isEqualTo(cpfct->function); -} - -/***************************************************************** -Compares two property regarding -of their function definition, -type definition, function arguments -and function types. - -Q_PROPERTY( ConnectionState state READ state NOTIFY stateChanged); -******************************************************************/ -bool ParseManager::PROPERTYITEM::isEqualTo(ParseManager::PROPERTYITEM *cpppt) -{ - QString thistype = this->trlUnit->spell(this->ast->type_token); - QString cppttype = cpppt->trlUnit->spell(cpppt->ast->type_token); - - if(thistype != cppttype) - return false; - - QString thistypename = this->trlUnit->spell(this->ast->type_name_token); - QString cppttypename = cpppt->trlUnit->spell(cpppt->ast->type_name_token); - if(thistypename != cppttypename) - return false; - - if(this->readdefined != cpppt->readdefined) - return false; - if(this->writedefined != cpppt->writedefined) - return false; - if(this->resetdefined != cpppt->resetdefined) - return false; - if(this->notifydefined != cpppt->notifydefined) - return false; - //check for read function - if(this->readdefined){ - if(!this->readFct || !cpppt->readFct) - return false; - if(!this->readFct->isEqualTo(cpppt->readFct)) - return false; - } - //check for write function - if(this->writedefined){ - if(!this->writeFct || !cpppt->writeFct) - return false; - if(!this->writeFct->isEqualTo(cpppt->writeFct)) - return false; - } - //check for reset function - if(this->resetdefined){ - if(!this->resetFct || !cpppt->resetFct) - return false; - if(!this->resetFct->isEqualTo(cpppt->resetFct)) - return false; - } - //check for notify function - if(this->notifydefined){ - if(!this->notifyFct || !cpppt->notifyFct) - return false; - if(!this->notifyFct->isEqualTo(cpppt->notifyFct)) - return false; - } - return true; -} - -/***************************************************************** -Compares two enums regarding -of their values created by the getEnumValueStringList function. -*****************************************************************/ -bool ParseManager::QENUMITEM::isEqualTo(QENUMITEM *cpenum) -{ - if(this->values.count() != cpenum->values.count()) - return false; - foreach(QString str, this->values){ - if(!cpenum->values.contains(str)) - return false; - } - return true; -} - -/***************************************************************** -Compares two flags regarding -of their enum definitions and their -values created by the getEnumValueStringList function. -*****************************************************************/ -bool ParseManager::QFLAGITEM::isEqualTo(QFLAGITEM *cpflag) -{ - if(this->enumvalues.count() != cpflag->enumvalues.count()) - return false; - foreach(QString str, this->enumvalues){ - if(!cpflag->enumvalues.contains(str)) - return false; - } - return true; -} - - - -ParseManager::ParseManager() -: pCppPreprocessor(0) -{ - -} - -ParseManager::~ParseManager() -{ - if(pCppPreprocessor) - delete pCppPreprocessor; -} - -/************************************** -Function for setting the include -Paths -**************************************/ -void ParseManager::setIncludePath(const QStringList &includePath) -{ - m_includePaths = includePath; -} - -/************************************** -public Function that starts the parsing -all of the files in the sourceFiles -string list. -**************************************/ -void ParseManager::parse(const QStringList &sourceFiles) -{ - m_errormsgs.clear(); - if(pCppPreprocessor){ - delete pCppPreprocessor; - pCppPreprocessor = 0; - } - - if (! sourceFiles.isEmpty()) { - m_strHeaderFile = sourceFiles[0]; - pCppPreprocessor = new CppTools::Internal::CppPreprocessor(QPointer<CPlusPlus::ParseManager>(this)); - pCppPreprocessor->setIncludePaths(m_includePaths); - pCppPreprocessor->setFrameworkPaths(m_frameworkPaths); - parse(pCppPreprocessor, sourceFiles); - } -} - -/********************************************* -private function that prepare the filelist -to parse and starts the parser. -*********************************************/ -void ParseManager::parse(CppTools::Internal::CppPreprocessor *preproc, - const QStringList &files) -{ - if (files.isEmpty()) - return; - - //check if file is C++ header file - QStringList headers; - foreach (const QString &file, files) { - const QFileInfo fileInfo(file); - QString ext = fileInfo.suffix(); - if (ext.toLower() == "h") - headers.append(file); - } - - foreach (const QString &file, files) { - preproc->snapshot.remove(file); - } - preproc->setTodo(headers); - QString conf = QLatin1String("<configuration>"); - - preproc->run(conf); - for (int i = 0; i < headers.size(); ++i) { - QString fileName = headers.at(i); - preproc->run(fileName); - } -} - -//This function creates a class list for each class and its base classes in -//the header file that needs to be checked. -//e.g. -// Cl1 Cl2 -// __|__ __|__ -// | | | | -// Cl11 Cl12 Cl21 Cl22 -// -//==> list[0] = {Cl1, Cl11, Cl12} -// list[1] = {Cl2, Cl21, Cl22} - -QList<ParseManager::CLASSTREE*> ParseManager::CreateClassLists() -{ - QList<CLASSTREE*>ret; - QList<CLASSLISTITEM*> classlist; - QList<CLASSLISTITEM*> allclasslist; - - //Iteration over all parsed documents - if(getPreProcessor()){ - for (Snapshot::const_iterator it = getPreProcessor()->snapshot.begin() - ; it != getPreProcessor()->snapshot.end(); ++it) - { - Document::Ptr doc = (*it); - if(doc){ - QFileInfo fileinf(doc->fileName()); - QFileInfo fileinf1(m_strHeaderFile); - //Get the Translated unit - Control* ctrl = doc->control(); - TranslationUnit* trlUnit = ctrl->translationUnit(); - AST* pAst = trlUnit->ast(); - TranslationUnitAST *ptrAst = 0; - if(pAst && (ptrAst = pAst->asTranslationUnit())){ - //iteration over all translated declaration in this document - for (DeclarationListAST *pDecllist = ptrAst->declaration_list; pDecllist; pDecllist = pDecllist->next) { - if(pDecllist->value){ - SimpleDeclarationAST *pSimpleDec = pDecllist->value->asSimpleDeclaration(); - if(pSimpleDec){ - //Iteration over class specifier - for (SpecifierListAST *pSimpleDecDecllist = pSimpleDec->decl_specifier_list; pSimpleDecDecllist; pSimpleDecDecllist = pSimpleDecDecllist->next) { - ClassSpecifierAST * pclassspec = pSimpleDecDecllist->value->asClassSpecifier(); - if(pclassspec){ - CLASSLISTITEM* item = new CLASSLISTITEM(); - item->classspec = pclassspec; - item->trlUnit = trlUnit; - allclasslist.push_back(item); - //We found a class that is defined in the header file that needs to be checked - if(fileinf.fileName().toLower() == fileinf1.fileName().toLower()){ - CLASSTREE* cltree = new CLASSTREE(); - cltree->highestlevelclass = item; - cltree->classlist.push_back(item); - //now add all baseclasses from this class - ret.push_back(cltree); - } - } - } - } - } - } - } - } - } - } - //after we search for the classes we need to search for the baseclasses - foreach(CLASSTREE *cltree, ret){ - QList<CLASSLISTITEM*> baseclasslist; - getBaseClasses(cltree->highestlevelclass, baseclasslist, allclasslist); - cltree->classlist.append(baseclasslist); - } - return ret; -} - -/******************************************** -Gets all the baseclass from a class and -add those base classes into the baseclasslist -********************************************/ -void ParseManager::getBaseClasses(const CLASSLISTITEM* pclass, QList<CLASSLISTITEM*> &baseclasslist, const QList<CLASSLISTITEM*> &allclasslist) -{ - //iteration over the base_clause_list of the current class - QList<CLASSLISTITEM*>child; - for(BaseSpecifierListAST *pBaseSpecList = pclass->classspec->base_clause_list; pBaseSpecList; pBaseSpecList = pBaseSpecList->next) - { - BaseSpecifierAST *pBaseSpec = pBaseSpecList->value; - foreach(CLASSLISTITEM* pclspec, allclasslist) - { - if(pclspec->classspec->symbol->name()->isEqualTo(pBaseSpec->symbol->name())) - { - child.push_back(pclspec); - baseclasslist.push_back(pclspec); - break; - } - } - } - //call the function recursive because all the basclasses can have other base classes - foreach(CLASSLISTITEM* pchclass, child){ - getBaseClasses(pchclass, baseclasslist, allclasslist); - } -} - -/************************************************** -This function finds and creates all Elements wich -are significant for MetaDatas. -Those element will be added in the aparameter -lists. -**************************************************/ -void ParseManager::getElements(QList<FUNCTIONITEM*> &functionlist - , QList<PROPERTYITEM*> &propertylist - , QList<QENUMITEM*> &qenumlist - , QList<ENUMITEM*> &enumlist - , QList<QFLAGITEM*> &qflaglist - , QList<QDECLAREFLAGSITEM*> &qdeclareflaglist - , const QList<CLASSLISTITEM*> classitems - , const CLASSLISTITEM* highestlevelclass) -{ - foreach(CLASSLISTITEM* classitem, classitems){ - for (DeclarationListAST *pmemberlist = classitem->classspec->member_specifier_list; pmemberlist; pmemberlist = pmemberlist->next) { - /********** - Functions - **********/ - SimpleDeclarationAST *pdecl = pmemberlist->value->asSimpleDeclaration(); - if(pdecl){ - for(List<Declaration*>* decllist = pdecl->symbols; decllist; decllist = decllist->next) - { - Function* pfct = decllist->value->type()->asFunctionType(); - if(pfct){ - FUNCTIONITEM* item = new FUNCTIONITEM(); - item->init(); - item->trlUnit = classitem->trlUnit; - item->function = pfct; - item->ast = pdecl; - item->classAst = classitem->classspec; - item->highestlevelclass = highestlevelclass; - functionlist.push_back(item); - } - } - /****** - enum - ******/ - for(List<SpecifierAST*>* decllist = pdecl->decl_specifier_list; decllist; decllist = decllist->next) - { - EnumSpecifierAST * penum = decllist->value->asEnumSpecifier(); - if(penum){ - ENUMITEM* item = new ENUMITEM(); - item->init(); - item->ast = penum; - item->highestlevelclass = highestlevelclass; - item->trlUnit = classitem->trlUnit; - enumlist.push_back(item); - } - } - } - else{ - /********** - Q_PROPERTY - **********/ - QPropertyDeclarationAST *ppdecl = pmemberlist->value->asQPropertyDeclarationAST(); - if(ppdecl){ - PROPERTYITEM* item = new PROPERTYITEM(); - item->init(); - item->ast = ppdecl; - item->highestlevelclass = highestlevelclass; - item->trlUnit = classitem->trlUnit; - item->readdefined = (ppdecl->read_token > 0); - item->writedefined = (ppdecl->write_token > 0); - item->resetdefined = (ppdecl->reset_token > 0); - item->notifydefined = (ppdecl->notify_token > 0); - propertylist.push_back(item); - } - else{ - /********** - Q_ENUM - **********/ - QEnumDeclarationAST *pqenum = pmemberlist->value->asQEnumDeclarationAST(); - if(pqenum){ - QENUMITEM* item = new QENUMITEM(); - item->init(); - item->ast = pqenum; - item->highestlevelclass = highestlevelclass; - item->trlUnit = classitem->trlUnit; - qenumlist.push_back(item); - } - else{ - /********** - Q_FLAGS - **********/ - QFlagsDeclarationAST *pqflags = pmemberlist->value->asQFlagsDeclarationAST(); - if(pqflags){ - QFLAGITEM* item = new QFLAGITEM(); - item->init(); - item->ast = pqflags; - item->highestlevelclass = highestlevelclass; - item->trlUnit = classitem->trlUnit; - qflaglist.push_back(item); - } - else { - /**************** - Q_DECLARE_FLAGS - ****************/ - QDeclareFlagsDeclarationAST *pqdeclflags = pmemberlist->value->asQDeclareFlagsDeclarationAST(); - if(pqdeclflags){ - QDECLAREFLAGSITEM* item = new QDECLAREFLAGSITEM(); - item->init(); - item->ast = pqdeclflags; - item->highestlevelclass = highestlevelclass; - item->trlUnit = classitem->trlUnit; - qdeclareflaglist.push_back(item); - } - } - } - } - } - } - } -} - -/********************************************* -Function that starts the comare between the -parser result and their metadata content. -*********************************************/ -bool ParseManager::checkAllMetadatas(ParseManager* pInterfaceParserManager) -{ - bool ret = true; - - /************************************************ - Get all elements from the interface header file - ************************************************/ - QList<CLASSTREE*> ilookuplist = pInterfaceParserManager->CreateClassLists(); - QList<QList<FUNCTIONITEM*> > ifunctionslookuplist; - QList<QList<PROPERTYITEM*> > ipropertieslookuplist; - QList<QList<QENUMITEM*> > iqenumlookuplist; - QList<QList<ENUMITEM*> > ienumlookuplist; - QList<QList<QFLAGITEM*> > iqflaglookuplist; - QList<QList<QDECLAREFLAGSITEM*> > iqdeclareflaglookuplist; - foreach(CLASSTREE* iclasstree, ilookuplist){ - QList<FUNCTIONITEM*>functionlist; - QList<PROPERTYITEM*>propertylist; - QList<QENUMITEM*>qenumlist; - QList<ENUMITEM*>enumlist; - QList<QFLAGITEM*> qflaglist; - QList<QDECLAREFLAGSITEM*> qdeclareflag; - getElements(functionlist - , propertylist - , qenumlist - , enumlist - , qflaglist - , qdeclareflag - , iclasstree->classlist - , iclasstree->highestlevelclass); - if(functionlist.size() > 0) - ifunctionslookuplist.append(functionlist); - if(propertylist.size() > 0) - ipropertieslookuplist.append(propertylist); - if(qenumlist.size() > 0) - iqenumlookuplist.append(qenumlist); - if(enumlist.size() > 0) - ienumlookuplist.append(enumlist); - if(qflaglist.size() > 0) - iqflaglookuplist.append(qflaglist); - if(qdeclareflag.size() > 0) - iqdeclareflaglookuplist.append(qdeclareflag); - } - - /************************************************ - Get all elements from the compare header file - ************************************************/ - QList<CLASSTREE*> lookuplist = CreateClassLists(); - QList<QList<FUNCTIONITEM*> > functionslookuplist; - QList<QList<PROPERTYITEM*> > propertieslookuplist; - QList<QList<QENUMITEM*> > qenumlookuplist; - QList<QList<ENUMITEM*> > enumlookuplist; - QList<QList<QFLAGITEM*> > qflaglookuplist; - QList<QList<QDECLAREFLAGSITEM*> > qdeclareflaglookuplist; - foreach(CLASSTREE* classtree, lookuplist){ - QList<FUNCTIONITEM*>functionlist; - QList<PROPERTYITEM*>propertylist; - QList<QENUMITEM*>qenumlist; - QList<ENUMITEM*>enumlist; - QList<QFLAGITEM*> qflaglist; - QList<QDECLAREFLAGSITEM*> qdeclareflag; - getElements(functionlist - , propertylist - , qenumlist - , enumlist - , qflaglist - , qdeclareflag - , classtree->classlist - , classtree->highestlevelclass); - if(functionlist.size() > 0) - functionslookuplist.append(functionlist); - if(propertylist.size() > 0) - propertieslookuplist.append(propertylist); - if(qenumlist.size() > 0) - qenumlookuplist.append(qenumlist); - if(enumlist.size() > 0) - enumlookuplist.append(enumlist); - if(qflaglist.size() > 0) - qflaglookuplist.append(qflaglist); - if(qdeclareflag.size() > 0) - qdeclareflaglookuplist.append(qdeclareflag); - } - - /****************************** - Check for function - ******************************/ - QList<FUNCTIONITEM*> missingifcts = checkMetadataFunctions(functionslookuplist, ifunctionslookuplist); - if(missingifcts.size() > 0){ - foreach(FUNCTIONITEM* ifct, missingifcts){ - m_errormsgs.push_back(getErrorMessage(ifct)); - } - ret = false; - } - - /****************************** - Check for properies - ******************************/ - QList<PROPERTYITEM*> missingippts = checkMetadataProperties(propertieslookuplist, functionslookuplist, ipropertieslookuplist, ifunctionslookuplist); - if(missingippts.size() > 0){ - foreach(PROPERTYITEM* ippt, missingippts){ - m_errormsgs.push_back(getErrorMessage(ippt)); - } - ret = false; - } - - /****************************** - Check for enums - ******************************/ - QList<QENUMITEM*> missingiqenums = checkMetadataEnums(qenumlookuplist, enumlookuplist, iqenumlookuplist, ienumlookuplist); - if(missingiqenums.size() > 0){ - foreach(QENUMITEM* ienum, missingiqenums){ - m_errormsgs.push_back(getErrorMessage(ienum)); - } - ret = false; - } - - /****************************** - Check for flags - ******************************/ - QList<QFLAGITEM*> missingiqflags = checkMetadataFlags(qflaglookuplist, qdeclareflaglookuplist, enumlookuplist - , iqflaglookuplist, iqdeclareflaglookuplist, ienumlookuplist); - if(missingiqflags.size() > 0){ - foreach(QFLAGITEM* iflags, missingiqflags){ - m_errormsgs.push_back(getErrorMessage(iflags)); - } - ret = false; - } - - //now delet all Classitems - foreach(CLASSTREE* l, ilookuplist){ - l->classlist.clear(); - } - foreach(CLASSTREE* l, lookuplist){ - l->classlist.clear(); - } - //delete all functionitems - foreach(QList<FUNCTIONITEM*>l, ifunctionslookuplist){ - l.clear(); - } - foreach(QList<FUNCTIONITEM*>l, functionslookuplist){ - l.clear(); - } - //delete all properties - foreach(QList<PROPERTYITEM*>l, ipropertieslookuplist){ - l.clear(); - } - foreach(QList<PROPERTYITEM*>l, propertieslookuplist){ - l.clear(); - } - //delete all qenums - foreach(QList<QENUMITEM*>l, iqenumlookuplist){ - l.clear(); - } - foreach(QList<QENUMITEM*>l, iqenumlookuplist){ - l.clear(); - } - //delete all enums - foreach(QList<ENUMITEM*>l, ienumlookuplist){ - l.clear(); - } - foreach(QList<ENUMITEM*>l, enumlookuplist){ - l.clear(); - } - //delete all qflags - foreach(QList<QFLAGITEM*>l, iqflaglookuplist){ - l.clear(); - } - foreach(QList<QFLAGITEM*>l, qflaglookuplist){ - l.clear(); - } - //delete all qdeclareflags - foreach(QList<QDECLAREFLAGSITEM*>l, iqdeclareflaglookuplist){ - l.clear(); - } - foreach(QList<QDECLAREFLAGSITEM*>l, qdeclareflaglookuplist){ - l.clear(); - } - - return ret; -} - -//<------------------------------------------------------- Start of MetaData functions -/*********************************** -Function that checks all functions -which will occur in the MetaData -***********************************/ -QList<ParseManager::FUNCTIONITEM*> ParseManager::checkMetadataFunctions(const QList<QList<FUNCTIONITEM*> > &classfctlist, const QList<QList<FUNCTIONITEM*> > &iclassfctlist) -{ - QList<FUNCTIONITEM*> missingifcts; - //Compare each function from interface with function from header (incl. baseclass functions) - QList<FUNCTIONITEM*> ifcts; - foreach(QList<FUNCTIONITEM*>ifunctionlist, iclassfctlist){ - ifcts.clear(); - //check if one header class contains all function from one interface header class - if(classfctlist.count() > 0){ - foreach(QList<FUNCTIONITEM*>functionlist, classfctlist){ - QList<FUNCTIONITEM*> tmpl = containsAllMetadataFunction(functionlist, ifunctionlist); - if(tmpl.size() == 0) - ifcts.clear(); - else - ifcts.append(tmpl); - } - } - else { - foreach(FUNCTIONITEM *pfct, ifunctionlist) - pfct->classWichIsNotFound << "<all classes>"; - ifcts.append(ifunctionlist); - } - missingifcts.append(ifcts); - } - return missingifcts; -} - -/********************************************* -Helper function to check if a function will -occure in the MetaData. -*********************************************/ -bool ParseManager::isMetaObjFunction(FUNCTIONITEM* fct) -{ - if(fct->function->isInvokable() - || fct->function->isSignal() - || fct->function->isSlot()) - return true; - return false; -} - -/**************************************************** -Check if all function from iclassfctlist are defined -in the classfctlist as well. -It will return all the function they are missing. -****************************************************/ -QList<ParseManager::FUNCTIONITEM*> ParseManager::containsAllMetadataFunction(const QList<FUNCTIONITEM*> &classfctlist, const QList<FUNCTIONITEM*> &iclassfctlist) -{ - QList<FUNCTIONITEM*> ret; - foreach(FUNCTIONITEM* ifct, iclassfctlist){ - if(isMetaObjFunction(ifct)){ - bool found = false; - QStringList missingimplinclasses; - ClassSpecifierAST* clspec = 0; - foreach(FUNCTIONITEM* fct, classfctlist){ - if(clspec != fct->highestlevelclass->classspec){ - clspec = fct->highestlevelclass->classspec; - //get the classname - QString classname = ""; - unsigned int firsttoken = clspec->name->firstToken(); - classname += fct->trlUnit->spell(firsttoken); - if(missingimplinclasses.indexOf(classname) < 0) - missingimplinclasses.push_back(classname); - } - if(fct->isEqualTo(ifct, false)){ - found = true; - missingimplinclasses.clear(); - break; - } - } - if(!found){ - ifct->classWichIsNotFound.append(missingimplinclasses); - ret.push_back(ifct); - } - } - } - return ret; -} - -/************************************ -Function that gives back an error -string for a MetaData function -mismatch. -************************************/ -QString ParseManager::getErrorMessage(FUNCTIONITEM* fct) -{ - QString ret = ""; - QTextStream out(&ret); - QString fctstring = ""; - QString fcttype = ""; - - foreach(QString classname, fct->classWichIsNotFound){ - if(ret.size() > 0) - out << endl; - - fcttype = ""; - fctstring = classname; - fctstring += "::"; - - unsigned int firsttoken = fct->ast->firstToken(); - unsigned int lasttoken = fct->ast->lastToken(); - for(unsigned int i = firsttoken; i < lasttoken; i++){ - fctstring += fct->trlUnit->spell(i); - fctstring += " "; - } - - SimpleDeclarationAST *psdecl = fct->ast->asSimpleDeclaration(); - if(psdecl){ - for(List<Declaration*>* decllist = psdecl->symbols; decllist; decllist = decllist->next) - { - Function* pfct = decllist->value->type()->asFunctionType(); - if(pfct){ - fcttype = "type: "; - //Check for private, protected and public - if(pfct->isPublic()) - fcttype = "public "; - if(pfct->isProtected()) - fcttype = "protected "; - if(pfct->isPrivate()) - fcttype = "private "; - - if(pfct->isVirtual()) - fcttype += "virtual "; - if(pfct->isPureVirtual()) - fcttype += "pure virtual "; - - if(pfct->isSignal()) - fcttype += "Signal "; - if(pfct->isSlot()) - fcttype += "Slot "; - if(pfct->isNormal()) - fcttype += "Normal "; - if(pfct->isInvokable()) - fcttype += "Invokable "; - } - } - } - out << fcttype << fctstring; - } - return ret; -} -//---> - -//<------------------------------------------------------- Start of Q_PROPERTY checks -/*********************************** -Function that checks all Property -which will occur in the MetaData -***********************************/ -QList<ParseManager::PROPERTYITEM*> ParseManager::checkMetadataProperties(const QList<QList<PROPERTYITEM*> > &classproplist - , const QList<QList<FUNCTIONITEM*> > &classfctlist - , const QList<QList<PROPERTYITEM*> > &iclassproplist - , const QList<QList<FUNCTIONITEM*> > &iclassfctlist) -{ - QList<PROPERTYITEM*> missingifcts; - //assign the property functions - foreach(QList<PROPERTYITEM*>proplist, classproplist){ - foreach(PROPERTYITEM* prop, proplist){ - assignPropertyFunctions(prop, classfctlist); - } - } - - foreach(QList<PROPERTYITEM*>proplist, iclassproplist){ - foreach(PROPERTYITEM* prop, proplist){ - assignPropertyFunctions(prop, iclassfctlist); - } - } - - //Compare each qproperty from interface with qproperty from header (incl. baseclass functions) - QList<PROPERTYITEM*> ippts; - foreach(QList<PROPERTYITEM*>ipropertylist, iclassproplist){ - ippts.clear(); - //check if one header class contains all function from one interface header class - if(classproplist.count() > 0){ - foreach(QList<PROPERTYITEM*>propertylist, classproplist){ - QList<PROPERTYITEM*> tmpl = containsAllPropertyFunction(propertylist, ipropertylist); - if(tmpl.size() == 0) - ippts.clear(); - else - ippts.append(tmpl); - } - } - else { - foreach(PROPERTYITEM *pprop, ipropertylist) - pprop->classWichIsNotFound << "<all classes>"; - ippts.append(ipropertylist); - } - missingifcts.append(ippts); - } - return missingifcts; -} - -/************************************** -Function that resolves the dependensies -between Q_PROPERTY -and thier READ, WRITE, NOTIFY and RESET -functions. -***************************************/ -void ParseManager::assignPropertyFunctions(PROPERTYITEM* prop, const QList<QList<FUNCTIONITEM*> > &fctlookuplist) -{ - //get the name of the needed functions - QString type; - QString readfctname; - QString writefctname; - QString resetfctname; - QString notifyfctname; - - int needtofind = 0; - type = prop->trlUnit->spell(prop->ast->type_token); - if(prop->readdefined){ - readfctname = prop->trlUnit->spell(prop->ast->read_function_token); - needtofind++; - } - if(prop->writedefined){ - writefctname = prop->trlUnit->spell(prop->ast->write_function_token); - needtofind++; - } - if(prop->resetdefined){ - resetfctname = prop->trlUnit->spell(prop->ast->reset_function_token); - needtofind++; - } - if(prop->notifydefined){ - notifyfctname = prop->trlUnit->spell(prop->ast->notify_function_token); - needtofind++; - } - //Now iterate over all function to find all functions wich are defined in the Q_PROPERTY macro - if(needtofind > 0){ - prop->foundalldefinedfct = false; - foreach(QList<FUNCTIONITEM*> fctlist, fctlookuplist){ - foreach(FUNCTIONITEM* pfct, fctlist){ - QString fcttype =pfct->trlUnit->spell(pfct->ast->firstToken()); - //check the function type against the property type - QString fctname = pfct->trlUnit->spell(pfct->ast->firstToken() + 1); - if(prop->readdefined && fctname == readfctname){ - if(type != fcttype) - continue; - prop->readFct = pfct; - needtofind--; - } - if(prop->writedefined && fctname == writefctname){ - prop->writeFct = pfct; - needtofind--; - } - if(prop->resetdefined && fctname == resetfctname){ - prop->resetFct = pfct; - needtofind--; - } - if(prop->notifydefined && fctname == notifyfctname){ - prop->notifyFct = pfct; - needtofind--; - } - if(needtofind <= 0){ - //a flag that indicates if a function was missing - prop->foundalldefinedfct = true; - return; - } - } - } - } -} - -/************************************** -Function that checks if all functions -dependencies in Q_PROPERTY have the -same arguments and retunr value. -***************************************/ -QList<ParseManager::PROPERTYITEM*> ParseManager::containsAllPropertyFunction(const QList<PROPERTYITEM*> &classproplist, const QList<PROPERTYITEM*> &iclassproplist) -{ - QList<PROPERTYITEM*> ret; - foreach(PROPERTYITEM* ipropt, iclassproplist){ - if(ipropt->foundalldefinedfct){ - bool found = false; - QStringList missingimplinclasses; - ClassSpecifierAST* clspec = 0; - foreach(PROPERTYITEM* propt, classproplist){ - if(clspec != propt->highestlevelclass->classspec){ - clspec = propt->highestlevelclass->classspec; - //get the classname - QString classname = ""; - unsigned int firsttoken = clspec->name->firstToken(); - classname += propt->trlUnit->spell(firsttoken); - if(missingimplinclasses.indexOf(classname) < 0) - missingimplinclasses.push_back(classname); - } - if(propt->isEqualTo(ipropt)){ - found = true; - missingimplinclasses.clear(); - break; - } - } - if(!found){ - ipropt->classWichIsNotFound.append(missingimplinclasses); - ret.push_back(ipropt); - } - } - else{ - ret.push_back(ipropt); - } - } - return ret; -} - -/************************************ -Function that gives back an error -string for a Q_PROPERTY mismatch. -************************************/ -QString ParseManager::getErrorMessage(PROPERTYITEM* ppt) -{ - QString ret = ""; - QTextStream out(&ret); - QString pptstring = ""; - QString ppttype = ""; - - if(!ppt->foundalldefinedfct) - { - unsigned int firsttoken = ppt->highestlevelclass->classspec->name->firstToken(); - unsigned int lasttoken = ppt->highestlevelclass->classspec->name->lastToken(); - for(unsigned int i = firsttoken; i < lasttoken; i++){ - out << ppt->trlUnit->spell(i); - } - out << "::"; - firsttoken = ppt->ast->firstToken(); - lasttoken = ppt->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - out << ppt->trlUnit->spell(i) << " "; - } - out << endl << " -"; - if(ppt->readdefined && !ppt->readFct) - out << "READ "; - if(ppt->writedefined && !ppt->writeFct) - out << "WRITE "; - if(ppt->resetdefined && !ppt->resetFct) - out << "RESET."; - if(ppt->notifydefined && !ppt->notifyFct) - out << "NOTIFY "; - out << "functions missing." << endl; - } - for(int i = 0; i < ppt->classWichIsNotFound.size(); i++){ - if(ret.size() > 0) - out << endl; - - pptstring = ppt->classWichIsNotFound[i]; - pptstring += "::"; - - unsigned int firsttoken = ppt->ast->firstToken(); - unsigned int lasttoken = ppt->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - pptstring += ppt->trlUnit->spell(i); - pptstring += " "; - } - - out << ppttype << pptstring; - } - return ret; -} -//---> - - -//<------------------------------------------------------- Start of Q_ENUMS checks -/*********************************** -Function that checks all enums -which will occur in the MetaData -***********************************/ -QList<ParseManager::QENUMITEM*> ParseManager::checkMetadataEnums(const QList<QList<QENUMITEM*> > &classqenumlist - , const QList<QList<ENUMITEM*> > &classenumlist - , const QList<QList<QENUMITEM*> > &iclassqenumlist - , const QList<QList<ENUMITEM*> > &iclassenumlist) -{ - QList<QENUMITEM*> missingiqenums; - //assign the property functions - foreach(QList<QENUMITEM*>qenumlist, classqenumlist){ - foreach(QENUMITEM* qenum, qenumlist){ - assignEnumValues(qenum, classenumlist); - } - } - foreach(QList<QENUMITEM*>qenumlist, iclassqenumlist){ - foreach(QENUMITEM* qenum, qenumlist){ - assignEnumValues(qenum, iclassenumlist); - } - } - - //Compare each qenum from interface with qenum from header (incl. baseclass functions) - QList<QENUMITEM*> iqenums; - foreach(QList<QENUMITEM*>iqenumlist, iclassqenumlist){ - iqenums.clear(); - //check if one header class contains all function from one interface header class - if(classqenumlist.count() > 0){ - foreach(QList<QENUMITEM*>qenumlist, classqenumlist){ - QList<QENUMITEM*> tmpl = containsAllEnums(qenumlist, iqenumlist); - if(tmpl.size() == 0) - iqenums.clear(); - else - iqenums.append(tmpl); - - } - } - else { - foreach(QENUMITEM *qenum, iqenumlist) - qenum->classWichIsNotFound << "<all classes>"; - iqenums.append(iqenumlist); - } - missingiqenums.append(iqenums); - } - - return missingiqenums; -} - -/********************************************* -Helper function which creates a string out of -an enumerator including its values. -*********************************************/ -QStringList ParseManager::getEnumValueStringList(ENUMITEM *penum, QString mappedenumname/* = ""*/) -{ - QStringList ret; - EnumSpecifierAST *penumsec = penum->ast; - QString enumname = penum->trlUnit->spell(penumsec->name->firstToken()); - int enumvalue = 0; - //now iterrate over all enumitems and create a string like following: - //EnumName.EnumItemName.Value - //ConnectionState.disconnected.0 - for (EnumeratorListAST *plist = penum->ast->enumerator_list; plist; plist = plist->next) { - QString value = enumname; - if(mappedenumname.size() > 0) - value = mappedenumname; - value += "."; - value += penum->trlUnit->spell(plist->value->identifier_token); - value += "."; - if(plist->value->equal_token > 0 && plist->value->expression){ - QString v = penum->trlUnit->spell(plist->value->expression->firstToken()); - bool ch; - int newval = enumvalue; - if(v.indexOf("0x") >= 0) - newval = v.toInt(&ch, 16); - else - newval = v.toInt(&ch, 10); - if(ch) - enumvalue = newval; - } - value += QString::number(enumvalue); - enumvalue++; - // now add this enumitem string in the VALUE list - ret << value; - } - return ret; -} - -/************************************** -Function that resolves the dependensies -between Q_ENUMS and enums. -***************************************/ -void ParseManager::assignEnumValues(QENUMITEM* qenum, const QList<QList<ENUMITEM*> > &enumlookuplist) -{ - QString enumname; - for (EnumeratorListAST *plist = qenum->ast->enumerator_list; plist; plist = plist->next) { - EnumeratorAST *penum = plist->value->asEnumerator(); - if(penum){ - //get the name of the enum definition - enumname = qenum->trlUnit->spell(penum->firstToken()); - //iterate over all enums and find the one with the same name like enumname - bool found = false; - foreach (QList<ENUMITEM*> penumlist, enumlookuplist) { - foreach(ENUMITEM *penum, penumlist){ - EnumSpecifierAST *penumsec = penum->ast; - QString enumname1 = penum->trlUnit->spell(penumsec->name->firstToken()); - if(enumname == enumname1){ - qenum->values << getEnumValueStringList(penum); - found = true; - break; - } - } - if(!found) - qenum->foundallenums = false; - } - } - } -} - -/*********************************** -Function that checkt if the Q_ENUMS -are completed defined and if the -Enum values are the same. -***********************************/ -QList<ParseManager::QENUMITEM*> ParseManager::containsAllEnums(const QList<QENUMITEM*> &classqenumlist, const QList<QENUMITEM*> &iclassqenumlist) -{ - QList<QENUMITEM*> ret; - foreach(QENUMITEM* iqenum, iclassqenumlist){ - bool found = false; - QStringList missingimplinclasses; - ClassSpecifierAST* clspec = 0; - foreach(QENUMITEM* qenum, classqenumlist){ - if(clspec != qenum->highestlevelclass->classspec){ - clspec = qenum->highestlevelclass->classspec; - //get the classname - QString classname = ""; - unsigned int firsttoken = clspec->name->firstToken(); - classname += qenum->trlUnit->spell(firsttoken); - if(missingimplinclasses.indexOf(classname) < 0) - missingimplinclasses.push_back(classname); - } - if(qenum->isEqualTo(iqenum)){ - found = true; - missingimplinclasses.clear(); - break; - } - } - if(!found){ - iqenum->classWichIsNotFound.append(missingimplinclasses); - ret.push_back(iqenum); - } - } - return ret; -} - -/************************************ -Function that gives back an error -string for a Q_ENUMS mismatch. -************************************/ -QString ParseManager::getErrorMessage(QENUMITEM* qenum) -{ - QString ret = ""; - QTextStream out(&ret); - - if(!qenum->foundallenums) - { - unsigned int firsttoken = qenum->highestlevelclass->classspec->name->firstToken(); - unsigned int lasttoken = qenum->highestlevelclass->classspec->name->lastToken(); - for(unsigned int i = firsttoken; i < lasttoken; i++){ - out << qenum->trlUnit->spell(i); - } - out << "::"; - firsttoken = qenum->ast->firstToken(); - lasttoken = qenum->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - out << qenum->trlUnit->spell(i) << " "; - } - out << endl << " - one or more Enums missing." << endl; - } - - for(int i = 0; i < qenum->classWichIsNotFound.size(); i++){ - if(ret.size() > 0) - out << endl; - - out << qenum->classWichIsNotFound[i] << "::"; - - unsigned int firsttoken = qenum->ast->firstToken(); - unsigned int lasttoken = qenum->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - out << qenum->trlUnit->spell(i) << " "; - } - } - return ret; -} -//---> - -//<------------------------------------------------------- Start of Q_FLAGS checks -/*********************************** -Function that checks all flags -which will occur in the MetaData -***********************************/ -QList<ParseManager::QFLAGITEM*> ParseManager::checkMetadataFlags(const QList<QList<QFLAGITEM*> > &classqflaglist - , const QList<QList<QDECLAREFLAGSITEM*> > &classqdeclareflaglist - , const QList<QList<ENUMITEM*> > &classenumlist - , const QList<QList<QFLAGITEM*> > &iclassqflaglist - , const QList<QList<QDECLAREFLAGSITEM*> > &iclassqdeclareflaglist - , const QList<QList<ENUMITEM*> > &iclassenumlist) -{ - QList<QFLAGITEM*> missingqflags; - //assign the enums to the flags - foreach(QList<QFLAGITEM*>qflaglist, classqflaglist){ - foreach(QFLAGITEM* qflag, qflaglist){ - assignFlagValues(qflag, classqdeclareflaglist, classenumlist); - } - } - foreach(QList<QFLAGITEM*>qflaglist, iclassqflaglist){ - foreach(QFLAGITEM* qflag, qflaglist){ - assignFlagValues(qflag, iclassqdeclareflaglist, iclassenumlist); - } - } - - //Compare each qenum from interface with qenum from header (incl. baseclass functions) - QList<QFLAGITEM*> iqflags; - foreach(QList<QFLAGITEM*>iqflaglist, iclassqflaglist){ - iqflags.clear(); - //check if one header class contains all function from one interface header class - if(classqflaglist.count() >0){ - foreach(QList<QFLAGITEM*>qflaglist, classqflaglist){ - QList<QFLAGITEM*> tmpl = containsAllFlags(qflaglist, iqflaglist); - if(tmpl.size() == 0) - iqflags.clear(); - else - iqflags.append(tmpl); - - } - } - else { - foreach(QFLAGITEM *pflag, iqflaglist) - pflag->classWichIsNotFound << "<all classes>"; - iqflags.append(iqflaglist); - } - missingqflags.append(iqflags); - } - return missingqflags; -} - -/************************************** -Function that resolves the dependensies -between Q_FLAG, Q_DECLARE_FLAGS -and enums. -***************************************/ -void ParseManager::assignFlagValues(QFLAGITEM* qflags, const QList<QList<QDECLAREFLAGSITEM*> > &qdeclareflagslookuplist, const QList<QList<ENUMITEM*> > &enumlookuplist) -{ - QString qflagname; - QString enumname; - //read the flag names - for (EnumeratorListAST *plist = qflags->ast->enumerator_list; plist; plist = plist->next) { - EnumeratorAST *pflags = plist->value->asEnumerator(); - if(pflags){ - qflagname = qflags->trlUnit->spell(pflags->firstToken()); - enumname = qflagname; - //try to find if there is a deflare flag macro with the same name as in qflagname - bool found = false; - foreach(QList<QDECLAREFLAGSITEM*> qdeclarelist, qdeclareflagslookuplist){ - foreach(QDECLAREFLAGSITEM* qdeclare, qdeclarelist){ - QString declarename = qdeclare->trlUnit->spell(qdeclare->ast->flag_token); - if(declarename == qflagname){ - //now map the right enum name to the flag - enumname = qdeclare->trlUnit->spell(qdeclare->ast->enum_token); - found = true; - break; - } - } - if(found) - break; - } - //now we have the right enum name now we need to find the enum - found = false; - foreach(QList<ENUMITEM*> enumitemlist, enumlookuplist){ - foreach(ENUMITEM* enumitem, enumitemlist){ - EnumSpecifierAST *penumspec = enumitem->ast; - QString enumspecname = enumitem->trlUnit->spell(penumspec->name->firstToken()); - if(enumspecname == enumname){ - qflags->enumvalues << getEnumValueStringList(enumitem, qflagname); - found = true; - break; - } - } - if(found) - break; - } - if(!found) - qflags->foundallenums = false; - } - } -} - -/***************************************** -Function that compares if all enums -and flags assigned by using the Q_FLAGS -are complete defined. -*****************************************/ -QList<ParseManager::QFLAGITEM*> ParseManager::containsAllFlags(const QList<QFLAGITEM*> &classqflaglist, const QList<QFLAGITEM*> &iclassqflaglist) -{ - QList<QFLAGITEM*> ret; - foreach(QFLAGITEM* iqflags, iclassqflaglist){ - if(iqflags->foundallenums){ - bool found = false; - QStringList missingimplinclasses; - ClassSpecifierAST* clspec = 0; - foreach(QFLAGITEM* qflags, classqflaglist){ - if(clspec != qflags->highestlevelclass->classspec){ - clspec = qflags->highestlevelclass->classspec; - //get the classname - QString classname = ""; - unsigned int firsttoken = clspec->name->firstToken(); - classname += qflags->trlUnit->spell(firsttoken); - if(missingimplinclasses.indexOf(classname) < 0) - missingimplinclasses.push_back(classname); - } - if(qflags->isEqualTo(iqflags)){ - found = true; - missingimplinclasses.clear(); - break; - } - } - if(!found){ - iqflags->classWichIsNotFound.append(missingimplinclasses); - ret.push_back(iqflags); - } - } - else - ret.push_back(iqflags); - } - return ret; -} - -/************************************ -Function that gives back an error -string for a Q_FLAGS mismatch. -************************************/ -QString ParseManager::getErrorMessage(QFLAGITEM* pfg) -{ - QString ret = ""; - QTextStream out(&ret); - - if(!pfg->foundallenums) - { - unsigned int firsttoken = pfg->highestlevelclass->classspec->name->firstToken(); - unsigned int lasttoken = pfg->highestlevelclass->classspec->name->lastToken(); - for(unsigned int i = firsttoken; i < lasttoken; i++){ - out << pfg->trlUnit->spell(i); - } - out << "::"; - firsttoken = pfg->ast->firstToken(); - lasttoken = pfg->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - out << pfg->trlUnit->spell(i) << " "; - } - out << endl << " - one or more Enums missing." << endl; - } - for(int i = 0; i < pfg->classWichIsNotFound.size(); i++){ - if(ret.size() > 0) - out << endl; - - out << pfg->classWichIsNotFound[i] << "::"; - - unsigned int firsttoken = pfg->ast->firstToken(); - unsigned int lasttoken = pfg->ast->lastToken(); - for(unsigned int i = firsttoken; i <= lasttoken; i++){ - out << pfg->trlUnit->spell(i) << " "; - } - } - return ret; -} -//---> diff --git a/src/tools/ICheck/ICheckLib/ParseManager.h b/src/tools/ICheck/ICheckLib/ParseManager.h deleted file mode 100644 index bc805b5f6b3e892cab2475b0a87f4227c5eaab30..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ParseManager.h +++ /dev/null @@ -1,300 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -** Description: -** -** The ParseManager parses and compares to different header files -** of its metadata. This can be used for checking if an Interface -** is implemented complete. -** -** How to use it: -** -** //Parse the interface header -** ParseManager* iParseManager = new ParseManager(); -** iParseManager->setIncludePath(iIncludepathlist); -** iParseManager->parse(iFilelist); -** -** //Parse the header that needs to be compared against the interface header -** ParseManager* chParseManager = new ParseManager(); -** chIncludepathlist << getQTIncludePath(); -** chParseManager->setIncludePath(chIncludepathlist); -** chParseManager->parse(chFilelist); -** -** if(!chParseManager->checkAllMetadatas(iParseManager)){ -** cout << "Folowing interface items are missing:" << endl; -** QStringList errorlist = chParseManager->getErrorMsg(); -** foreach(QString msg, errorlist){ -** cout << (const char *)msg.toLatin1() << endl; -** } -** return -1; -** } -** else -** cout << "Interface is full defined."; -** -**************************************************************************/ - - -#ifndef PARSEMANAGER_H -#define PARSEMANAGER_H - -#include <QObject> -#include <QList> -#include <QFuture> -#include <QStringList> -#include "cplusplus/CppDocument.h" - -namespace CppTools{ - namespace Internal{ - class CppPreprocessor; - } -} - -namespace CPlusPlus { - class TranslationUnit; - class AST; - class ClassSpecifierAST; - class SimpleDeclarationAST; - class QPropertyDeclarationAST; - class QEnumDeclarationAST; - class QFlagsDeclarationAST; - class QDeclareFlagsDeclarationAST; - class EnumSpecifierAST; - class Function; - - class ParseManager : public QObject - { - Q_OBJECT - struct CLASSLISTITEM - { - CPlusPlus::TranslationUnit* trlUnit; - ClassSpecifierAST* classspec; - }; - struct CLASSTREE - { - CLASSLISTITEM* highestlevelclass; - QList<CLASSLISTITEM*> classlist; - }; - struct FUNCTIONITEM - { - const CLASSLISTITEM* highestlevelclass; - CPlusPlus::TranslationUnit* trlUnit; - ClassSpecifierAST* classAst; - QStringList classWichIsNotFound; - CPlusPlus::Function* function; - SimpleDeclarationAST* ast; - - bool isEqualTo(FUNCTIONITEM* cpfct, bool ignoreName = true); - void init() - { - highestlevelclass = 0; - trlUnit = 0; - classAst = 0; - function = 0; - ast = 0; - } - }; - struct PROPERTYITEM - { - const CLASSLISTITEM* highestlevelclass; - QStringList classWichIsNotFound; - QPropertyDeclarationAST *ast; - CPlusPlus::TranslationUnit* trlUnit; - bool readdefined; - FUNCTIONITEM *readFct; - bool writedefined; - FUNCTIONITEM *writeFct; - bool resetdefined; - FUNCTIONITEM *resetFct; - bool notifydefined; - FUNCTIONITEM *notifyFct; - bool foundalldefinedfct; - - bool isEqualTo(PROPERTYITEM* cpppt); - void init() - { - highestlevelclass = 0; - ast = 0; - trlUnit = 0; - readdefined = false; - readFct = 0; - writedefined = false; - writeFct = 0; - resetdefined = false; - resetFct = 0; - notifydefined = false; - notifyFct = 0; - foundalldefinedfct = false; - } - }; - - struct QENUMITEM - { - const CLASSLISTITEM* highestlevelclass; - CPlusPlus::TranslationUnit* trlUnit; - QStringList classWichIsNotFound; - QEnumDeclarationAST* ast; - //an item in this list will be shown like: - //EnumName.EnumItemName.Value - //ConnectionState.disconnected.0 - QStringList values; - bool foundallenums; - - bool isEqualTo(QENUMITEM *cpenum); - void init() - { - highestlevelclass = 0; - trlUnit = 0; - ast = 0; - values.clear(); - foundallenums = true; - } - }; - - struct ENUMITEM - { - const CLASSLISTITEM* highestlevelclass; - CPlusPlus::TranslationUnit* trlUnit; - QStringList classWichIsNotFound; - EnumSpecifierAST* ast; - - void init() - { - highestlevelclass = 0; - trlUnit = 0; - ast = 0; - } - }; - - struct QFLAGITEM - { - const CLASSLISTITEM* highestlevelclass; - CPlusPlus::TranslationUnit* trlUnit; - QStringList classWichIsNotFound; - QFlagsDeclarationAST* ast; - QStringList enumvalues; - bool foundallenums; - - bool isEqualTo(QFLAGITEM *cpflag); - void init() - { - highestlevelclass = 0; - trlUnit = 0; - ast = 0; - enumvalues.clear(); - foundallenums = true; - } - }; - - struct QDECLAREFLAGSITEM - { - const CLASSLISTITEM* highestlevelclass; - CPlusPlus::TranslationUnit* trlUnit; - QStringList classWichIsNotFound; - QDeclareFlagsDeclarationAST* ast; - - void init() - { - highestlevelclass = 0; - trlUnit = 0; - ast = 0; - } - }; - - - public: - ParseManager(); - virtual ~ParseManager(); - void setIncludePath(const QStringList &includePath); - void parse(const QStringList &sourceFiles); - bool checkAllMetadatas(ParseManager* pInterfaceParserManager); - CppTools::Internal::CppPreprocessor *getPreProcessor() { return pCppPreprocessor; } - QList<CLASSTREE*> CreateClassLists(); - QStringList getErrorMsg() { return m_errormsgs; } - - private: - void parse(CppTools::Internal::CppPreprocessor *preproc, const QStringList &files); - void getBaseClasses(const CLASSLISTITEM* pclass, QList<CLASSLISTITEM*> &baseclasslist, const QList<CLASSLISTITEM*> &allclasslist); - void getElements(QList<FUNCTIONITEM*> &functionlist - , QList<PROPERTYITEM*> &propertylist - , QList<QENUMITEM*> &qenumlist - , QList<ENUMITEM*> &enumlist - , QList<QFLAGITEM*> &qflaglist - , QList<QDECLAREFLAGSITEM*> &qdeclareflaglist - , const QList<CLASSLISTITEM*> classitems - , const CLASSLISTITEM* highestlevelclass); - - //<--- for Metadata functions checks - QList<FUNCTIONITEM*> checkMetadataFunctions(const QList<QList<FUNCTIONITEM*> > &classfctlist, const QList<QList<FUNCTIONITEM*> > &iclassfctlist); - bool isMetaObjFunction(FUNCTIONITEM* fct); - QList<FUNCTIONITEM*> containsAllMetadataFunction(const QList<FUNCTIONITEM*> &classfctlist, const QList<FUNCTIONITEM*> &iclassfctlist); - QString getErrorMessage(FUNCTIONITEM* fct); - //---> - - //<--- for Q_PROPERTY functions checks - QList<PROPERTYITEM*> checkMetadataProperties(const QList<QList<PROPERTYITEM*> > &classproplist - , const QList<QList<FUNCTIONITEM*> > &classfctlist - , const QList<QList<PROPERTYITEM*> > &iclassproplist - , const QList<QList<FUNCTIONITEM*> > &iclassfctlist); - void assignPropertyFunctions(PROPERTYITEM* prop, const QList<QList<FUNCTIONITEM*> > &fctlookuplist); - QList<PROPERTYITEM*> containsAllPropertyFunction(const QList<PROPERTYITEM*> &classproplist, const QList<PROPERTYITEM*> &iclassproplist); - QString getErrorMessage(PROPERTYITEM* ppt); - //---> - - //<--- for Q_ENUMS checks - QList<QENUMITEM*> checkMetadataEnums(const QList<QList<QENUMITEM*> > &classqenumlist - , const QList<QList<ENUMITEM*> > &classenumlist - , const QList<QList<QENUMITEM*> > &iclassqenumlist - , const QList<QList<ENUMITEM*> > &iclassenumlist); - QStringList getEnumValueStringList(ENUMITEM *penum, QString mappedenumname = ""); - void assignEnumValues(QENUMITEM* qenum, const QList<QList<ENUMITEM*> > &enumlookuplist); - QList<QENUMITEM*> containsAllEnums(const QList<QENUMITEM*> &classqenumlist, const QList<QENUMITEM*> &iclassqenumlist); - QString getErrorMessage(QENUMITEM* qenum); - //---> - - //<--- for QFlags checks ---> - QList<QFLAGITEM*> checkMetadataFlags(const QList<QList<QFLAGITEM*> > &classqflaglist - , const QList<QList<QDECLAREFLAGSITEM*> > &classqdeclareflaglist - , const QList<QList<ENUMITEM*> > &classenumlist - , const QList<QList<QFLAGITEM*> > &iclassqflaglist - , const QList<QList<QDECLAREFLAGSITEM*> > &iclassqdeclareflaglist - , const QList<QList<ENUMITEM*> > &iclassenumlist); - void assignFlagValues(QFLAGITEM* qflags, const QList<QList<QDECLAREFLAGSITEM*> > &qdeclareflagslookuplist, const QList<QList<ENUMITEM*> > &enumlookuplist); - QList<QFLAGITEM*> containsAllFlags(const QList<QFLAGITEM*> &classqflaglist, const QList<QFLAGITEM*> &iclassqflaglist); - QString getErrorMessage(QFLAGITEM* pfg); - //---> - - private: - // cache - QStringList m_includePaths; - QStringList m_frameworkPaths; - QByteArray m_definedMacros; - CppTools::Internal::CppPreprocessor* pCppPreprocessor; - QString m_strHeaderFile; - QStringList m_errormsgs; - }; -} -#endif // PARSEMANAGER_H diff --git a/src/tools/ICheck/ICheckLib/ichecklib.cpp b/src/tools/ICheck/ICheckLib/ichecklib.cpp deleted file mode 100644 index ae4cc0b8f12d149fc48098b268ef4c4be29348ba..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ichecklib.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "ichecklib.h" -#include "ParseManager.h" -#include <QtCore/QCoreApplication> -#include <QString> -#include <QStringList> -#include <iostream> -#include <QDebug> -#include <QDir> -#include <QFile> -#include <QFileInfo> -#include <QProcess> - -QStringList getQTIncludePath() -{ - QStringList ret; - QStringList processevironment = QProcess::systemEnvironment(); - foreach(QString item, processevironment){ - if(item.indexOf("QTDIR=") == 0){ - QString qtpath = item.remove("QTDIR="); - ret << qtpath + "\\include\\QtCore"; - break; - } - } - return ret; -} - -ICheckLib::ICheckLib() -: pParseManager(0) -{ -} - -void ICheckLib::ParseHeader(const QStringList& includePath, const QStringList& filelist) -{ - if(pParseManager) - delete pParseManager; - pParseManager = 0; - pParseManager = new CPlusPlus::ParseManager(); - pParseManager->setIncludePath(includePath); - pParseManager->parse(filelist); -} - -bool ICheckLib::check(const ICheckLib& ichecklib /*ICheckLib from interface header*/) -{ - if(pParseManager){ - CPlusPlus::ParseManager* cpparsemanager = ichecklib.pParseManager; - return pParseManager->checkAllMetadatas(cpparsemanager); - } - return false; -} - -QStringList ICheckLib::getErrorMsg() -{ - QStringList ret; - if(pParseManager){ - ret.append(pParseManager->getErrorMsg()); - } - else - ret << "no file was parsed."; - return ret; -} diff --git a/src/tools/ICheck/ICheckLib/ichecklib.h b/src/tools/ICheck/ICheckLib/ichecklib.h deleted file mode 100644 index 1c6644af8e627370ccc52e3803e1b6f925417c03..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ichecklib.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef ICHECKLIB_H -#define ICHECKLIB_H - -#include <QStringList> -#include "ichecklib_global.h" - -namespace CPlusPlus{ - class ParseManager; -} - -class ICHECKLIBSHARED_EXPORT ICheckLib { -public: - ICheckLib(); - void ParseHeader(const QStringList& includePath, const QStringList& filelist); - bool check(const ICheckLib& ichecklib /*ICheckLib from interface header*/); - QStringList getErrorMsg(); -private: - CPlusPlus::ParseManager* pParseManager; -}; - -#endif // ICHECKLIB_H diff --git a/src/tools/ICheck/ICheckLib/ichecklib_global.h b/src/tools/ICheck/ICheckLib/ichecklib_global.h deleted file mode 100644 index c6d6ef76d946ed9edbb43104b235c7924342683b..0000000000000000000000000000000000000000 --- a/src/tools/ICheck/ICheckLib/ichecklib_global.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef ICHECKLIB_GLOBAL_H -#define ICHECKLIB_GLOBAL_H - -#include <QtCore/qglobal.h> - -#if defined(ICHECKLIB_LIBRARY) -# define ICHECKLIBSHARED_EXPORT Q_DECL_EXPORT -#else -# define ICHECKLIBSHARED_EXPORT Q_DECL_IMPORT -#endif - -#endif // ICHECKLIB_GLOBAL_H diff --git a/src/tools/tools.pro b/src/tools/tools.pro index 017d2fd2b59cbec7f941d8f09a5755d9667151ca..e90b1d6e1710c598f3b9b45866e1a6d4e86ed0b8 100644 --- a/src/tools/tools.pro +++ b/src/tools/tools.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -win32:SUBDIRS = qtcdebugger ICheck +win32:SUBDIRS = qtcdebugger