#ifndef SYMBOLFINDER_H #define SYMBOLFINDER_H #include "cpptools_global.h" #include #include #include #include #include #include namespace CppTools { class CPPTOOLS_EXPORT SymbolFinder { public: SymbolFinder(); CPlusPlus::Symbol *findMatchingDefinition(CPlusPlus::Symbol *symbol, const CPlusPlus::Snapshot &snapshot, bool strict = false); CPlusPlus::Class *findMatchingClassDeclaration(CPlusPlus::Symbol *declaration, const CPlusPlus::Snapshot &snapshot); void findMatchingDeclaration(const CPlusPlus::LookupContext &context, CPlusPlus::Function *functionType, QList *typeMatch, QList *argumentCountMatch, QList *nameMatch); QList findMatchingDeclaration(const CPlusPlus::LookupContext &context, CPlusPlus::Function *functionType); private: QStringList fileIterationOrder(const QString &referenceFile, const CPlusPlus::Snapshot &snapshot); void checkCacheConsistency(const QString &referenceFile, const CPlusPlus::Snapshot &snapshot); void clearCache(const QString &referenceFile, const QString &comparingFile); void insertCache(const QString &referenceFile, const QString &comparingFile); void trackCacheUse(const QString &referenceFile); static int computeKey(const QString &referenceFile, const QString &comparingFile); QHash > m_filePriorityCache; QHash > m_fileMetaCache; QStringList m_recent; }; } // namespace CppTools #endif // SYMBOLFINDER_H