[Pdatabase-cvs] pdb/api_src pdb.c,1.2,1.3 pdb.h,1.3,1.4
Brought to you by:
paralizer
|
From: Michael L. <par...@us...> - 2005-02-24 16:49:11
|
Update of /cvsroot/pdatabase/pdb/api_src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11142/api_src Modified Files: pdb.c pdb.h Log Message: Added some win32 porting updates by CyberMind Index: pdb.h =================================================================== RCS file: /cvsroot/pdatabase/pdb/api_src/pdb.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- pdb.h 8 Feb 2005 21:17:02 -0000 1.3 +++ pdb.h 24 Feb 2005 16:48:38 -0000 1.4 @@ -20,25 +20,18 @@ * * * This header is used in conjunction with pdb - * compiled as a shared library. + * compiled as a shared library. * You can download pdb at http://pdatabase.sourceforge.net/ * */ - + #ifndef __PDB_H #define __PDB_H /* - * Windows or POSIX? - */ -#ifndef WIN32 - #define POSIX -#endif - -/* * Enable verbose loading/unloading messages. */ -#define _PDB_VERBOSE +//#define _PDB_VERBOSE /* @@ -55,7 +48,7 @@ * differ from node to node. */ struct pdb_node_t; -typedef int (*custom_free_cb_t)(void* nptr); +typedef int (*pdb_custom_free_cb_t)(void* nptr); /* @@ -66,7 +59,7 @@ char* id; void* data; struct pdb_node_t* parent; - custom_free_cb_t custom_free_cb; + pdb_custom_free_cb_t custom_free_cb; }; @@ -89,14 +82,14 @@ * PDB types. */ enum { - NO_NODE_TYPE, - TREE_NODE_TYPE, - LIST_NODE_TYPE, - HASH_NODE_TYPE, - STRING_NODE_TYPE, - INT_NODE_TYPE, - ABSTRACT_NODE_TYPE, - LINK_NODE_TYPE + PDB_NO_NODE_TYPE, + PDB_TREE_NODE_TYPE, + PDB_LIST_NODE_TYPE, + PDB_HASH_NODE_TYPE, + PDB_STRING_NODE_TYPE, + PDB_INT_NODE_TYPE, + PDB_ABSTRACT_NODE_TYPE, + PDB_LINK_NODE_TYPE }; /* @@ -108,41 +101,49 @@ #define PDB_THREAD_SAFE 8 #ifdef WIN32 - #define dlsym(obj, func) \ - GetProcAddress((HMODULE)obj, func) + #define pdb_dlopen(file,x) \ + (void*)LoadLibrary(file) + #define pdb_dlsym(obj, func) \ + (void*)GetProcAddress((HMODULE)obj, func) + #define pdb_dlclose(obj) \ + !FreeLibrary((HMODULE)obj) +#else + #define pdb_dlopen dlopen + #define pdb_dlsym dlsym + #define pdb_dlclose dlclose #endif struct _pdb_funcs_t { struct pdb* (*_pdb_load_fptr)(char* file); int (*_pdb_unload_fptr)(struct pdb* dbptr); - + void (*_pdb_enable_fptr)(struct pdb* dbptr, int settings); void (*_pdb_disable_fptr)(struct pdb* dbptr, int settings); int (*_pdb_is_set_fptr)(struct pdb* dbptr, int setting); - + int (*_pdb_create_link_fptr)(struct pdb* dbptr, char* path, char* key, struct pdb_node_t* tnptr); - + struct pdb_node_t* (*_pdb_query_node_fptr)(struct pdb* dbptr, char* path); void* (*_pdb_query_fptr)(struct pdb* dbptr, char* path); - + struct pdb_node_t* (*_pdb_set_fptr)(struct pdb* dbptr, char* path, char* key, void* data); struct pdb_node_t* (*_pdb_set_node_fptr)(struct pdb* dbptr, char* path, char* key, void* data, int type); int (*_pdb_del_fptr)(struct pdb* dbptr, char* path); - + char* (*_pdb_trace_fptr)(struct pdb_node_t* nptr); - + void (*_pdb_set_write_interval_fptr)(struct pdb* dbptr, int seconds); int (*_pdb_need_write_fptr)(struct pdb* dbptr); int (*_pdb_write_fptr)(struct pdb* dbptr, char* file); - + void (*_pdb_set_free_method_fptr)(struct pdb* dbptr, struct pdb_node_t* nptr, void* free_cb); - + int (*_pdb_count_children_fptr)(struct pdb* dbptr, char* path); - + int (*_pdb_free_node_fptr)(struct pdb_node_t* nptr); /* @@ -172,67 +173,67 @@ /* * A hash node. */ -struct hash_node_t { +struct pdb_hash_node_t { char* id; void* data; }; /* * The root hash type. */ -struct hash { +struct pdb_hash { int size; - struct linkList** tbl; + struct pdb_linkList** tbl; }; /* * Callback which can be passed to free_hash(). */ -typedef void (*hash_func_ptr)(void* dptr); +typedef void (*pdb_hash_func_ptr)(void* dptr); /* * LINKED LIST */ -enum list_add_seq { +enum pdb_list_add_seq { ADD_BEFORE, ADD_AFTER }; -typedef void (*list_func_ptr)(void* dptr); +typedef void (*pdb_list_func_ptr)(void* dptr); /* Individual Node Within The List */ -struct linkNode { - struct linkNode* prev; - struct linkNode* next; +struct pdb_linkNode { + struct pdb_linkNode* prev; + struct pdb_linkNode* next; void* data; }; /* List Structure */ -struct linkList { - struct linkNode* root; - struct linkNode* last; +struct pdb_linkList { + struct pdb_linkNode* root; + struct pdb_linkNode* last; }; /* * BINARY TREE */ -typedef void (*tree_func_ptr)(void* dptr); -typedef int (*tree_str_cmp_cb)(char* s1, char* s2); +typedef void (*pdb_tree_func_ptr)(void* dptr); +typedef int (*pdb_tree_str_cmp_cb)(char* s1, char* s2); /* * Individual Node * Within The Tree */ -struct treeNode { - struct treeNode* right; - struct treeNode* left; - struct treeNode* parent; +struct pdb_treeNode { + struct pdb_treeNode* right; + struct pdb_treeNode* left; + struct pdb_treeNode* parent; char* key; void* data; }; /* * Tree Structure */ -struct binaryTree { - struct treeNode* root; +struct pdb_binaryTree { + struct pdb_treeNode* root; int flags; - tree_str_cmp_cb _tree_str_cmp; + pdb_tree_str_cmp_cb _tree_str_cmp; }; /********************************************** @@ -245,7 +246,7 @@ extern "C" { #endif - + int load_pdb_lib(char* file); int unload_pdb_lib(); void recache_pdb_lib(); Index: pdb.c =================================================================== RCS file: /cvsroot/pdatabase/pdb/api_src/pdb.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pdb.c 18 Feb 2005 21:25:29 -0000 1.2 +++ pdb.c 24 Feb 2005 16:48:38 -0000 1.3 @@ -20,7 +20,7 @@ * * * This header is used in conjunction with pdb - * compiled as a shared library. + * compiled as a shared library. * You can download pdb at http://pdatabase.sourceforge.net/ * */ @@ -30,11 +30,12 @@ #include <stdio.h> #include "pdb.h" -#ifdef POSIX - #include <dlfcn.h> -#elif defined(WIN32) - #include <windows.h> -#endif +#ifdef WIN32 + #define WIN32_LEAN_AND_MEAN + #include <windows.h> +#else + #include <dlfcn.h> +#endif static void* _pdb_obj; static struct _pdb_funcs_t _pdb_funcs = { @@ -51,19 +52,15 @@ #ifdef _PDB_VERBOSE printf("INFO: pdb.c: Loading pdb library \"%s\"... ", file); #endif - - #ifdef POSIX - _pdb_obj = dlopen(file, RTLD_NOW); - #elif defined(WIN32) - _pdb_obj = LoadLibrary(file); - #endif - + + _pdb_obj = pdb_dlopen(file, RTLD_NOW); + #ifdef _PDB_VERBOSE printf("%s\n", (_pdb_obj ? "success" : "failed")); #endif - + recache_pdb_lib(); - + return (_pdb_obj ? 1 : 0); } @@ -73,23 +70,19 @@ */ int unload_pdb_lib() { int r; - - if (!_pdb_obj) return 0; - + + if (!_pdb_obj) return 0; + #ifdef _PDB_VERBOSE printf("INFO: pdb.c: Unloading pdb library... "); #endif - #ifdef POSIX - r = dlclose(_pdb_obj); - #elif defined(WIN32) - r = FreeLibrary((struct HINSTANCE__*)_pdb_obj); - #endif - + r = pdb_dlclose(_pdb_obj); + #ifdef _PDB_VERBOSE printf("%s\n", (r ? "failed" : "success")); #endif - + return (r ? 0 : 1); } @@ -98,43 +91,43 @@ * (Re)cache the pdb shared object function pointers. */ void recache_pdb_lib() { - if (!_pdb_obj) return; - + if (!_pdb_obj) return; + #ifdef _PDB_VERBOSE printf("INFO: pdb.c: Caching pdb function pointers...\n"); #endif - - _pdb_funcs._pdb_load_fptr = dlsym(_pdb_obj, "pdb_load"); - _pdb_funcs._pdb_unload_fptr = dlsym(_pdb_obj, "pdb_unload"); - _pdb_funcs._pdb_load_fptr = dlsym(_pdb_obj, "pdb_load"); - _pdb_funcs._pdb_unload_fptr = dlsym(_pdb_obj, "pdb_unload"); - _pdb_funcs._pdb_enable_fptr = dlsym(_pdb_obj, "pdb_enable"); - _pdb_funcs._pdb_disable_fptr = dlsym(_pdb_obj, "pdb_disable"); - _pdb_funcs._pdb_is_set_fptr = dlsym(_pdb_obj, "pdb_is_set"); - _pdb_funcs._pdb_create_link_fptr = dlsym(_pdb_obj, "pdb_create_link"); - _pdb_funcs._pdb_query_node_fptr = dlsym(_pdb_obj, "pdb_query_node"); - _pdb_funcs._pdb_query_fptr = dlsym(_pdb_obj, "pdb_query"); - _pdb_funcs._pdb_set_fptr = dlsym(_pdb_obj, "pdb_set"); - _pdb_funcs._pdb_set_node_fptr = dlsym(_pdb_obj, "pdb_set_node"); - _pdb_funcs._pdb_del_fptr = dlsym(_pdb_obj, "pdb_del"); - _pdb_funcs._pdb_trace_fptr = dlsym(_pdb_obj, "pdb_trace"); + + _pdb_funcs._pdb_load_fptr = pdb_dlsym(_pdb_obj, "pdb_load"); + _pdb_funcs._pdb_unload_fptr = pdb_dlsym(_pdb_obj, "pdb_unload"); + _pdb_funcs._pdb_load_fptr = pdb_dlsym(_pdb_obj, "pdb_load"); + _pdb_funcs._pdb_unload_fptr = pdb_dlsym(_pdb_obj, "pdb_unload"); + _pdb_funcs._pdb_enable_fptr = pdb_dlsym(_pdb_obj, "pdb_enable"); + _pdb_funcs._pdb_disable_fptr = pdb_dlsym(_pdb_obj, "pdb_disable"); + _pdb_funcs._pdb_is_set_fptr = pdb_dlsym(_pdb_obj, "pdb_is_set"); + _pdb_funcs._pdb_create_link_fptr = pdb_dlsym(_pdb_obj, "pdb_create_link"); + _pdb_funcs._pdb_query_node_fptr = pdb_dlsym(_pdb_obj, "pdb_query_node"); + _pdb_funcs._pdb_query_fptr = pdb_dlsym(_pdb_obj, "pdb_query"); + _pdb_funcs._pdb_set_fptr = pdb_dlsym(_pdb_obj, "pdb_set"); + _pdb_funcs._pdb_set_node_fptr = pdb_dlsym(_pdb_obj, "pdb_set_node"); + _pdb_funcs._pdb_del_fptr = pdb_dlsym(_pdb_obj, "pdb_del"); + _pdb_funcs._pdb_trace_fptr = pdb_dlsym(_pdb_obj, "pdb_trace"); _pdb_funcs._pdb_set_write_interval_fptr = - dlsym(_pdb_obj, "pdb_set_write_interval"); - _pdb_funcs._pdb_need_write_fptr = dlsym(_pdb_obj, "pdb_need_write"); - _pdb_funcs._pdb_write_fptr = dlsym(_pdb_obj, "pdb_write"); + pdb_dlsym(_pdb_obj, "pdb_set_write_interval"); + _pdb_funcs._pdb_need_write_fptr = pdb_dlsym(_pdb_obj, "pdb_need_write"); + _pdb_funcs._pdb_write_fptr = pdb_dlsym(_pdb_obj, "pdb_write"); _pdb_funcs._pdb_set_free_method_fptr = - dlsym(_pdb_obj, "pdb_set_free_method"); - _pdb_funcs._pdb_count_children_fptr = dlsym(_pdb_obj, "pdb_count_children"); - - _pdb_funcs._pdb_free_node_fptr = dlsym(_pdb_obj, "pdb_free_node"); - _pdb_funcs._pdb_create_tree_fptr = dlsym(_pdb_obj, "pdb_create_tree"); - _pdb_funcs._pdb_create_list_fptr = dlsym(_pdb_obj, "pdb_create_list"); - _pdb_funcs._pdb_create_hash_fptr = dlsym(_pdb_obj, "pdb_create_hash"); - _pdb_funcs._pdb_create_abstract_fptr = dlsym(_pdb_obj, - "pdb_create_abstract"); - _pdb_funcs._pdb_set_int_fptr = dlsym(_pdb_obj, "pdb_set_int"); - + pdb_dlsym(_pdb_obj, "pdb_set_free_method"); + _pdb_funcs._pdb_count_children_fptr = pdb_dlsym(_pdb_obj, "pdb_count_children"); + _pdb_funcs._pdb_free_node_fptr = pdb_dlsym(_pdb_obj, "pdb_free_node"); + _pdb_funcs._pdb_create_tree_fptr = pdb_dlsym(_pdb_obj, "pdb_create_tree"); + _pdb_funcs._pdb_create_list_fptr = pdb_dlsym(_pdb_obj, "pdb_create_list"); + _pdb_funcs._pdb_create_hash_fptr = pdb_dlsym(_pdb_obj, "pdb_create_hash"); + _pdb_funcs._pdb_create_abstract_fptr = pdb_dlsym(_pdb_obj, + "pdb_create_abstract"); + _pdb_funcs._pdb_set_int_fptr = pdb_dlsym(_pdb_obj, "pdb_set_int"); + + #ifdef _PDB_VERBOSE printf("INFO: pdb.c: Cached pdb_load(): %s\n", (_pdb_funcs._pdb_load_fptr ? "success" : "failed")); @@ -170,20 +163,20 @@ (_pdb_funcs._pdb_set_free_method_fptr ? "success" : "failed")); printf("INFO: pdb.c: Cached pdb_count_children(): %s\n", (_pdb_funcs._pdb_count_children_fptr ? "success" : "failed")); - - printf("INFO: pdb.c: Cached pdb_free_node(): %s\n", - (_pdb_funcs._pdb_free_node_fptr ? "success" : "failed")); - - printf("INFO: pdb.c: Cached pdb_create_tree(): %s\n", - (_pdb_funcs._pdb_create_tree_fptr ? "success" : "failed")); - printf("INFO: pdb.c: Cached pdb_create_list(): %s\n", - (_pdb_funcs._pdb_create_list_fptr ? "success" : "failed")); - printf("INFO: pdb.c: Cached pdb_create_hash(): %s\n", - (_pdb_funcs._pdb_create_hash_fptr ? "success" : "failed")); - printf("INFO: pdb.c: Cached pdb_create_abstract(): %s\n", - (_pdb_funcs._pdb_create_abstract_fptr ? "success" : "failed")); - printf("INFO: pdb.c: Cached pdb_set_int(): %s\n", - (_pdb_funcs._pdb_set_int_fptr ? "success" : "failed")); + + printf("INFO: pdb.c: Cached pdb_free_node(): %s\n", + (_pdb_funcs._pdb_free_node_fptr ? "success" : "failed")); + + printf("INFO: pdb.c: Cached pdb_create_tree(): %s\n", + (_pdb_funcs._pdb_create_tree_fptr ? "success" : "failed")); + printf("INFO: pdb.c: Cached pdb_create_list(): %s\n", + (_pdb_funcs._pdb_create_list_fptr ? "success" : "failed")); + printf("INFO: pdb.c: Cached pdb_create_hash(): %s\n", + (_pdb_funcs._pdb_create_hash_fptr ? "success" : "failed")); + printf("INFO: pdb.c: Cached pdb_create_abstract(): %s\n", + (_pdb_funcs._pdb_create_abstract_fptr ? "success" : "failed")); + printf("INFO: pdb.c: Cached pdb_set_int(): %s\n", + (_pdb_funcs._pdb_set_int_fptr ? "success" : "failed")); #endif } @@ -218,7 +211,7 @@ int pdb_create_link(struct pdb* dbptr, char* path, char* key, struct pdb_node_t* tnptr) { - if (!_pdb_obj) return 0; + if (!_pdb_obj) return 0; return _pdb_funcs._pdb_create_link_fptr(dbptr, path, key, tnptr); } @@ -234,13 +227,13 @@ struct pdb_node_t* pdb_set(struct pdb* dbptr, char* path, char* key, void* data) { - if (!_pdb_obj) return NULL; + if (!_pdb_obj) return NULL; return _pdb_funcs._pdb_set_fptr(dbptr, path, key, data); } struct pdb_node_t* pdb_set_node(struct pdb* dbptr, char* path, char* key, void* data, int type) { - if (!_pdb_obj) return NULL; + if (!_pdb_obj) return NULL; return _pdb_funcs._pdb_set_node_fptr(dbptr, path, key, data, type); } @@ -271,12 +264,12 @@ void pdb_set_free_method(struct pdb* dbptr, struct pdb_node_t* nptr, void* free_cb) { - if (!_pdb_obj) return; + if (!_pdb_obj) return; _pdb_funcs._pdb_set_free_method_fptr(dbptr, nptr, free_cb); } int pdb_count_children(struct pdb* dbptr, char* path) { - if (!_pdb_obj) return 0; + if (!_pdb_obj) return 0; return _pdb_funcs._pdb_count_children_fptr(dbptr, path); } |