diff options
author | Max Horn | 2006-09-30 18:57:36 +0000 |
---|---|---|
committer | Max Horn | 2006-09-30 18:57:36 +0000 |
commit | 5b22991f345cf4ea01144af8e23419de97f63f46 (patch) | |
tree | d2f95a78e5ac027a9940d12609fcbf80b3f1b0f0 | |
parent | a6c3257c5ebbdc81f721cb731b732cf02213f248 (diff) | |
download | scummvm-rg350-5b22991f345cf4ea01144af8e23419de97f63f46.tar.gz scummvm-rg350-5b22991f345cf4ea01144af8e23419de97f63f46.tar.bz2 scummvm-rg350-5b22991f345cf4ea01144af8e23419de97f63f46.zip |
Get rid of CharStar_BaseNode and consorts -- using a simple String is more efficient, now that it has optimizations for small strings. Also made various related changes, turning char pointers into String objects in several spots
svn-id: r24044
-rw-r--r-- | gui/ThemeNew.cpp | 2 | ||||
-rw-r--r-- | gui/eval.cpp | 10 | ||||
-rw-r--r-- | gui/eval.h | 42 |
3 files changed, 16 insertions, 38 deletions
diff --git a/gui/ThemeNew.cpp b/gui/ThemeNew.cpp index 3033f54e3b..cd03ded318 100644 --- a/gui/ThemeNew.cpp +++ b/gui/ThemeNew.cpp @@ -1265,7 +1265,7 @@ void ThemeNew::setupFont(const String &key, const String &name, FontStyle style) _fonts[style] = FontMan.getFontByName(name); if (!_fonts[style]) { - Common::String temp(_evaluator->getStringVar(key.c_str())); + Common::String temp(_evaluator->getStringVar(key)); _fonts[style] = loadFont(temp.c_str()); if (!_fonts[style]) diff --git a/gui/eval.cpp b/gui/eval.cpp index 89dd827f76..773770b5be 100644 --- a/gui/eval.cpp +++ b/gui/eval.cpp @@ -302,22 +302,22 @@ int Eval::getBuiltinVar(const char *s) { return EVAL_UNDEF_VAR; } -int Eval::getVar_(const char *s, bool includeAliases) { +int Eval::getVar_(const Common::String &s, bool includeAliases) { int val; - val = getBuiltinVar(s); + val = getBuiltinVar(s.c_str()); if (val != EVAL_UNDEF_VAR) return val; - const char *var = s; + const Common::String *var = &s; if (includeAliases) { AliasesMap::const_iterator itera = _aliases.find(s); if (itera != _aliases.end()) - var = itera->_value.c_str(); + var = &(itera->_value); } - VariablesMap::const_iterator iterv = _vars.find(var); + VariablesMap::const_iterator iterv = _vars.find(*var); if (iterv != _vars.end()) return iterv->_value; diff --git a/gui/eval.h b/gui/eval.h index 570c4c96bd..7db048809b 100644 --- a/gui/eval.h +++ b/gui/eval.h @@ -48,20 +48,17 @@ public: void setParent(const String &name); - void setVar(const String &name, int val) { _vars[name.c_str()] = val; } - void setStringVar(const String &name, const String &val) { _strings[name.c_str()] = val; } - void setAlias(const char *name, const String &val) { _aliases[name] = val; } + void setVar(const String &name, int val) { _vars[name] = val; } + void setStringVar(const String &name, const String &val) { _strings[name] = val; } + void setAlias(const Common::String &name, const String &val) { _aliases[name] = val; } - int getVar(const char *s) { return getVar_(s); } - int getVar(const char *s, int def) { + int getVar(const Common::String &s) { return getVar_(s); } + int getVar(const Common::String &s, int def) { int val = getVar_(s); return (val == EVAL_UNDEF_VAR) ? def : val; } - int getVar(const String &s) { return getVar(s.c_str()); } - int getVar(const String &s, int def) { return getVar(s.c_str(), def); } - - const String &getStringVar(const char *name) { return _strings[name]; } + const String &getStringVar(const Common::String &name) { return _strings[name]; } uint getNumVars() { return _vars.size(); } @@ -69,28 +66,9 @@ 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, 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; + typedef HashMap<String, int, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> VariablesMap; + typedef HashMap<String, String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> AliasesMap; + typedef HashMap<String, String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> StringsMap; private: enum TokenTypes { @@ -120,7 +98,7 @@ private: void arith(char op, int *r, int *h); void unary(char op, int *r); void exprError(EvalErrors error); - int getVar_(const char *s, bool includeAliases = true); + int getVar_(const Common::String &s, bool includeAliases = true); int getBuiltinVar(const char *s); void loadConstants(); |