57 lines
907 B
C
57 lines
907 B
C
#include "m-i-list.h"
|
|
|
|
typedef struct data_s {
|
|
M_ILIST_INTERFACE(list1, struct data_s);
|
|
char *ptr;
|
|
int n;
|
|
} data_t;
|
|
|
|
static void
|
|
data_init(data_t *p)
|
|
{
|
|
M_ILIST_INIT_FIELD(list1, *p);
|
|
p->ptr = malloc(100);
|
|
p->n = 100;
|
|
}
|
|
|
|
static void
|
|
data_clear(data_t *p)
|
|
{
|
|
free(p->ptr);
|
|
p->n = 0;
|
|
}
|
|
|
|
static void
|
|
data_init_set(data_t *p, data_t s)
|
|
{
|
|
p->ptr = malloc(s.n);
|
|
p->n = s.n;
|
|
memcpy(p->ptr, s.ptr, s.n);
|
|
}
|
|
|
|
#define DATA_OP (INIT(API_2(data_init)), INIT_SET(API_2(data_init_set)), CLEAR(API_2(data_clear)) )
|
|
|
|
M_ILIST_DEF(list1, data_t, DATA_OP)
|
|
|
|
data_t pool[100];
|
|
|
|
int main(void)
|
|
{
|
|
list1_t l;
|
|
|
|
list1_init(l);
|
|
data_init(&pool[0]);
|
|
list1_push_back(l, &pool[0]);
|
|
data_init(&pool[1]);
|
|
list1_push_back(l, &pool[1]);
|
|
|
|
list1_it_t it;
|
|
list1_it(it, l);
|
|
data_init(&pool[2]);
|
|
list1_insert(l, it, &pool[2]);
|
|
|
|
list1_clear(l);
|
|
|
|
exit(0);
|
|
}
|