Examples for using set containers.
Examples for using set containers.
#include <stdio.h>
#include <stdlib.h>
#define ITEM int
#define ITEM_HASH DC_DEFAULT_HASH
#define NAME int_set
for (int i = 0; i < 10; i++) {
}
printf("\n");
}
};
}
const char* name_ptr = self->
name;
int32_t value = (int32_t)self->
value;
return hash;
}
fprintf(
stream,
"complex_data@%p {\n", (
void*)self);
}
#define ITEM struct complex_data
#define ITEM_HASH complex_data_hash
#define ITEM_EQ complex_data_eq
#define ITEM_DELETE complex_data_delete
#define ITEM_DEBUG complex_data_debug
#define NAME complex_set
DC_SCOPED(complex_set)
set = complex_set_new(stdalloc_get_ref());
struct complex_data item1 = {.flag =
true, .name = strdup(
"first"), .value = 42};
struct complex_data item2 = {.flag =
false, .name = strdup(
"second"), .value = 100};
complex_set_add(&
set, item1);
complex_set_add(&
set, item2);
struct complex_data lookup = {.flag =
true, .name = strdup(
"first"), .value = 42};
}
return 0;
}
static DC_PUBLIC size_t dc_hash_combine(size_t seed, size_t h)
static DC_PUBLIC void set(SELF *self, INDEX_TYPE index, bool value)
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_new()
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)
static DC_PUBLIC uint64_t dc_fnv1a_str_const(const char *const *s)
#define DC_FOR_CONST(TYPE, INSTANCE, ITER, ITEM)
#define DC_ASSERT(expr,...)
#define DC_SCOPED(type,...)
RAII in C. Call the destructor when the variable goes out of scope.
static void example_complex_set()
static size_t complex_data_hash(struct complex_data const *self)
static void example_integer_set()
static void complex_data_debug(struct complex_data const *self, dc_debug_fmt fmt, FILE *stream)
static bool complex_data_eq(struct complex_data const *a, struct complex_data const *b)
static void complex_data_delete(struct complex_data *self)
Debug format helpers for debug printin data structures.
static DC_PUBLIC FILE * stream(SELF *self)