29class hash_vector_base {
38 static uint32_t gethash_s1(
const hash_vector_base *,
size_t);
39 static uint32_t gethash_s2(
const hash_vector_base *,
size_t);
40 static uint32_t gethash_s3(
const hash_vector_base *,
size_t);
41 static void sethash_s1(hash_vector_base *,
size_t, uint32_t);
42 static void sethash_s2(hash_vector_base *,
size_t, uint32_t);
43 static void sethash_s3(hash_vector_base *,
size_t, uint32_t);
48 size_t collisions, log_hashsize;
54 uint32_t getidx(
const hash_vector_base *);
55 const void *getkey(
const hash_vector_base *);
56 void *getval(hash_vector_base *);
59 void dump(std::ostream &);
65 hash_vector_base(
bool ismap,
bool ismulti,
size_t capacity);
66 hash_vector_base(
const hash_vector_base &);
67 hash_vector_base(hash_vector_base &&);
68 hash_vector_base &operator=(
const hash_vector_base &);
69 hash_vector_base &operator=(hash_vector_base &&);
70 virtual ~hash_vector_base() { freehash(); }
71 virtual size_t hashfn(
const void *)
const = 0;
72 virtual bool cmpfn(
const void *,
const void *)
const = 0;
73 virtual bool cmpfn(
const void *,
size_t)
const = 0;
74 virtual const void *getkey(uint32_t)
const = 0;
75 virtual void *getval(uint32_t) = 0;
76 virtual uint32_t limit() = 0;
77 virtual void resizedata(
size_t) = 0;
78 virtual void moveentry(
size_t,
size_t) = 0;
81 size_t find(
const void *key, lookup_cache *cache)
const;
82 size_t find_next(
const void *key, lookup_cache *cache)
const;
83 void *lookup(
const void *key, lookup_cache *cache =
nullptr);
84 void *lookup_next(
const void *key, lookup_cache *cache =
nullptr);
85 size_t hv_insert(
const void *key, lookup_cache *cache =
nullptr);
88 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:24