summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/TokenCache.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-06-07 13:06:21 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-06-14 10:10:05 +0200
commite42ca194c53b8286447c7750feb8c7497c88e698 (patch)
treeab99d8feb411815c51f9d9a2b119aedd1a41244f /src/libs/cplusplus/TokenCache.h
parent2e1001621042a5704e504821fd5677733ffd9167 (diff)
downloadqt-creator-e42ca194c53b8286447c7750feb8c7497c88e698.tar.gz
Introduced token caching to prevent repetetive tokenizing.
Also removed TokenUnderCursor as it's functionality is in the token cache. Reviewed-by: ckamm
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