Made Mr_Tree graphic smaller, from 99 to 85 pixels.
[supertux.git] / src / squirrel / squirrel / sqtable.h
index b27b7d3..8d90f7b 100644 (file)
@@ -9,7 +9,7 @@
 \r
 #include "sqstring.h"\r
 \r
-#define hashptr(p)  (((unsigned long)(p)) >> 3)\r
+#define hashptr(p)  (((SQHash)(reinterpret_cast<long>(p))) >> 3)\r
 \r
 struct SQTable : public SQDelegable \r
 {\r
@@ -22,15 +22,15 @@ private:
        };\r
        _HashNode *_firstfree;\r
        _HashNode *_nodes;\r
-       int _numofnodes;\r
-       int _usednodes;\r
+       SQInteger _numofnodes;\r
+       SQInteger _usednodes;\r
        \r
 ///////////////////////////\r
-       void AllocNodes(int nSize);\r
+       void AllocNodes(SQInteger nSize);\r
        void Rehash(bool force);\r
-       SQTable(SQSharedState *ss, int nInitialSize);\r
+       SQTable(SQSharedState *ss, SQInteger nInitialSize);\r
 public:\r
-       static SQTable* Create(SQSharedState *ss,int nInitialSize)\r
+       static SQTable* Create(SQSharedState *ss,SQInteger nInitialSize)\r
        {\r
                SQTable *newtable = (SQTable*)SQ_MALLOC(sizeof(SQTable));\r
                new (newtable) SQTable(ss, nInitialSize);\r
@@ -43,22 +43,22 @@ public:
        {\r
                SetDelegate(NULL);\r
                REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this);\r
-               for (int i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode();\r
+               for (SQInteger i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode();\r
                SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode));\r
        }\r
 #ifndef NO_GARBAGE_COLLECTOR \r
        void Mark(SQCollectable **chain);\r
 #endif\r
-       inline unsigned long HashKey(const SQObjectPtr &key)\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 (unsigned long)((long)_float(key));\r
-                       case OT_INTEGER:        return (unsigned long)((long)_integer(key));\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
-       _HashNode *_Get(const SQObjectPtr &key,unsigned long hash)\r
+       inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash)\r
        {\r
                _HashNode *n = &_nodes[hash];\r
                do{\r
@@ -73,16 +73,14 @@ public:
        bool Set(const SQObjectPtr &key, const SQObjectPtr &val);\r
        //returns true if a new slot has been created false if it was already present\r
        bool NewSlot(const SQObjectPtr &key,const SQObjectPtr &val);\r
-       int Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);\r
+       SQInteger Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);\r
        \r
-       int CountUsed();\r
+       SQInteger CountUsed(){ return _usednodes;}\r
        void Release()\r
        {\r
                sq_delete(this, SQTable);\r
        }\r
-       bool SetDelegate(SQTable *mt);\r
        \r
-\r
 };\r
 \r
 #endif //_SQTABLE_H_\r