4#if !defined(SKIP_INCLUDES)
12 #if !defined DC_PLACEHOLDERS
15 #define ITEM set_item_t
20 #if !defined DC_PLACEHOLDERS
24 #define ITEM_HASH item_hash
29 #define ITEM_EQ DC_MEM_EQ
32#if !defined ITEM_DELETE
33 #define ITEM_DELETE DC_NO_DELETE
36#if !defined ITEM_CLONE
37 #define ITEM_CLONE DC_COPY_CLONE
40#if !defined ITEM_DEBUG
41 #define ITEM_DEBUG DC_DEFAULT_DEBUG
46#define MAP PRIV(NS(NAME, inner_map))
48#pragma push_macro("ALLOC")
51#define KEY_HASH ITEM_HASH
53#define KEY_DELETE ITEM_DELETE
54#define KEY_CLONE ITEM_CLONE
55#define KEY_DEBUG ITEM_DEBUG
57#define VALUE_DELETE dc_unit_delete
58#define VALUE_CLONE dc_unit_clone
59#define VALUE_DEBUG dc_unit_debug
60#define INTERNAL_NAME MAP
63#pragma pop_macro("ALLOC")
79 .map =
NS(
MAP,
new)(alloc_ref),
99 DC_ASSERT(inserted,
"Failed to insert item");
118#define ITER_CONST NS(SELF, iter_const)
129 return NS(
MAP,
NS(iter_const,
next))(&iter->map_iter).key;
static DC_PUBLIC void debug(SELF const *self, dc_debug_fmt fmt, FILE *stream)
#define DC_STATIC_CONSTANT
static DC_PUBLIC VALUE const * try_read(SELF const *self, INDEX index)
static DC_PUBLIC IV_PAIR next(ITER *iter)
static DC_PUBLIC bool empty(ITER const *iter)
static DC_PUBLIC bool try_remove(SELF *self, INDEX index, VALUE *destination)
static DC_PUBLIC bool empty_item(IV_PAIR const *item)
static DC_PUBLIC VALUE remove(SELF *self, INDEX index)
static DC_PUBLIC ITER_CONST get_iter_const(SELF const *self)
static DC_PUBLIC size_t size(SELF const *self)
static DC_PUBLIC SELF clone(SELF const *self)
static DC_PUBLIC SELF new_with_capacity_for(INDEX_TYPE items, ref alloc_ref)
static DC_PUBLIC void extend_capacity_for(SELF *self, size_t expected_items)
DC_STATIC_CONSTANT size_t max_capacity
static DC_PUBLIC VALUE * try_insert(SELF *self, KEY key, VALUE value)
static DC_PUBLIC void add(SELF *self, ITEM item)
static DC_PUBLIC bool try_add(SELF *self, ITEM item)
static DC_PUBLIC bool contains(SELF const *self, ITEM item)
#define DC_TRAIT_SET(SELF)
#define TEMPLATE_ERROR(...)
With the user provided name, even in nested templates.
#define DC_DEBUG(DEBUG_FN, DEBUG_PTR)
static DC_PUBLIC void dc_debug_fmt_print(dc_debug_fmt fmt, FILE *stream, const char *format,...)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_end(dc_debug_fmt fmt)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_begin(dc_debug_fmt fmt)
#define DC_EXPAND_STRING(NAME)
#define DC_ASSERT(expr,...)
#define DC_ASSUME(expr,...)
Debug format helpers for debug printin data structures.
A queue comprised of an extendable circular buffer.
static DC_PUBLIC dc_unit dc_unit_new()
static DC_PUBLIC FILE * stream(SELF *self)