00001 #ifndef _WINC_HASH
00002 #define _WINC_HASH
00003
00004 namespace WXP {
00005 class Hash {
00006 int type;
00007 int size;
00008 int data_size;
00009
00010 struct HashEntry {
00011 char *key;
00012 char *data;
00013 HashEntry *link;
00014 HashEntry *next;
00015
00016 };
00017
00018 HashEntry *cur;
00019 HashEntry *head;
00020 HashEntry *last;
00021 int num;
00022 int numkey;
00023 HashEntry **table[4];
00024
00025 int initClass();
00026 int clearAll();
00027
00028 public:
00029 Hash( int rtype, int rsize, int rdata_size, int rnumkey );
00030 Hash( int rsize, int rdata_size, int rnumkey );
00031 Hash( int rtype );
00032 Hash();
00033 ~Hash();
00034 int init();
00035 int set( int rtype, int rsize, int rdata_size, int rnumkey );
00036 int set( int rsize, int rdata_size, int rnumkey );
00037 int set( int rtype );
00038 int set();
00039 int key( const char *rkey );
00040 int enter( const char *data, ... );
00041 char *search( int keynum, const char *key );
00042 char *search( const char *key );
00043 int searchInt( int keynum, const char *rkey );
00044 int searchInt( const char *rkey );
00045 int searchBool( int keynum, const char *rkey );
00046 int searchBool( const char *rkey );
00047 float searchFloat( int keynum, const char *rkey );
00048 float searchFloat( const char *rkey );
00049 int first();
00050 char *next();
00051 char *nextKey();
00052 int clear();
00053 inline int getSize(){ return size; };
00054 inline int getDataSize(){ return data_size; };
00055 inline int getNumKey(){ return numkey; };
00056 inline int getNum(){ return num; };
00057 int print();
00058 int printData();
00059 int printHash();
00060
00061 enum {
00062 STRING,
00063 BOOL,
00064 INT,
00065 FLOAT,
00066 DATA
00067 };
00068 };
00069 }
00070 #endif