diff options
Diffstat (limited to 'gdb/bcache.h')
-rw-r--r-- | gdb/bcache.h | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/gdb/bcache.h b/gdb/bcache.h index d8b18dc..b92989f 100644 --- a/gdb/bcache.h +++ b/gdb/bcache.h @@ -142,21 +142,7 @@ struct bstring; struct bcache { - /* Allocate a bcache. HASH_FN and COMPARE_FN can be used to pass in - custom hash, and compare functions to be used by this bcache. If - HASH_FUNCTION is NULL fast_hash() is used and if COMPARE_FUNCTION is - NULL memcmp() is used. */ - - explicit bcache (unsigned long (*hash_fn)(const void *, - int length) = nullptr, - int (*compare_fn)(const void *, const void *, - int length) = nullptr) - : m_hash_function (hash_fn == nullptr ? default_hash : hash_fn), - m_compare_function (compare_fn == nullptr ? compare : compare_fn) - { - } - - ~bcache (); + virtual ~bcache (); /* Find a copy of the LENGTH bytes at ADDR in BCACHE. If BCACHE has never seen those bytes before, add a copy of them to BCACHE. In @@ -175,6 +161,16 @@ struct bcache void print_statistics (const char *type); int memory_used (); +protected: + + /* Hash function to be used for this bcache object. Defaults to + fast_hash. */ + virtual unsigned long hash (const void *addr, int length); + + /* Compare function to be used for this bcache object. Defaults to + memcmp. */ + virtual int compare (const void *left, const void *right, int length); + private: /* All the bstrings are allocated here. */ @@ -205,21 +201,6 @@ private: length/data compare missed. */ unsigned long m_half_hash_miss_count = 0; - /* Hash function to be used for this bcache object. */ - unsigned long (*m_hash_function)(const void *addr, int length); - - /* Compare function to be used for this bcache object. */ - int (*m_compare_function)(const void *, const void *, int length); - - /* Default compare function. */ - static int compare (const void *addr1, const void *addr2, int length); - - /* Default hash function. */ - static unsigned long default_hash (const void *ptr, int length) - { - return fast_hash (ptr, length, 0); - } - /* Expand the hash table. */ void expand_hash_table (); }; |