18#ifndef __R_HASH_SET_H__
19#define __R_HASH_SET_H__
21#if !defined(__RLIB_H_INCLUDE_GUARD__) && !defined(RLIB_COMPILATION)
22#error "#include <rlib.h> only please."
55#define r_hash_set_new(hash, equal) r_hash_set_new_full (hash, equal, NULL)
67#define r_hash_set_ref r_ref_ref
69#define r_hash_set_unref r_ref_unref
struct RHashSet RHashSet
Opaque refcounted hash set.
Definition rhashset.h:52
rboolean r_hash_set_steal(RHashSet *ht, rconstpointer item, rpointer *out)
Remove item without running the destroy notifier; hand the stored pointer back via out.
rsize r_hash_set_current_alloc_size(RHashSet *ht)
Allocated bucket count.
rboolean r_hash_set_contains(RHashSet *ht, rconstpointer item)
TRUE iff item is present.
rboolean r_hash_set_foreach(RHashSet *ht, RFunc func, rpointer user)
Iterate every item in the set.
rboolean r_hash_set_remove(RHashSet *ht, rconstpointer item)
Remove item; destroy notifier runs.
rsize r_hash_set_size(RHashSet *ht)
Number of items currently in the set.
rboolean r_hash_set_contains_full(RHashSet *ht, rconstpointer item, rpointer *out)
Look up item and return the set-owned pointer.
void r_hash_set_remove_all(RHashSet *ht)
Remove every item; destroy notifier runs.
rboolean r_hash_set_insert(RHashSet *ht, rpointer item)
Add item to the set.
RHashSet * r_hash_set_new_full(RHashFunc hash, REqualFunc equal, RDestroyNotify notify)
Construct a hash set with custom hash / equality and an optional destroy notifier.
rsize r_hash_set_max_probe(RHashSet *ht)
Worst-case unsuccessful-probe length; diagnostic for home distribution (small means items are well sp...
#define R_API
Public-API decoration: resolves to R_API_EXPORT while building rlib and R_API_IMPORT for consumers.
Definition rmacros.h:115
#define R_BEGIN_DECLS
Open an extern "C" block under C++ (no-op in C).
Definition rmacros.h:196
rboolean(* REqualFunc)(rconstpointer a, rconstpointer b)
Equality predicate.
Definition rtypes.h:407
int rboolean
Boolean type (typedef'd to int).
Definition rtypes.h:59
void(* RFunc)(rpointer data, rpointer user)
Generic iteration callback over (data, user) pairs.
Definition rtypes.h:403
void(* RDestroyNotify)(rpointer ptr)
Destructor callback: free / release the value at ptr.
Definition rtypes.h:401
void * rpointer
Generic pointer (alias for void *).
Definition rtypes.h:327
const void * rconstpointer
Generic const pointer (alias for const void *).
Definition rtypes.h:329
unsigned long rsize
Unsigned pointer-sized size type (like size_t).
Definition rtypes.h:290
rsize(* RHashFunc)(rconstpointer key)
Hash function over an opaque key.
Definition rtypes.h:409
Pre-built hash / equality function pairs for the common key types (pointer-identity,...
Refcount base struct shared by every refcounted type in rlib.
Foundational type aliases used by every rlib header.