/* $Id$ */ %{ #include "../../maphash.h" %} /* ======================================================================== * Include maphash header, first stating declarations to ignore * ======================================================================== */ // ignore the hashObj struct %ignore hashObj; // ignore items and make numitems immutable %ignore items; %immutable numitems; %include "../../maphash.h" /* ======================================================================== * Extension methods * ======================================================================== */ %extend hashTableObj { // New instance #if defined(SWIGJAVA) || defined(SWIGCSHARP) hashTableObj() { #else hashTableObj(void) { #endif return msCreateHashTable(); } // Destroy instance ~hashTableObj() { msFreeHashTable(self); } // set a hash item given key and value int set(char *key, char *value) { if (msInsertHashTable(self, key, value) == NULL) { return MS_FAILURE; } return MS_SUCCESS; } // get value from item by its key char *get(char *key, char *default_value=NULL) { char *value = NULL; if (!key) { msSetError(MS_HASHERR, "NULL key", "get"); } value = (char *) msLookupHashTable(self, key); if (!value) { return default_value; } return value; } // Remove one item from hash table int remove(char *key) { return msRemoveHashTable(self, key); } // Clear all items in hash table (to NULL) void clear(void) { msFreeHashItems(self); initHashTable(self); } // Return the next key or first key if prevkey == NULL const char *nextKey(char *prevkey=NULL) { return msNextKeyFromHashTable(self, (const char *) prevkey); } }