diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-02-23 12:49:56 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-02-23 12:49:56 +0100 |
commit | 1c063f6953fe61c078e665a4774ef04623cee95d (patch) | |
tree | fc710c40c6310dc6f07aa8bbb8262b44b8780c85 /src/libs | |
parent | c8bdd0bee4325ff50216fc39da2c9dfa8219cb56 (diff) | |
download | qt-creator-1c063f6953fe61c078e665a4774ef04623cee95d.tar.gz |
Alternative implementation of the indexer. It is a little bit slower, but I'm going to make it faster.
Unfortunately the refactoring of the indexer is kind of necessary. I need to merge the new binding pass.
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/cplusplus/PreprocessorEnvironment.cpp | 24 | ||||
-rw-r--r-- | src/libs/cplusplus/PreprocessorEnvironment.h | 4 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libs/cplusplus/PreprocessorEnvironment.cpp b/src/libs/cplusplus/PreprocessorEnvironment.cpp index 930e4b3a6c..5d52e6e53f 100644 --- a/src/libs/cplusplus/PreprocessorEnvironment.cpp +++ b/src/libs/cplusplus/PreprocessorEnvironment.cpp @@ -117,6 +117,13 @@ Macro *Environment::bind(const Macro &__macro) return m; } +void Environment::addMacros(const QList<Macro> ¯os) +{ + foreach (const Macro ¯o, macros) { + bind(macro); + } +} + Macro *Environment::remove(const QByteArray &name) { Macro macro; @@ -127,6 +134,23 @@ Macro *Environment::remove(const QByteArray &name) return bind(macro); } +void Environment::reset() +{ + if (_macros) { + qDeleteAll(firstMacro(), lastMacro()); + free(_macros); + } + + if (_hash) + free(_hash); + + _macros = 0; + _allocated_macros = 0; + _macro_count = -1; + _hash = 0; + _hash_count = 401; +} + bool Environment::isBuiltinMacro(const QByteArray &s) const { if (s.length() != 8) diff --git a/src/libs/cplusplus/PreprocessorEnvironment.h b/src/libs/cplusplus/PreprocessorEnvironment.h index 7f712cd49c..9e0163cfb6 100644 --- a/src/libs/cplusplus/PreprocessorEnvironment.h +++ b/src/libs/cplusplus/PreprocessorEnvironment.h @@ -56,6 +56,7 @@ #include "CPlusPlusForwardDeclarations.h" #include <QVector> +#include <QList> #include <QByteArray> namespace CPlusPlus { @@ -89,6 +90,9 @@ public: Macro **lastMacro() { return _macros + _macro_count + 1; } + void reset(); + void addMacros(const QList<Macro> ¯os); + private: static unsigned hashCode(const QByteArray &s); void rehash(); |