29 X("seq::empty", test_seq_empty), \
30 X("seq::push_less_than_32", test_seq_push_less_than_32), \
31 X("seq::push_more_than_32", test_seq_push_more_than_32)
34# define SEQ_TEST_LOG(...) DBG("SEQ_TEST", __VA_ARGS__)
36# define SEQ_TEST_LOG(...)
88 for (
int i = 0; i < 2000; i++) {
112 for (
int i = 0; i < 2000; i++) {
#define RELEASE_CONTEXT(x)
#define ASSERT_NOT_NULL(x)
#define SHUTDOWN_ENGINE(mm, engine)
#define MAKE_ENGINE(mm, engine)
#define MAKE_CONTEXT(engine, x)
seq_t seq_push(const srn_context_t *ctx, const seq_t *seq, seq_elem_t x)
seq_t seq_empty(const srn_context_t *ctx)
seq_lookup_result_t seq_get(const srn_context_t *ctx, const seq_t *seq, size_t n)
Negative index is not supported.
This is an implementation of bit - partitioned, persistent, immutable sequence For more information,...
void * seq_elem_t
We use generic pointers to refer to internal nodes, leaf nodes and even elements.
void test_seq_push_more_than_32()
void test_seq_push_less_than_32()
static void test_seq_empty()
#define SEQ_TEST_LOG(...)
size_t len
logical length.
seq_node_t * root
NULL means “all data is in tail”
seq_elem_t * tail
small tail array for fast push/pop.
uint16_t tail_len
0..SEQ_BR