Skip to content
Snippets Groups Projects
Commit 1a7855af authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Match the value of the literals.

parent baffd97e
No related branches found
No related tags found
No related merge requests found
...@@ -57,6 +57,9 @@ bool ASTMatcher::matchToken(unsigned tokenIndex, unsigned patternTokenIndex) con ...@@ -57,6 +57,9 @@ bool ASTMatcher::matchToken(unsigned tokenIndex, unsigned patternTokenIndex) con
else if (token.is(T_IDENTIFIER)) { else if (token.is(T_IDENTIFIER)) {
if (! token.identifier->isEqualTo(otherToken.identifier)) if (! token.identifier->isEqualTo(otherToken.identifier))
return false; return false;
} else if (token.isLiteral()) {
if (! token.literal->isEqualTo(otherToken.literal))
return false;
} }
return true; return true;
} }
......
...@@ -72,6 +72,19 @@ Literal::Literal(const char *chars, unsigned size) ...@@ -72,6 +72,19 @@ Literal::Literal(const char *chars, unsigned size)
Literal::~Literal() Literal::~Literal()
{ delete[] _chars; } { 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 Literal::iterator Literal::begin() const
{ return _chars; } { return _chars; }
...@@ -214,17 +227,3 @@ Identifier::Identifier(const char *chars, unsigned size) ...@@ -214,17 +227,3 @@ Identifier::Identifier(const char *chars, unsigned size)
Identifier::~Identifier() 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: ...@@ -78,6 +78,8 @@ public:
unsigned hashCode() const; unsigned hashCode() const;
static unsigned hashCode(const char *chars, unsigned size); static unsigned hashCode(const char *chars, unsigned size);
bool isEqualTo(const Literal *other) const;
private: private:
char *_chars; char *_chars;
unsigned _size; unsigned _size;
...@@ -131,8 +133,6 @@ class CPLUSPLUS_EXPORT Identifier: public Literal ...@@ -131,8 +133,6 @@ class CPLUSPLUS_EXPORT Identifier: public Literal
public: public:
Identifier(const char *chars, unsigned size); Identifier(const char *chars, unsigned size);
virtual ~Identifier(); virtual ~Identifier();
bool isEqualTo(const Identifier *other) const;
}; };
} // end of namespace CPlusPlus } // end of namespace CPlusPlus
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment