[Scummvm-cvs-logs] SF.net SVN: scummvm: [24044] scummvm/trunk/gui

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sat Sep 30 20:57:43 CEST 2006


Revision: 24044
          http://svn.sourceforge.net/scummvm/?rev=24044&view=rev
Author:   fingolfin
Date:     2006-09-30 11:57:36 -0700 (Sat, 30 Sep 2006)

Log Message:
-----------
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

Modified Paths:
--------------
    scummvm/trunk/gui/ThemeNew.cpp
    scummvm/trunk/gui/eval.cpp
    scummvm/trunk/gui/eval.h

Modified: scummvm/trunk/gui/ThemeNew.cpp
===================================================================
--- scummvm/trunk/gui/ThemeNew.cpp	2006-09-30 18:55:38 UTC (rev 24043)
+++ scummvm/trunk/gui/ThemeNew.cpp	2006-09-30 18:57:36 UTC (rev 24044)
@@ -1265,7 +1265,7 @@
 		_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])

Modified: scummvm/trunk/gui/eval.cpp
===================================================================
--- scummvm/trunk/gui/eval.cpp	2006-09-30 18:55:38 UTC (rev 24043)
+++ scummvm/trunk/gui/eval.cpp	2006-09-30 18:57:36 UTC (rev 24044)
@@ -302,22 +302,22 @@
 	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;
 

Modified: scummvm/trunk/gui/eval.h
===================================================================
--- scummvm/trunk/gui/eval.h	2006-09-30 18:55:38 UTC (rev 24043)
+++ scummvm/trunk/gui/eval.h	2006-09-30 18:57:36 UTC (rev 24044)
@@ -48,50 +48,28 @@
 
 	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 Common::String &name) { return _strings[name]; }
 
-	const String &getStringVar(const char *name) { return _strings[name]; }
-
 	uint getNumVars() { return _vars.size(); }
 
 	void reset();
 
 	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); }
-	};
+	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;
 
-	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;
-
 private:
 	enum TokenTypes {
 		tNone,
@@ -120,7 +98,7 @@
 	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();
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list