forked from qt-creator/qt-creator
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.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user