7#define TRAIT_ARENA(SELF) \
8 REQUIRE_TYPE(SELF, index_t); \
9 REQUIRE_TYPE(SELF, value_t); \
10 REQUIRE_METHOD(NS(SELF, index_t), SELF, insert, (SELF*, NS(SELF, value_t))); \
11 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, write, (SELF*, NS(SELF, index_t))); \
12 REQUIRE_METHOD(NS(SELF, value_t)*, SELF, try_write, (SELF*, NS(SELF, index_t))); \
13 REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, read, (SELF const*, NS(SELF, index_t))); \
14 REQUIRE_METHOD(NS(SELF, value_t) const*, SELF, try_read, (SELF const*, NS(SELF, index_t))); \
15 REQUIRE_METHOD(bool, SELF, try_remove, (SELF*, NS(SELF, index_t), NS(SELF, value_t)*)); \
16 REQUIRE_METHOD(NS(SELF, value_t), SELF, remove, (SELF*, NS(SELF, index_t))); \
17 TRAIT_ITERABLE(SELF); \
18 TRAIT_CLONEABLE(SELF); \
19 TRAIT_DELETABLE(SELF);