RNAlib-2.6.3
 
Loading...
Searching...
No Matches
hash_tables.h
Go to the documentation of this file.
1#ifndef VIENNA_RNA_PACKAGE_HASH_UTIL_H
2#define VIENNA_RNA_PACKAGE_HASH_UTIL_H
3
4/* Taken from the barriers tool and modified by GE. */
5
6#ifdef VRNA_WARN_DEPRECATED
7# if defined(DEPRECATED)
8# undef DEPRECATED
9# endif
10# if defined(__clang__)
11# define DEPRECATED(func, msg) func __attribute__ ((deprecated("", msg)))
12# elif defined(__GNUC__)
13# define DEPRECATED(func, msg) func __attribute__ ((deprecated(msg)))
14# else
15# define DEPRECATED(func, msg) func
16# endif
17#else
18# define DEPRECATED(func, msg) func
19#endif
20
51typedef struct vrna_hash_table_s *vrna_hash_table_t;
52
53
63typedef int (*vrna_ht_cmp_f)(void *x,
64 void *y);
65
66DEPRECATED(typedef int (vrna_callback_ht_compare_entries)(void *x,
67 void *y),
68 "Use vrna_ht_cmp_f instead!");
69
70
71
81typedef unsigned int (*vrna_ht_hashfunc_f)(void *x,
82 unsigned long hashtable_size);
83
84DEPRECATED(typedef unsigned int (vrna_callback_ht_hash_function)(void *x,
85 unsigned long hashtable_size),
86 "Use vrna_ht_hashfunc_f instead!");
87
88
97typedef int (*vrna_ht_free_f)(void *x);
98
99DEPRECATED(typedef int (vrna_callback_ht_free_entry)(void *x),
100 "Use vrna_ht_free_f instead!");
101
102
130vrna_ht_init(unsigned int b,
131 vrna_ht_cmp_f compare_function,
132 vrna_ht_hashfunc_f hash_function,
133 vrna_ht_free_f free_hash_entry);
134
135
142unsigned long
144
145
152unsigned long
153vrna_ht_collisions(struct vrna_hash_table_s *ht);
154
155
170void *
172 void *x);
173
174
190int
192 void *x);
193
194
206void
208 void *x);
209
210
222void
224
225
236void
238
239
240/* End of abstract interface */
253typedef struct {
254 char *structure;
255 float energy;
257
258
272int
274 void *y);
275
276
291unsigned int
293 unsigned long hashtable_size);
294
295
307int vrna_ht_db_free_entry(void *hash_entry);
308
309
310/* End of dot-bracket interface */
317#endif
char * structure
Definition hash_tables.h:254
float energy
Definition hash_tables.h:255
void vrna_ht_remove(vrna_hash_table_t ht, void *x)
Remove an object from the hash table.
unsigned long vrna_ht_size(vrna_hash_table_t ht)
Get the size of the hash table.
int(* vrna_ht_free_f)(void *x)
Callback function to free a hash table entry.
Definition hash_tables.h:97
void vrna_ht_free(vrna_hash_table_t ht)
Free all memory occupied by the hash table.
int vrna_ht_insert(vrna_hash_table_t ht, void *x)
Insert an object into a hash table.
int(* vrna_ht_cmp_f)(void *x, void *y)
Callback function to compare two hash table entries.
Definition hash_tables.h:63
unsigned long vrna_ht_collisions(struct vrna_hash_table_s *ht)
Get the number of collisions in the hash table.
vrna_hash_table_t vrna_ht_init(unsigned int b, vrna_ht_cmp_f compare_function, vrna_ht_hashfunc_f hash_function, vrna_ht_free_f free_hash_entry)
Get an initialized hash table.
void * vrna_ht_get(vrna_hash_table_t ht, void *x)
Get an element from the hash table.
void vrna_ht_clear(vrna_hash_table_t ht)
Clear the hash table.
struct vrna_hash_table_s * vrna_hash_table_t
A hash table object.
Definition hash_tables.h:51
int vrna_ht_db_free_entry(void *hash_entry)
Default function to free memory occupied by a hash entry.
int vrna_ht_db_comp(void *x, void *y)
Default hash table entry comparison.
unsigned int vrna_ht_db_hash_func(void *x, unsigned long hashtable_size)
Default hash function.
unsigned int(* vrna_ht_hashfunc_f)(void *x, unsigned long hashtable_size)
Callback function to generate a hash key, i.e. hash function.
Definition hash_tables.h:81
Default hash table entry.
Definition hash_tables.h:253