diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-01-06 15:28:21 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-01-13 07:13:27 +0000 |
commit | 0e7774e75dc74e9599fb5100c3c9c54187c56aa8 (patch) | |
tree | 0912520ce956080d0fb48cda1003a459780d3298 /src/plugins/cpptools/cppelementevaluator.h | |
parent | 661193f67be29ff3898fd7856ea1884d5e6bb349 (diff) | |
download | qt-creator-0e7774e75dc74e9599fb5100c3c9c54187c56aa8.tar.gz |
Refactor CppElementEvaluator
Separate the use of CppElementEvaluator for CppHoverHandler from
the use for CppTypeHierarchyWidget. They are in fact much
different things.
Fix CppHoverHandler (enabled when ClangCodeModel plugin is disabled)
showing tooltips for symbols other than class or template.
Fix CppHoverHandler showing full template arguments for typedefs.
Change-Id: I5c44016014749d0d958b91a9a1ee9b35d3ea5eaa
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppelementevaluator.h')
-rw-r--r-- | src/plugins/cpptools/cppelementevaluator.h | 49 |
1 files changed, 8 insertions, 41 deletions
diff --git a/src/plugins/cpptools/cppelementevaluator.h b/src/plugins/cpptools/cppelementevaluator.h index 51c4ce28ff..c0d8374759 100644 --- a/src/plugins/cpptools/cppelementevaluator.h +++ b/src/plugins/cpptools/cppelementevaluator.h @@ -39,6 +39,8 @@ #include <QStringList> #include <QTextCursor> +#include <functional> + namespace CPlusPlus { class LookupItem; class LookupContext; @@ -48,19 +50,18 @@ namespace CppTools { class CppElement; class CppModelManager; -class CPPTOOLS_EXPORT CppElementEvaluator +class CPPTOOLS_EXPORT CppElementEvaluator final { public: explicit CppElementEvaluator(TextEditor::TextEditorWidget *editor); + ~CppElementEvaluator(); void setTextCursor(const QTextCursor &tc); - void setLookupBaseClasses(const bool lookup); - void setLookupDerivedClasses(const bool lookup); - void setExpression(const QString &expression, const QString &fileName); void execute(); - QFuture<QSharedPointer<CppElement>> asyncExecute(); - QFuture<QSharedPointer<CppElement>> asyncExpressionExecute(); + static QFuture<QSharedPointer<CppElement>> asyncExecute(TextEditor::TextEditorWidget *editor); + static QFuture<QSharedPointer<CppElement>> asyncExecute(const QString &expression, + const QString &fileName); bool identifiedCppElement() const; const QSharedPointer<CppElement> &cppElement() const; bool hasDiagnosis() const; @@ -69,41 +70,7 @@ public: static Utils::Link linkFromExpression(const QString &expression, const QString &fileName); private: - void clear(); - using ExecFunction = QFuture<QSharedPointer<CppElement>>(CppElementEvaluator::*) - (const CPlusPlus::Snapshot &, const CPlusPlus::LookupItem &, - const CPlusPlus::LookupContext &); - using SourceFunction = bool(CppElementEvaluator::*) - (const CPlusPlus::Snapshot &, CPlusPlus::Document::Ptr &, - CPlusPlus::Scope **, QString &); - - QFuture<QSharedPointer<CppElement>> execute(SourceFunction sourceFunction, - ExecFunction execFuntion); - QFuture<QSharedPointer<CppElement>> syncExec(const CPlusPlus::Snapshot &, - const CPlusPlus::LookupItem &, const CPlusPlus::LookupContext &); - QFuture<QSharedPointer<CppElement>> asyncExec(const CPlusPlus::Snapshot &, - const CPlusPlus::LookupItem &, const CPlusPlus::LookupContext &); - bool sourceDataFromGui(const CPlusPlus::Snapshot &snapshot, - CPlusPlus::Document::Ptr &doc, - CPlusPlus::Scope **scope, - QString &expression); - bool sourceDataFromExpression(const CPlusPlus::Snapshot &snapshot, - CPlusPlus::Document::Ptr &doc, - CPlusPlus::Scope **scope, - QString &expression); - void checkDiagnosticMessage(int pos); - bool matchIncludeFile(const CPlusPlus::Document::Ptr &document, int line); - bool matchMacroInUse(const CPlusPlus::Document::Ptr &document, int pos); - - TextEditor::TextEditorWidget *m_editor; - CppTools::CppModelManager *m_modelManager; - QTextCursor m_tc; - QString m_expression; - QString m_fileName; - bool m_lookupBaseClasses; - bool m_lookupDerivedClasses; - QSharedPointer<CppElement> m_element; - QString m_diagnosis; + class CppElementEvaluatorPrivate *d; }; class CppClass; |