this shouldn't be in svn
[supertux.git] / src / squirrel / squirrel / sqtable.h
index 141261f..be66843 100644 (file)
@@ -9,13 +9,25 @@
 \r
 #include "sqstring.h"\r
 \r
-#define hashptr(p)  (((SQHash)(p)) >> 3)\r
+\r
+#define hashptr(p)  ((SQHash)(((SQInteger)p) >> 3))\r
+\r
+inline SQHash HashObj(const SQObjectPtr &key)\r
+{\r
+       switch(type(key)) {\r
+               case OT_STRING:         return _string(key)->_hash;\r
+               case OT_FLOAT:          return (SQHash)((SQInteger)_float(key));\r
+               case OT_BOOL: case OT_INTEGER:  return (SQHash)((SQInteger)_integer(key));\r
+               default:                        return hashptr(key._unVal.pRefCounted);\r
+       }\r
+}\r
 \r
 struct SQTable : public SQDelegable \r
 {\r
 private:\r
        struct _HashNode\r
        {\r
+               _HashNode() { next = NULL; }\r
                SQObjectPtr val;\r
                SQObjectPtr key;\r
                _HashNode *next;\r
@@ -49,15 +61,6 @@ public:
 #ifndef NO_GARBAGE_COLLECTOR \r
        void Mark(SQCollectable **chain);\r
 #endif\r
-       inline SQHash HashKey(const SQObjectPtr &key)\r
-       {\r
-               switch(type(key)){\r
-                       case OT_STRING:         return _string(key)->_hash;\r
-                       case OT_FLOAT:          return (SQHash)((SQInteger)_float(key));\r
-                       case OT_INTEGER:        return (SQHash)((SQInteger)_integer(key));\r
-                       default:                        return hashptr(key._unVal.pRefCounted);\r
-               }\r
-       }\r
        inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash)\r
        {\r
                _HashNode *n = &_nodes[hash];\r
@@ -65,7 +68,7 @@ public:
                        if(_rawval(n->key) == _rawval(key) && type(n->key) == type(key)){\r
                                return n;\r
                        }\r
-               }while(n = n->next);\r
+               }while((n = n->next));\r
                return NULL;\r
        }\r
        bool Get(const SQObjectPtr &key,SQObjectPtr &val);\r