diff options
author | Leandro Melo <leandro.melo@nokia.com> | 2011-04-15 16:19:23 +0200 |
---|---|---|
committer | Leandro Melo <leandro.melo@nokia.com> | 2011-05-18 10:46:20 +0200 |
commit | bec4f02495b97b17e0b0f8cb67d0909634c16228 (patch) | |
tree | 21759e0b9ebc6b0dca84f01875223020665d7843 /src/plugins/cpptools/cppcodecompletion.h | |
parent | d835b769c7d6b37e59a8a74a0d68260d34e7a7f9 (diff) | |
download | qt-creator-bec4f02495b97b17e0b0f8cb67d0909634c16228.tar.gz |
New code assist API
This is a re-work of our completion engine. Primary goals are:
- Allow the computation to run in a separate thread so the GUI is not locked.
- Support a model-based approach. QStrings are still needed (filtering, etc), but
internal structures are free to use more efficient representations.
- Unifiy all kinds of *assist* into a more reusable and extensible framework.
- Remove unnecessary dependencies on the text editor so we have more generic
and easily "plugable" components (still things to be resolved).
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.h')
-rw-r--r-- | src/plugins/cpptools/cppcodecompletion.h | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h deleted file mode 100644 index 8d14095f83..0000000000 --- a/src/plugins/cpptools/cppcodecompletion.h +++ /dev/null @@ -1,175 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (info@qt.nokia.com) -** -** -** GNU Lesser General Public License Usage -** -** 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. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** Other Usage -** -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** If you have questions regarding the use of this file, please contact -** Nokia at info@qt.nokia.com. -** -**************************************************************************/ - -#ifndef CPPCODECOMPLETION_H -#define CPPCODECOMPLETION_H - -#include <ASTfwd.h> -#include <FullySpecifiedType.h> -#include <cplusplus/Icons.h> -#include <cplusplus/Overview.h> -#include <cplusplus/TypeOfExpression.h> - -#include <texteditor/icompletioncollector.h> -#include <texteditor/snippets/snippetcollector.h> - -#include <QtCore/QObject> -#include <QtCore/QPointer> - -QT_BEGIN_NAMESPACE -class QTextCursor; -QT_END_NAMESPACE - -namespace TextEditor { -class ITextEditor; -class BaseTextEditorWidget; -} - -namespace CPlusPlus { -class LookupItem; -class ClassOrNamespace; -} - -namespace CppTools { -namespace Internal { - -class CppModelManager; -class FunctionArgumentWidget; - -class CppCodeCompletion : public TextEditor::ICompletionCollector -{ - Q_OBJECT -public: - explicit CppCodeCompletion(CppModelManager *manager); - - void setObjcEnabled(bool objcEnabled) - { m_objcEnabled = objcEnabled; } - - TextEditor::ITextEditor *editor() const; - int startPosition() const; - bool shouldRestartCompletion(); - QList<TextEditor::CompletionItem> getCompletions(); - bool supportsEditor(TextEditor::ITextEditor *editor) const; - bool supportsPolicy(TextEditor::CompletionPolicy policy) const; - bool triggersCompletion(TextEditor::ITextEditor *editor); - int startCompletion(TextEditor::ITextEditor *editor); - void completions(QList<TextEditor::CompletionItem> *completions); - - bool typedCharCompletes(const TextEditor::CompletionItem &item, QChar typedChar); - void complete(const TextEditor::CompletionItem &item, QChar typedChar); - bool partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems); - void cleanup(); - - QIcon iconForSymbol(CPlusPlus::Symbol *symbol) const; - -private: - void addSnippets(); - void addKeywords(); - void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot); - void addMacros_helper(const CPlusPlus::Snapshot &snapshot, - const QString &fileName, - QSet<QString> *processed, - QSet<QString> *definedMacros); - void addCompletionItem(CPlusPlus::Symbol *symbol); - - bool completeInclude(const QTextCursor &cursor); - void completePreprocessor(); - - void globalCompletion(CPlusPlus::Scope *scope); - - bool completeConstructorOrFunction(const QList<CPlusPlus::LookupItem> &results, - int endOfExpression, bool toolTipOnly); - - bool completeMember(const QList<CPlusPlus::LookupItem> &results); - bool completeScope(const QList<CPlusPlus::LookupItem> &results); - - void completeNamespace(CPlusPlus::ClassOrNamespace *binding); - - void completeClass(CPlusPlus::ClassOrNamespace *b, - bool staticLookup = true); - - bool completeConstructors(CPlusPlus::Class *klass); - - bool completeQtMethod(const QList<CPlusPlus::LookupItem> &results, - bool wantSignals); - - bool completeSignal(const QList<CPlusPlus::LookupItem> &results) - { return completeQtMethod(results, true); } - - bool completeSlot(const QList<CPlusPlus::LookupItem> &results) - { return completeQtMethod(results, false); } - - int findStartOfName(int pos = -1) const; - - int startCompletionHelper(TextEditor::ITextEditor *editor); - - int startCompletionInternal(TextEditor::BaseTextEditorWidget *edit, - const QString fileName, - unsigned line, unsigned column, - const QString &expression, - int endOfExpression); - - QList<TextEditor::CompletionItem> removeDuplicates(const QList<TextEditor::CompletionItem> &items); - -private: - void completeObjCMsgSend(CPlusPlus::ClassOrNamespace *binding, - bool staticClassAccess); - bool tryObjCCompletion(TextEditor::BaseTextEditorWidget *edit); - bool objcKeywordsWanted() const; - - static QStringList preprocessorCompletions; - - CppModelManager *m_manager; - TextEditor::ITextEditor *m_editor; - int m_startPosition; // Position of the cursor from which completion started - bool m_shouldRestartCompletion; - - bool m_automaticCompletion; - unsigned m_completionOperator; - bool m_objcEnabled; - - TextEditor::SnippetCollector m_snippetProvider; - - CPlusPlus::Icons m_icons; - CPlusPlus::Overview overview; - CPlusPlus::TypeOfExpression typeOfExpression; - QPointer<FunctionArgumentWidget> m_functionArgumentWidget; - - QList<TextEditor::CompletionItem> m_completions; -}; - -} // namespace Internal -} // namespace CppTools - -Q_DECLARE_METATYPE(CPlusPlus::Symbol *) - -#endif // CPPCODECOMPLETION_H |