123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #ifndef __OPENCV_SURFACE_MATCHING_T_HASH_INT_HPP__
- #define __OPENCV_SURFACE_MATCHING_T_HASH_INT_HPP__
- #include <stdio.h>
- #include <stdlib.h>
- namespace cv
- {
- namespace ppf_match_3d
- {
- typedef unsigned int KeyType;
- typedef struct hashnode_i
- {
- KeyType key;
- void *data;
- struct hashnode_i *next;
- } hashnode_i ;
- typedef struct HSHTBL_i
- {
- size_t size;
- struct hashnode_i **nodes;
- size_t (*hashfunc)(unsigned int);
- } hashtable_int;
- inline static unsigned int next_power_of_two(unsigned int value)
- {
- --value;
- value |= value >> 1;
- value |= value >> 2;
- value |= value >> 4;
- value |= value >> 8;
- value |= value >> 16;
- ++value;
- return value;
- }
- hashtable_int *hashtableCreate(size_t size, size_t (*hashfunc)(unsigned int));
- void hashtableDestroy(hashtable_int *hashtbl);
- int hashtableInsert(hashtable_int *hashtbl, KeyType key, void *data);
- int hashtableInsertHashed(hashtable_int *hashtbl, KeyType key, void *data);
- int hashtableRemove(hashtable_int *hashtbl, KeyType key);
- void *hashtableGet(hashtable_int *hashtbl, KeyType key);
- hashnode_i* hashtableGetBucketHashed(hashtable_int *hashtbl, KeyType key);
- int hashtableResize(hashtable_int *hashtbl, size_t size);
- hashtable_int *hashtable_int_clone(hashtable_int *hashtbl);
- hashtable_int *hashtableRead(FILE* f);
- int hashtableWrite(const hashtable_int * hashtbl, const size_t dataSize, FILE* f);
- void hashtablePrint(hashtable_int *hashtbl);
- }
- }
- #endif
|