forked from qt-creator/qt-creator
Introduced LiteralTable::findLiteral() and Control::findIdentifier()
This commit is contained in:
@@ -582,6 +582,9 @@ DiagnosticClient *Control::diagnosticClient() const
|
||||
void Control::setDiagnosticClient(DiagnosticClient *diagnosticClient)
|
||||
{ d->diagnosticClient = diagnosticClient; }
|
||||
|
||||
Identifier *Control::findIdentifier(const char *chars, unsigned size) const
|
||||
{ return d->identifiers.findLiteral(chars, size); }
|
||||
|
||||
Identifier *Control::findOrInsertIdentifier(const char *chars, unsigned size)
|
||||
{ return d->identifiers.findOrInsertLiteral(chars, size); }
|
||||
|
||||
|
||||
@@ -166,6 +166,8 @@ public:
|
||||
/// Creates a new Objective-C method symbol.
|
||||
ObjCMethod *newObjCMethod(unsigned sourceLocation, Name *name = 0);
|
||||
|
||||
Identifier *findIdentifier(const char *chars, unsigned size) const;
|
||||
|
||||
Identifier *findOrInsertIdentifier(const char *chars, unsigned size);
|
||||
Identifier *findOrInsertIdentifier(const char *chars);
|
||||
|
||||
|
||||
@@ -101,7 +101,21 @@ public:
|
||||
iterator end() const
|
||||
{ return _literals + _literalCount + 1; }
|
||||
|
||||
_Literal *findOrInsertLiteral(const char *chars, unsigned size)
|
||||
_Literal *findLiteral(const char *chars, unsigned size) const
|
||||
{
|
||||
if (_buckets) {
|
||||
unsigned h = _Literal::hashCode(chars, size);
|
||||
_Literal *literal = _buckets[h % _allocatedBuckets];
|
||||
for (; literal; literal = static_cast<_Literal *>(literal->_next)) {
|
||||
if (literal->size() == size && ! std::strncmp(literal->chars(), chars, size))
|
||||
return literal;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
_Literal *findOrInsertLiteral(const char *chars, unsigned size)
|
||||
{
|
||||
if (_buckets) {
|
||||
unsigned h = _Literal::hashCode(chars, size);
|
||||
|
||||
Reference in New Issue
Block a user