action, model: add ASSERT(), not NULL checks
[model-checker.git] / hashtable.h
index 6bf813520f505bdb6799f9e2e619510df6e1b7ed..5b0086f24282393b47cdb15ac9377ba3928b8178 100644 (file)
@@ -109,7 +109,7 @@ template<typename _Key, typename _Val, typename _KeyInt, int _Shift = 0, void *
 
                unsigned int index = ((_KeyInt)key) >> _Shift;
                do {
-                       index = index & capacitymask;
+                       index &= capacitymask;
                        search = &table[index];
                        if (search->key == key) {
                                search->val = val;
@@ -124,32 +124,30 @@ template<typename _Key, typename _Val, typename _KeyInt, int _Shift = 0, void *
        }
 
        /** Lookup the corresponding value for the given key. */
-       _Val get(_Key key) {
+       _Val get(_Key key) const {
                struct hashlistnode<_Key, _Val> *search;
 
                unsigned int index = ((_KeyInt)key) >> _Shift;
                do {
-                       index = index&capacitymask;
+                       index &= capacitymask;
                        search = &table[index];
-                       if (search->key == key) {
+                       if (search->key == key)
                                return search->val;
-                       }
                        index++;
                } while (search->key);
-               return (_Val) 0;
+               return (_Val)0;
        }
 
        /** Check whether the table contains a value for the given key. */
-       bool contains(_Key key) {
+       bool contains(_Key key) const {
                struct hashlistnode<_Key, _Val> *search;
 
                unsigned int index = ((_KeyInt)key) >> _Shift;
                do {
-                       index = index & capacitymask;
+                       index &= capacitymask;
                        search = &table[index];
-                       if (search->key == key) {
+                       if (search->key == key)
                                return true;
-                       }
                        index++;
                } while (search->key);
                return false;
@@ -161,16 +159,16 @@ template<typename _Key, typename _Val, typename _KeyInt, int _Shift = 0, void *
                struct hashlistnode<_Key, _Val> *newtable;
                unsigned int oldcapacity = capacity;
 
-               if ((newtable = (struct hashlistnode<_Key, _Val> *) _calloc(newsize, sizeof(struct hashlistnode<_Key, _Val>))) == NULL) {
-                       model_print("Calloc error %s %d\n", __FILE__, __LINE__);
-                       exit(-1);
+               if ((newtable = (struct hashlistnode<_Key, _Val> *)_calloc(newsize, sizeof(struct hashlistnode<_Key, _Val>))) == NULL) {
+                       model_print("calloc error %s %d\n", __FILE__, __LINE__);
+                       exit(EXIT_FAILURE);
                }
 
-               table = newtable;          //Update the global hashtable upon resize()
+               table = newtable;          // Update the global hashtable upon resize()
                capacity = newsize;
                capacitymask = newsize - 1;
 
-               threshold = (unsigned int) (newsize * loadfactor);
+               threshold = (unsigned int)(newsize * loadfactor);
 
                struct hashlistnode<_Key, _Val> *bin = &oldtable[0];
                struct hashlistnode<_Key, _Val> *lastbin = &oldtable[oldcapacity];
@@ -181,7 +179,7 @@ template<typename _Key, typename _Val, typename _KeyInt, int _Shift = 0, void *
 
                        unsigned int index = ((_KeyInt)key) >> _Shift;
                        do {
-                               index = index & capacitymask;
+                               index &= capacitymask;
                                search = &table[index];
                                index++;
                        } while (search->key);
@@ -190,7 +188,7 @@ template<typename _Key, typename _Val, typename _KeyInt, int _Shift = 0, void *
                        search->val = bin->val;
                }
 
-               _free(oldtable);            //Free the memory of the old hash table
+               _free(oldtable);            // Free the memory of the old hash table
        }
 
  private: