aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorMax Horn2006-07-30 12:21:54 +0000
committerMax Horn2006-07-30 12:21:54 +0000
commit53f73eac8569010ccddfeebeddcdb2619b2616aa (patch)
tree542e09fc5045ea616390d07f6543dfb32845df98 /gui
parentbd49091afd55cf2663095a1882bab34496ef01f0 (diff)
downloadscummvm-rg350-53f73eac8569010ccddfeebeddcdb2619b2616aa.tar.gz
scummvm-rg350-53f73eac8569010ccddfeebeddcdb2619b2616aa.tar.bz2
scummvm-rg350-53f73eac8569010ccddfeebeddcdb2619b2616aa.zip
Added explicit string equals/hash functors to a new header common/hash-str.h; removed Hash functor specialization for String and char pointers; changed all code using hashmaps with string keys to explicitly specify whether they honor or ignore case
svn-id: r23634
Diffstat (limited to 'gui')
-rw-r--r--gui/eval.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/gui/eval.h b/gui/eval.h
index 4d960a8db1..570c4c96bd 100644
--- a/gui/eval.h
+++ b/gui/eval.h
@@ -26,6 +26,7 @@
#include "common/stdafx.h"
#include "common/str.h"
#include "common/hashmap.h"
+#include "common/hash-str.h"
namespace GUI {
@@ -68,14 +69,28 @@ public:
char *lastToken() { return _token; }
+
+ template <class Val>
+ struct CharStar_BaseNode {
+ char *_key;
+ Val _value;
+ CharStar_BaseNode() {assert(0);}
+ CharStar_BaseNode(const char *key) { _key = (char *)malloc(strlen(key)+1); strcpy(_key, key); }
+ ~CharStar_BaseNode() { free(_key); }
+ };
+
struct CharStar_EqualTo {
bool operator()(const char *x, const char *y) const { return strcmp(x, y) == 0; }
};
+ struct CharStar_Hash {
+ uint operator()(const char *x) const { return Common::hashit(x); }
+ };
+
//typedef HashMap<String, int> VariablesMap;
- typedef HashMap<const char *, int, Common::Hash<const char *>, CharStar_EqualTo> VariablesMap;
- typedef HashMap<const char *, String, Common::Hash<const char *>, CharStar_EqualTo> AliasesMap;
- typedef HashMap<const char *, String, Common::Hash<const char *>, CharStar_EqualTo> StringsMap;
+ typedef HashMap<const char *, int, CharStar_Hash, CharStar_EqualTo, CharStar_BaseNode<int> > VariablesMap;
+ typedef HashMap<const char *, String, CharStar_Hash, CharStar_EqualTo, CharStar_BaseNode<String> > AliasesMap;
+ typedef HashMap<const char *, String, CharStar_Hash, CharStar_EqualTo, CharStar_BaseNode<String> > StringsMap;
private:
enum TokenTypes {