forked from qt-creator/qt-creator
Match the value of the literals.
This commit is contained in:
@@ -57,6 +57,9 @@ bool ASTMatcher::matchToken(unsigned tokenIndex, unsigned patternTokenIndex) con
|
||||
else if (token.is(T_IDENTIFIER)) {
|
||||
if (! token.identifier->isEqualTo(otherToken.identifier))
|
||||
return false;
|
||||
} else if (token.isLiteral()) {
|
||||
if (! token.literal->isEqualTo(otherToken.literal))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -72,6 +72,19 @@ Literal::Literal(const char *chars, unsigned size)
|
||||
Literal::~Literal()
|
||||
{ delete[] _chars; }
|
||||
|
||||
bool Literal::isEqualTo(const Literal *other) const
|
||||
{
|
||||
if (! other)
|
||||
return false;
|
||||
else if (this == other)
|
||||
return true;
|
||||
else if (hashCode() != other->hashCode())
|
||||
return false;
|
||||
else if (size() != other->size())
|
||||
return false;
|
||||
return ! strcmp(chars(), other->chars());
|
||||
}
|
||||
|
||||
Literal::iterator Literal::begin() const
|
||||
{ return _chars; }
|
||||
|
||||
@@ -214,17 +227,3 @@ Identifier::Identifier(const char *chars, unsigned size)
|
||||
Identifier::~Identifier()
|
||||
{ }
|
||||
|
||||
bool Identifier::isEqualTo(const Identifier *other) const
|
||||
{
|
||||
if (! other)
|
||||
return false;
|
||||
else if (this == other)
|
||||
return true;
|
||||
else if (hashCode() != other->hashCode())
|
||||
return false;
|
||||
else if (size() != other->size())
|
||||
return false;
|
||||
return ! strcmp(chars(), other->chars());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -78,6 +78,8 @@ public:
|
||||
unsigned hashCode() const;
|
||||
static unsigned hashCode(const char *chars, unsigned size);
|
||||
|
||||
bool isEqualTo(const Literal *other) const;
|
||||
|
||||
private:
|
||||
char *_chars;
|
||||
unsigned _size;
|
||||
@@ -131,8 +133,6 @@ class CPLUSPLUS_EXPORT Identifier: public Literal
|
||||
public:
|
||||
Identifier(const char *chars, unsigned size);
|
||||
virtual ~Identifier();
|
||||
|
||||
bool isEqualTo(const Identifier *other) const;
|
||||
};
|
||||
|
||||
} // end of namespace CPlusPlus
|
||||
|
||||
Reference in New Issue
Block a user