summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-13 15:17:27 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-13 15:17:27 +0100
commit1a7855af220156f00bdbb38a5cd53f11c6f9a0fb (patch)
treef9e3ccdadc23a8a7d76581a1ce99f52a122f4af1 /src/shared/cplusplus
parentbaffd97efb1fd6da004fedf620577f8a97445793 (diff)
downloadqt-creator-1a7855af220156f00bdbb38a5cd53f11c6f9a0fb.tar.gz
Match the value of the literals.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/ASTMatcher.cpp3
-rw-r--r--src/shared/cplusplus/Literals.cpp27
-rw-r--r--src/shared/cplusplus/Literals.h4
3 files changed, 18 insertions, 16 deletions
diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp
index 47dac58232..5d137e9e9c 100644
--- a/src/shared/cplusplus/ASTMatcher.cpp
+++ b/src/shared/cplusplus/ASTMatcher.cpp
@@ -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;
}
diff --git a/src/shared/cplusplus/Literals.cpp b/src/shared/cplusplus/Literals.cpp
index 40042eb66e..078c070270 100644
--- a/src/shared/cplusplus/Literals.cpp
+++ b/src/shared/cplusplus/Literals.cpp
@@ -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());
-}
-
-
diff --git a/src/shared/cplusplus/Literals.h b/src/shared/cplusplus/Literals.h
index 2a11cdada7..7f380ed086 100644
--- a/src/shared/cplusplus/Literals.h
+++ b/src/shared/cplusplus/Literals.h
@@ -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