diff --git a/m-buffer.h b/m-buffer.h index 9deb9bc4..19bdffaf 100644 --- a/m-buffer.h +++ b/m-buffer.h @@ -737,6 +737,8 @@ M_C(name, _init)(buffer_t v, size_t size) \ } \ } \ } \ + \ + M_EMPLACE_QUEUE_DEF(name, buffer_t, M_C(name, _emplace), oplist, M_EMPLACE_QUEUE_GENE) diff --git a/tests/test-mbuffer.c b/tests/test-mbuffer.c index 36de313b..c70f571c 100644 --- a/tests/test-mbuffer.c +++ b/tests/test-mbuffer.c @@ -271,6 +271,18 @@ static void test_no_thread(void) buffer_llong_clear(buff); } +static void test_emplace(void) +{ + buffer_mpz_t b; + buffer_mpz_init(b, 32); + buffer_mpz_emplace_str(b, "56"); + testobj_t o; + testobj_init(o); + buffer_mpz_pop(&o, b); + assert( testobj_cmp_ui(o, 56) == 0 ); + testobj_clear(o); + buffer_mpz_clear(b); +} /********************************************************************************************/ /* Test intrusive shared pointer + buffer */ @@ -642,6 +654,7 @@ int main(void) test_stack(); test_stack2(); test_no_thread(); + test_emplace(); test_global_ishared(); test_queue(1000000, 2, 2148371710223136ULL); test_spsc();