aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/cplusplus/LiteralTable.h
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2009-09-07 13:39:46 +0200
committerRoberto Raggi <[email protected]>2009-09-23 16:52:41 +0200
commit6c347a12c66793db50bb180b3a0ad2ea8c38f6f9 (patch)
tree041e3eff4b52cabc36643f85d59d8cfd3659c878 /src/shared/cplusplus/LiteralTable.h
parent8848be4caae3e7bbdb3a7cee7949336990a46941 (diff)
Introduced LiteralTable::findLiteral() and Control::findIdentifier()
Diffstat (limited to 'src/shared/cplusplus/LiteralTable.h')
-rw-r--r--src/shared/cplusplus/LiteralTable.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/shared/cplusplus/LiteralTable.h b/src/shared/cplusplus/LiteralTable.h
index 67d074eca63..64fd2e1dac5 100644
--- a/src/shared/cplusplus/LiteralTable.h
+++ b/src/shared/cplusplus/LiteralTable.h
@@ -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);