Derive-C
Loading...
Searching...
No Matches
template.h File Reference

Go to the source code of this file.

Data Structures

struct  SELF
 An allocator that prints to stdout when it allocates or frees memory. More...

Macros

#define DEBUG_MOCK_TOGGLE(name)

Functions

static DC_PUBLIC SELF new (ref alloc_ref)
 DC_MOCKABLE (void *, allocate_uninit,(SELF *self, size_t size))
 DC_MOCKABLE (void *, allocate_zeroed,(SELF *self, size_t size))
 DC_MOCKABLE (void *, reallocate,(SELF *self, void *ptr, size_t old_size, size_t new_size))
 DC_MOCKABLE (void, deallocate,(SELF *self, void *ptr, size_t size))
static DC_PUBLIC void debug (SELF const *self, dc_debug_fmt fmt, FILE *stream)
static DC_PUBLIC void delete (SELF *self)
 DC_TRAIT_REFERENCABLE_BY_PTR (SELF)
 DC_TRAIT_ALLOC (SELF)

Macro Definition Documentation

◆ DEBUG_MOCK_TOGGLE

#define DEBUG_MOCK_TOGGLE ( name)
Value:
DC_MOCKABLE_ENABLED(NS(SELF, name)) ? "enabled" : "disabled")
#define SELF
Definition def.h:52
static DC_PUBLIC void dc_debug_fmt_print(dc_debug_fmt fmt, FILE *stream, const char *format,...)
Definition fmt.h:32
#define DC_MOCKABLE_ENABLED(name)
Definition mock.h:40
#define NS(pre, post)
Definition namespace.h:14
#define DC_EXPAND_STRING(NAME)
Definition namespace.h:6
static DC_PUBLIC FILE * stream(SELF *self)
Definition template.h:108

Function Documentation

◆ DC_MOCKABLE() [1/4]

DC_MOCKABLE ( void * ,
allocate_uninit ,
(SELF *self, size_t size)  )

Definition at line 27 of file template.h.

27 {
28 return NS(ALLOC, allocate_uninit)(self->alloc_ref, size);
29}
static DC_PUBLIC void * allocate_uninit(SELF *self, size_t size)
Definition template.h:92
#define ALLOC
Definition template.h:31
static DC_PUBLIC size_t size(SELF const *self)
Definition template.h:252

◆ DC_MOCKABLE() [2/4]

DC_MOCKABLE ( void * ,
allocate_zeroed ,
(SELF *self, size_t size)  )

Definition at line 31 of file template.h.

31 {
32 return NS(ALLOC, allocate_zeroed)(self->alloc_ref, size);
33}
static DC_PUBLIC void * allocate_zeroed(SELF *self, size_t size)
Definition template.h:117

◆ DC_MOCKABLE() [3/4]

DC_MOCKABLE ( void * ,
reallocate ,
(SELF *self, void *ptr, size_t old_size, size_t new_size)  )

Definition at line 35 of file template.h.

36 {
37 return NS(ALLOC, reallocate)(self->alloc_ref, ptr, old_size, new_size);
38}
static DC_PUBLIC void * reallocate(SELF *self, void *ptr, size_t old_size, size_t new_size)
Definition template.h:137

◆ DC_MOCKABLE() [4/4]

DC_MOCKABLE ( void ,
deallocate ,
(SELF *self, void *ptr, size_t size)  )

Definition at line 40 of file template.h.

40 {
41 NS(ALLOC, deallocate)(self->alloc_ref, ptr, size);
42}
static DC_PUBLIC void deallocate(SELF *self, void *ptr, size_t size)
Definition template.h:127

◆ DC_TRAIT_ALLOC()

DC_TRAIT_ALLOC ( SELF )

◆ DC_TRAIT_REFERENCABLE_BY_PTR()

DC_TRAIT_REFERENCABLE_BY_PTR ( SELF )

◆ debug()

DC_PUBLIC void debug ( SELF const * self,
dc_debug_fmt fmt,
FILE * stream )
static

Definition at line 44 of file template.h.

44 {
45 fprintf(stream, DC_EXPAND_STRING(SELF) "@%p {\n", (void*)self);
46 fmt = dc_debug_fmt_scope_begin(fmt);
47 dc_debug_fmt_print(fmt, stream, "alloc: ");
48 NS(ALLOC, debug)(NS(NS(ALLOC, ref), deref)(self->alloc_ref), fmt, stream);
49 fprintf(stream, ",\n");
50
51 dc_debug_fmt_print(fmt, stream, "mocking: {\n");
52 fmt = dc_debug_fmt_scope_begin(fmt);
53
54#define DEBUG_MOCK_TOGGLE(name) \
55 dc_debug_fmt_print(fmt, stream, DC_EXPAND_STRING(NS(SELF, name)) ": %s,\n", \
56 DC_MOCKABLE_ENABLED(NS(SELF, name)) ? "enabled" : "disabled")
57
62
63#undef DEBUG_MOCK_TOGGLE
64
65 fmt = dc_debug_fmt_scope_end(fmt);
66 dc_debug_fmt_print(fmt, stream, "}\n");
67
68 fmt = dc_debug_fmt_scope_end(fmt);
69 dc_debug_fmt_print(fmt, stream, "}");
70}
static DC_PUBLIC void debug(SELF const *self, dc_debug_fmt fmt, FILE *stream)
Definition template.h:212
#define DEBUG_MOCK_TOGGLE(name)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_end(dc_debug_fmt fmt)
Definition fmt.h:57
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_scope_begin(dc_debug_fmt fmt)
Definition fmt.h:50

◆ delete()

DC_PUBLIC void delete ( SELF * self)
static

Definition at line 72 of file template.h.

72{ DC_ASSUME(self); }
#define DC_ASSUME(expr,...)
Definition panic.h:57

◆ new()

DC_PUBLIC SELF new ( ref alloc_ref)
static

Definition at line 23 of file template.h.

23 {
24 return (SELF){.alloc_ref = alloc_ref};
25}