6#define TRAIT_VECTOR(SELF) \
7 REQUIRE_TYPE(SELF, item_t); \
8 REQUIRE_TYPE(SELF, index_t); \
9 REQUIRE_METHOD(NS(SELF, item_t) const*, SELF, read, (SELF const*, NS(SELF, index_t))); \
10 REQUIRE_METHOD(NS(SELF, item_t) const*, SELF, try_read, (SELF const*, NS(SELF, index_t))); \
11 REQUIRE_METHOD(NS(SELF, item_t)*, SELF, write, (SELF*, NS(SELF, index_t))); \
12 REQUIRE_METHOD(NS(SELF, item_t)*, SELF, try_write, (SELF*, NS(SELF, index_t))); \
13 REQUIRE_METHOD(void, SELF, remove_at, (SELF*, NS(SELF, index_t), NS(SELF, index_t))); \
14 REQUIRE_METHOD(bool, SELF, try_pop, (SELF*, NS(SELF, item_t)*)); \
15 REQUIRE_METHOD(NS(SELF, item_t), SELF, pop, (SELF*)); \
16 REQUIRE_METHOD(NS(SELF, item_t)*, SELF, push, (SELF*, NS(SELF, item_t))); \
17 REQUIRE_METHOD(NS(SELF, index_t), SELF, size, (SELF const*)); \
18 TRAIT_ITERABLE(SELF); \
19 TRAIT_DELETABLE(SELF); \
20 TRAIT_CLONEABLE(SELF);