summaryrefslogtreecommitdiff
path: root/src/common/db.h
diff options
context:
space:
mode:
authorwizputer <wizputer@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-27 19:32:30 +0000
committerwizputer <wizputer@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-27 19:32:30 +0000
commit486b4f2a12b41507b67a1a93ae5871b3be447914 (patch)
tree8196d22d0fce973ac6e53b24735776ba9dcaf77f /src/common/db.h
parentecb15e6101bc1912bb2520151c45ed69af80feb8 (diff)
parentf0da8da932031212f34aa97eff882f72cb69cc2a (diff)
downloadhercules-486b4f2a12b41507b67a1a93ae5871b3be447914.tar.gz
hercules-486b4f2a12b41507b67a1a93ae5871b3be447914.tar.bz2
hercules-486b4f2a12b41507b67a1a93ae5871b3be447914.tar.xz
hercules-486b4f2a12b41507b67a1a93ae5871b3be447914.zip
correct directory structure
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@387 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/common/db.h')
-rw-r--r--src/common/db.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/common/db.h b/src/common/db.h
new file mode 100644
index 000000000..ea9aceab0
--- /dev/null
+++ b/src/common/db.h
@@ -0,0 +1,47 @@
+#ifndef _DB_H_
+#define _DB_H_
+
+#include <stdarg.h>
+
+#define HASH_SIZE (256+27)
+
+#define RED 0
+#define BLACK 1
+
+struct dbn {
+ struct dbn *parent,*left,*right;
+ int color;
+ void *key;
+ void *data;
+};
+
+struct dbt {
+ int (*cmp)(struct dbt*,void*,void*);
+ unsigned int (*hash)(struct dbt*,void*);
+ // which 1 - key, 2 - data, 3 - both
+ void (*release)(struct dbn*,int which);
+ int maxlen;
+ struct dbn *ht[HASH_SIZE];
+};
+
+#define strdb_search(t,k) db_search((t),(void*)(k))
+#define strdb_insert(t,k,d) db_insert((t),(void*)(k),(void*)(d))
+#define strdb_erase(t,k) db_erase ((t),(void*)(k))
+#define strdb_foreach db_foreach
+#define strdb_final db_final
+#define numdb_search(t,k) db_search((t),(void*)(k))
+#define numdb_insert(t,k,d) db_insert((t),(void*)(k),(void*)(d))
+#define numdb_erase(t,k) db_erase ((t),(void*)(k))
+#define numdb_foreach db_foreach
+#define numdb_final db_final
+
+struct dbt* strdb_init(int maxlen);
+struct dbt* numdb_init(void);
+void* db_search(struct dbt *table,void* key);
+void* db_search2(struct dbt *table, const char *key); // [MouseJstr]
+struct dbn* db_insert(struct dbt *table,void* key,void* data);
+void* db_erase(struct dbt *table,void* key);
+void db_foreach(struct dbt*,int(*)(void*,void*,va_list),...);
+void db_final(struct dbt*,int(*)(void*,void*,va_list),...);
+
+#endif