Port to shared-ptr interface
This commit is contained in:
1 parent
2296f203fd
commit
7e8cb07a6c
1 file changed
+13
-46
+13
-46
@@ -259,77 +259,44 @@ static void test_emplace(void)
|
|||||||
}
|
}
|
||||||
/********************************************************************************************/
|
/********************************************************************************************/
|
||||||
|
|
||||||
/* Test intrusive shared pointer + buffer */
|
/* Test integration shared pointer + buffer */
|
||||||
#include "m-i-shared.h"
|
#include "m-shared-ptr.h"
|
||||||
|
|
||||||
// Tiny test structure
|
// Tiny test structure
|
||||||
typedef struct test_s {
|
typedef struct test_s {
|
||||||
ISHARED_PTR_INTERFACE(ishared_itest, struct test_s);
|
|
||||||
char buffer[52];
|
char buffer[52];
|
||||||
char bigbuffer[1000000];
|
char bigbuffer[1000000];
|
||||||
} test_t;
|
} test_t;
|
||||||
static void test_init(test_t *p) { memset(p->buffer, 0x00, 52); }
|
static void test_init(test_t *p) { memset(p->buffer, 0x00, 52); }
|
||||||
static void test_clear(test_t *p) { memset(p->buffer, 0xFF, 52); }
|
static void test_clear(test_t *p) { memset(p->buffer, 0xFF, 52); }
|
||||||
ISHARED_PTR_DEF(ishared_itest, test_t,
|
SHARED_PTR_DEF(shared_test, test_t, (INIT(test_init M_IPTR), CLEAR(test_clear M_IPTR)))
|
||||||
(INIT(test_init M_IPTR), CLEAR(test_clear M_IPTR), DEL(API(free, NONE, ARG2))))
|
|
||||||
|
|
||||||
typedef struct test2_s {
|
BUFFER_DEF(buffer_itest, shared_test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE, SHARED_PTR_OPLIST(shared_test, (INIT(1), CLEAR(1))))
|
||||||
ISHARED_PTR_INTERFACE(ishared_itest2, struct test_s);
|
|
||||||
char buffer[52];
|
|
||||||
} test2_t;
|
|
||||||
static inline void ishared_itest2_init_data(test2_t *d)
|
|
||||||
{
|
|
||||||
memset(d->buffer, 0, sizeof (d->buffer));
|
|
||||||
}
|
|
||||||
ISHARED_PTR_DEF(ishared_itest2, test2_t, (INIT(API_2(ishared_itest2_init_data)), CLEAR(M_NOTHING_DEFAULT)))
|
|
||||||
|
|
||||||
typedef struct test3_s {
|
|
||||||
ISHARED_PTR_INTERFACE(ishared_itest3, struct test_s);
|
|
||||||
char buffer[52];
|
|
||||||
} test3_t;
|
|
||||||
ISHARED_PTR_DEF(ishared_itest3, test3_t, (CLEAR(M_NOTHING_DEFAULT)))
|
|
||||||
|
|
||||||
typedef struct test4_s {
|
|
||||||
ISHARED_PTR_INTERFACE(ishared_itest4, struct test_s);
|
|
||||||
char buffer[52];
|
|
||||||
} test4_t;
|
|
||||||
ISHARED_PTR_DEF(ishared_itest4, test4_t, (INIT(0), DEL(0), INIT(M_MEMSET_DEFAULT), CLEAR(M_NOTHING_DEFAULT)))
|
|
||||||
|
|
||||||
static test_t *test_new(void)
|
|
||||||
{
|
|
||||||
test_t *p = M_ASSIGN_CAST(test_t*, malloc (sizeof (test_t)));
|
|
||||||
assert (p != NULL);
|
|
||||||
test_init (p);
|
|
||||||
return ishared_itest_init(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
BUFFER_DEF(buffer_itest, test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE,
|
|
||||||
ISHARED_PTR_OPLIST(ishared_itest))
|
|
||||||
|
|
||||||
static buffer_itest_t comm1;
|
static buffer_itest_t comm1;
|
||||||
static buffer_itest_t comm2;
|
static buffer_itest_t comm2;
|
||||||
|
|
||||||
static void test_conso1(void *arg)
|
static void test_conso1(void *arg)
|
||||||
{
|
{
|
||||||
test_t *p;
|
shared_test_t *p;
|
||||||
assert (arg == NULL);
|
assert (arg == NULL);
|
||||||
for(int i = 0; i < 10;i++) {
|
for(int i = 0; i < 10;i++) {
|
||||||
buffer_itest_pop(&p, comm1);
|
buffer_itest_pop(&p, comm1);
|
||||||
for(int j = 0; j < 52; j++)
|
for(int j = 0; j < 52; j++)
|
||||||
assert (p->buffer[j] == (char) ((j * j * 17) + j * 42 + 1));
|
assert (shared_test_ref(p)->buffer[j] == (char) ((j * j * 17) + j * 42 + 1));
|
||||||
ishared_itest_clear(p);
|
shared_test_release(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_conso2(void *arg)
|
static void test_conso2(void *arg)
|
||||||
{
|
{
|
||||||
test_t *p;
|
shared_test_t *p;
|
||||||
assert (arg == NULL);
|
assert (arg == NULL);
|
||||||
for(int i = 0; i < 10;i++) {
|
for(int i = 0; i < 10;i++) {
|
||||||
buffer_itest_pop(&p, comm2);
|
buffer_itest_pop(&p, comm2);
|
||||||
for(int j = 0; j < 52; j++)
|
for(int j = 0; j < 52; j++)
|
||||||
assert (p->buffer[j] == (char) ((j * j * 17) + j * 42 + 1));
|
assert (shared_test_ref(p)->buffer[j] == (char) ((j * j * 17) + j * 42 + 1));
|
||||||
ishared_itest_clear(p);
|
shared_test_release(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,13 +304,13 @@ static void test_prod(void *arg)
|
|||||||
{
|
{
|
||||||
assert (arg == NULL);
|
assert (arg == NULL);
|
||||||
for(unsigned int i = 0; i < 10;i++) {
|
for(unsigned int i = 0; i < 10;i++) {
|
||||||
test_t *p = test_new();
|
shared_test_t *p = shared_test_new();
|
||||||
for(int j = 0; j < 52; j++) {
|
for(int j = 0; j < 52; j++) {
|
||||||
p->buffer[j] = (char) ((j * j * 17) + j * 42 + 1);
|
shared_test_ref(p)->buffer[j] = (char) ((j * j * 17) + j * 42 + 1);
|
||||||
}
|
}
|
||||||
buffer_itest_push(comm1, p);
|
buffer_itest_push(comm1, p);
|
||||||
buffer_itest_push(comm2, p);
|
buffer_itest_push(comm2, p);
|
||||||
ishared_itest_clear(p);
|
shared_test_clear(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user