20class hash_vector_base {
29 static uint32_t gethash_s1(
const hash_vector_base *,
size_t);
30 static uint32_t gethash_s2(
const hash_vector_base *,
size_t);
31 static uint32_t gethash_s3(
const hash_vector_base *,
size_t);
32 static void sethash_s1(hash_vector_base *,
size_t, uint32_t);
33 static void sethash_s2(hash_vector_base *,
size_t, uint32_t);
34 static void sethash_s3(hash_vector_base *,
size_t, uint32_t);
39 size_t collisions, log_hashsize;
45 uint32_t getidx(
const hash_vector_base *);
46 const void *getkey(
const hash_vector_base *);
47 void *getval(hash_vector_base *);
50 void dump(std::ostream &);
56 hash_vector_base(
bool ismap,
bool ismulti,
size_t capacity);
57 hash_vector_base(
const hash_vector_base &);
58 hash_vector_base(hash_vector_base &&);
59 hash_vector_base &operator=(
const hash_vector_base &);
60 hash_vector_base &operator=(hash_vector_base &&);
61 virtual ~hash_vector_base() { freehash(); }
62 virtual size_t hashfn(
const void *)
const = 0;
63 virtual bool cmpfn(
const void *,
const void *)
const = 0;
64 virtual bool cmpfn(
const void *,
size_t)
const = 0;
65 virtual const void *getkey(uint32_t)
const = 0;
66 virtual void *getval(uint32_t) = 0;
67 virtual uint32_t limit() = 0;
68 virtual void resizedata(
size_t) = 0;
69 virtual void moveentry(
size_t,
size_t) = 0;
72 size_t find(
const void *key, lookup_cache *cache)
const;
73 size_t find_next(
const void *key, lookup_cache *cache)
const;
74 void *lookup(
const void *key, lookup_cache *cache =
nullptr);
75 void *lookup_next(
const void *key, lookup_cache *cache =
nullptr);
76 size_t hv_insert(
const void *key, lookup_cache *cache =
nullptr);
79 size_t remove(
const void *key, lookup_cache *cache =
nullptr);
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13