htable.h 609 B

1234567891011121314151617181920212223242526272829
  1. #ifndef HTABLE_H_
  2. #define HTABLE_H_
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. typedef struct {
  6. void *buf;
  7. int size;
  8. int cap;
  9. int taken;
  10. void* begin;
  11. int elemsz;
  12. uint32_t (*hash)(void*);
  13. bool (*eq)(void*, void*);
  14. } HTable;
  15. void htable_init(HTable *ht, int elemsz, int cap, uint32_t (*hash)(void*),
  16. bool (*eq)(void*, void*));
  17. bool htable_insert(HTable *ht, void* elem);
  18. void htable_del(HTable *ht, void* iter);
  19. // return a iterator
  20. void* htable_find(HTable *ht, void* elem);
  21. void* htable_begin(HTable *ht);
  22. void* htable_next(HTable *ht, void *iter);
  23. #endif