fix cr/lfs and remove trailing whitespaces...
[supertux.git] / src / squirrel / squirrel / sqtable.h
index be66843..742074f 100644 (file)
@@ -1,89 +1,89 @@
-/*     see copyright notice in squirrel.h */\r
-#ifndef _SQTABLE_H_\r
-#define _SQTABLE_H_\r
-/*\r
-* The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.)\r
-* http://www.lua.org/copyright.html#4\r
-* http://www.lua.org/source/4.0.1/src_ltable.c.html\r
-*/\r
-\r
-#include "sqstring.h"\r
-\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
-       };\r
-       _HashNode *_firstfree;\r
-       _HashNode *_nodes;\r
-       SQInteger _numofnodes;\r
-       SQInteger _usednodes;\r
-       \r
-///////////////////////////\r
-       void AllocNodes(SQInteger nSize);\r
-       void Rehash(bool force);\r
-       SQTable(SQSharedState *ss, SQInteger nInitialSize);\r
-public:\r
-       static SQTable* Create(SQSharedState *ss,SQInteger nInitialSize)\r
-       {\r
-               SQTable *newtable = (SQTable*)SQ_MALLOC(sizeof(SQTable));\r
-               new (newtable) SQTable(ss, nInitialSize);\r
-               newtable->_delegate = NULL;\r
-               return newtable;\r
-       }\r
-       void Finalize();\r
-       SQTable *Clone();\r
-       ~SQTable()\r
-       {\r
-               SetDelegate(NULL);\r
-               REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this);\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 _HashNode *_Get(const SQObjectPtr &key,SQHash hash)\r
-       {\r
-               _HashNode *n = &_nodes[hash];\r
-               do{\r
-                       if(_rawval(n->key) == _rawval(key) && type(n->key) == type(key)){\r
-                               return n;\r
-                       }\r
-               }while((n = n->next));\r
-               return NULL;\r
-       }\r
-       bool Get(const SQObjectPtr &key,SQObjectPtr &val);\r
-       void Remove(const SQObjectPtr &key);\r
-       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
-       SQInteger Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);\r
-       \r
-       SQInteger CountUsed(){ return _usednodes;}\r
-       void Release()\r
-       {\r
-               sq_delete(this, SQTable);\r
-       }\r
-       \r
-};\r
-\r
-#endif //_SQTABLE_H_\r
+/*     see copyright notice in squirrel.h */
+#ifndef _SQTABLE_H_
+#define _SQTABLE_H_
+/*
+* The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.)
+* http://www.lua.org/copyright.html#4
+* http://www.lua.org/source/4.0.1/src_ltable.c.html
+*/
+
+#include "sqstring.h"
+
+
+#define hashptr(p)  ((SQHash)(((SQInteger)p) >> 3))
+
+inline SQHash HashObj(const SQObjectPtr &key)
+{
+       switch(type(key)) {
+               case OT_STRING:         return _string(key)->_hash;
+               case OT_FLOAT:          return (SQHash)((SQInteger)_float(key));
+               case OT_BOOL: case OT_INTEGER:  return (SQHash)((SQInteger)_integer(key));
+               default:                        return hashptr(key._unVal.pRefCounted);
+       }
+}
+
+struct SQTable : public SQDelegable
+{
+private:
+       struct _HashNode
+       {
+               _HashNode() { next = NULL; }
+               SQObjectPtr val;
+               SQObjectPtr key;
+               _HashNode *next;
+       };
+       _HashNode *_firstfree;
+       _HashNode *_nodes;
+       SQInteger _numofnodes;
+       SQInteger _usednodes;
+
+///////////////////////////
+       void AllocNodes(SQInteger nSize);
+       void Rehash(bool force);
+       SQTable(SQSharedState *ss, SQInteger nInitialSize);
+public:
+       static SQTable* Create(SQSharedState *ss,SQInteger nInitialSize)
+       {
+               SQTable *newtable = (SQTable*)SQ_MALLOC(sizeof(SQTable));
+               new (newtable) SQTable(ss, nInitialSize);
+               newtable->_delegate = NULL;
+               return newtable;
+       }
+       void Finalize();
+       SQTable *Clone();
+       ~SQTable()
+       {
+               SetDelegate(NULL);
+               REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this);
+               for (SQInteger i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode();
+               SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode));
+       }
+#ifndef NO_GARBAGE_COLLECTOR
+       void Mark(SQCollectable **chain);
+#endif
+       inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash)
+       {
+               _HashNode *n = &_nodes[hash];
+               do{
+                       if(_rawval(n->key) == _rawval(key) && type(n->key) == type(key)){
+                               return n;
+                       }
+               }while((n = n->next));
+               return NULL;
+       }
+       bool Get(const SQObjectPtr &key,SQObjectPtr &val);
+       void Remove(const SQObjectPtr &key);
+       bool Set(const SQObjectPtr &key, const SQObjectPtr &val);
+       //returns true if a new slot has been created false if it was already present
+       bool NewSlot(const SQObjectPtr &key,const SQObjectPtr &val);
+       SQInteger Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
+
+       SQInteger CountUsed(){ return _usednodes;}
+       void Release()
+       {
+               sq_delete(this, SQTable);
+       }
+
+};
+
+#endif //_SQTABLE_H_