aboutsummaryrefslogtreecommitdiff
path: root/3rdparty/dict/dict.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/dict/dict.h')
-rw-r--r--3rdparty/dict/dict.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/3rdparty/dict/dict.h b/3rdparty/dict/dict.h
new file mode 100644
index 0000000..424bc28
--- /dev/null
+++ b/3rdparty/dict/dict.h
@@ -0,0 +1,98 @@
+/* ******************************************** */
+/* File Name: dict.h */
+/* Author: (C) 2008-2009 - Juan José Ponteprino */
+/* Description: Dictionary API Headers */
+/* License: This code is licenced as LGPL */
+/* ******************************************** */
+
+#ifndef _DICT_H
+#define _DICT_H
+
+/* --------------------------------------------------------------------------- */
+
+// Hash 8
+#define DICT_HASH_MAX8 256
+#define DICT_HASH_MASK8 0xff
+#define DICT_HASH_SHIFT8 1
+
+// Hash 16 (default)
+#define DICT_HASH_MAX16 65536
+#define DICT_HASH_MASK16 0xffff
+#define DICT_HASH_SHIFT16 4
+
+#ifdef USE_HASH8
+// Hash 8
+#define DICT_HASH_MAX DICT_HASH_MAX8
+#define DICT_HASH_MASK DICT_HASH_MASK8
+#define DICT_HASH_SHIFT DICT_HASH_SHIFT8
+#else
+// Hash 16 (default)
+#define DICT_HASH_MAX DICT_HASH_MAX16
+#define DICT_HASH_MASK DICT_HASH_MASK16
+#define DICT_HASH_SHIFT DICT_HASH_SHIFT16
+#endif
+
+/* --------------------------------------------------------------------------- */
+
+#define DICT_ENTRY_FLAG_NORMAL 0x00000000
+#define DICT_ENTRY_FLAG_DONT_ALLOC 0x00000001
+
+/* --------------------------------------------------------------------------- */
+
+typedef struct DICT_ENTRY_T
+{
+ char * key;
+
+ long len;
+ void * val;
+
+ int flags;
+
+ struct DICT_ENTRY_T * prev;
+ struct DICT_ENTRY_T * next;
+
+ struct DICT_ENTRY_T * prev_hashed;
+ struct DICT_ENTRY_T * next_hashed;
+
+} DICT_ENTRY_T;
+
+typedef struct DICT_T
+{
+ char * id;
+ int hash;
+
+ DICT_ENTRY_T * entries;
+ DICT_ENTRY_T * entries_hashed[DICT_HASH_MAX];
+
+ struct DICT_T * prev;
+ struct DICT_T * next;
+
+ struct DICT_T * prev_hashed;
+ struct DICT_T * next_hashed;
+
+} DICT_T;
+
+/* --------------------------------------------------------------------------- */
+
+extern void DICT_Init();
+extern void DICT_Exit();
+
+extern DICT_T * DICT_Create( char * id );
+extern int DICT_Destroy( DICT_T * dict );
+
+extern int DICT_AddEntry( DICT_T * dict, char * key, void * value, int len, int flags );
+extern void * DICT_GetEntry( DICT_T * dict, char * key, int * len );
+extern DICT_ENTRY_T * DICT_FindEntry( DICT_T * dict, char * key );
+
+extern void DICT_DelEntry( DICT_T * dict, char * key );
+extern void DICT_DelAllEntries( DICT_T * dict );
+extern int DICT_Merge( DICT_T * target, DICT_T * source );
+
+extern DICT_ENTRY_T * DICT_GetNextEntry( DICT_T * dict, DICT_ENTRY_T * current );
+extern DICT_ENTRY_T * DICT_GetPrevEntry( DICT_T * dict, DICT_ENTRY_T * current );
+
+extern void DICT_ShowAllEntries( DICT_T * dict, FILE * fp );
+
+/* --------------------------------------------------------------------------- */
+
+#endif