summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/TokenCache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/cplusplus/TokenCache.h')
-rw-r--r--src/libs/cplusplus/TokenCache.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/libs/cplusplus/TokenCache.h b/src/libs/cplusplus/TokenCache.h
new file mode 100644
index 0000000000..0e75e08d73
--- /dev/null
+++ b/src/libs/cplusplus/TokenCache.h
@@ -0,0 +1,39 @@
+#ifndef TOKENCACHE_H
+#define TOKENCACHE_H
+
+#include <CPlusPlusForwardDeclarations.h>
+#include <cplusplus/SimpleLexer.h>
+
+#include <QtCore/QHash>
+#include <QtCore/QList>
+
+#include <QtGui/QTextBlock>
+#include <QtGui/QTextCursor>
+#include <QtGui/QTextDocument>
+
+namespace CPlusPlus {
+
+class CPLUSPLUS_EXPORT TokenCache
+{
+public:
+ TokenCache();
+
+ void setDocument(QTextDocument *doc);
+
+ QList<CPlusPlus::SimpleToken> tokensForBlock(const QTextBlock &block) const;
+ CPlusPlus::SimpleToken tokenUnderCursor(const QTextCursor &cursor) const;
+
+ QString text(const QTextBlock &block, int tokenIndex) const;
+
+ static int previousBlockState(const QTextBlock &block);
+
+private:
+ QTextDocument *m_doc;
+
+ mutable int m_revision;
+ mutable QHash<int, QList<CPlusPlus::SimpleToken> > m_tokensByBlock;
+};
+
+} // namespace CPlusPlus
+
+#endif // TOKENCACHE_H