Derive-C
Loading...
Searching...
No Matches
trait.h File Reference
Include dependency graph for trait.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define TRAIT_MAP(SELF)

Macro Definition Documentation

◆ TRAIT_MAP

#define TRAIT_MAP ( SELF)
Value:
REQUIRE_TYPE(SELF, value_t); \
REQUIRE_METHOD(NS(SELF, value_t)*, SELF, insert, (SELF*, NS(SELF, key_t), NS(SELF, value_t))); \
REQUIRE_METHOD(NS(SELF, value_t)*, SELF, try_insert, \
(SELF*, NS(SELF, key_t), NS(SELF, value_t))); \
REQUIRE_METHOD(NS(SELF, value_t)*, SELF, write, (SELF*, NS(SELF, key_t))); \
REQUIRE_METHOD(NS(SELF, value_t)*, SELF, try_write, (SELF*, NS(SELF, key_t))); \
REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, read, (SELF const*, NS(SELF, key_t))); \
REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, try_read, (SELF const*, NS(SELF, key_t))); \
REQUIRE_METHOD(bool, SELF, try_remove, (SELF*, NS(SELF, key_t), NS(SELF, value_t)*)); \
REQUIRE_METHOD(NS(SELF, value_t), SELF, remove, (SELF*, NS(SELF, key_t))); \
REQUIRE_METHOD(void, SELF, delete_entry, (SELF*, NS(SELF, key_t))); \
REQUIRE_METHOD(size_t, SELF, size, (SELF const*)); \
TRAIT_ITERABLE(SELF); \
TRAIT_CLONEABLE(SELF); \
TRAIT_DELETABLE(SELF);
static INDEX insert(SELF *self, VALUE value)
Definition template.h:171
static INDEX_TYPE size(SELF const *self)
Definition template.h:275
static VALUE remove(SELF *self, INDEX index)
Definition template.h:313
static VALUE * try_write(SELF *self, INDEX index)
Definition template.h:210
static bool delete_entry(SELF *self, INDEX index)
Definition template.h:322
static VALUE const * read(SELF const *self, INDEX index)
Definition template.h:240
static VALUE * write(SELF *self, INDEX index)
Definition template.h:222
static bool try_remove(SELF *self, INDEX index, VALUE *destination)
Definition template.h:292
static VALUE const * try_read(SELF const *self, INDEX index)
Definition template.h:228
static VALUE * try_insert(SELF *self, KEY key, VALUE value)
Definition template.h:196
KEY key_t
Definition template.h:70
#define NS(pre, post)
Definition namespace.h:4
#define REQUIRE_TYPE(obj, name)
Definition require.h:21
#define SELF
Definition def.h:52

Definition at line 7 of file trait.h.

7#define TRAIT_MAP(SELF) \
8 REQUIRE_TYPE(SELF, key_t); \
9 REQUIRE_TYPE(SELF, value_t); \
10 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, insert, (SELF*, NS(SELF, key_t), NS(SELF, value_t))); \
11 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, try_insert, \
12 (SELF*, NS(SELF, key_t), NS(SELF, value_t))); \
13 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, write, (SELF*, NS(SELF, key_t))); \
14 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, try_write, (SELF*, NS(SELF, key_t))); \
15 REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, read, (SELF const*, NS(SELF, key_t))); \
16 REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, try_read, (SELF const*, NS(SELF, key_t))); \
17 REQUIRE_METHOD(bool, SELF, try_remove, (SELF*, NS(SELF, key_t), NS(SELF, value_t)*)); \
18 REQUIRE_METHOD(NS(SELF, value_t), SELF, remove, (SELF*, NS(SELF, key_t))); \
19 REQUIRE_METHOD(void, SELF, delete_entry, (SELF*, NS(SELF, key_t))); \
20 REQUIRE_METHOD(size_t, SELF, size, (SELF const*)); \
21 TRAIT_ITERABLE(SELF); \
22 TRAIT_CLONEABLE(SELF); \
23 TRAIT_DELETABLE(SELF);