00001 #ifndef RC_FLOATHASH_H
00002 #define RC_FLOATHASH_H
00003
00004 typedef struct FloatHashEntry_t FloatHashEntry_t;
00005
00006 struct FloatHashEntry_t {
00007
00008 u32 index;
00009 u32 pindex;
00010 u32 next;
00011
00012
00013 };
00014
00015 typedef struct {
00016
00017 u32 table_size;
00018 u32 *hash_table;
00019
00020 u32 next_free;
00021 u32 max_free;
00022 FloatHashEntry_t *free_list;
00023
00024 } FloatHash;
00025
00026 #define RC_FLOAT_HASH_DEFAULT_SIZE 15333
00027
00028 FloatHash *FloatHashInit(
00029 u32 size
00030 );
00031
00032 void FloatHashDestroy(
00033 FloatHash *fh
00034 );
00035
00036 u32 FloatHashCalcHash(
00037 char *a,
00038 i32 n
00039 );
00040
00041 void FloatHashAdd(
00042 FloatHash *fh,
00043 f32 *ptr,
00044 u32 pindex,
00045 i32 index,
00046 i32 n
00047 );
00048
00049 i32 FloatHashFind(
00050 FloatHash *fh,
00051 f32 *list,
00052 f32 *ptr,
00053 i32 n
00054 );
00055
00056 void FloatHashClean(
00057 FloatHash *fh
00058 );
00059
00060 #endif
00061