/* mslist_dome.h -- How to use? dome file.
Copyright (C) 2013 meng shi.
mslist is a control node list, which is based on
the offset to achieve, and it is not related to a
node type.
version: 0.02.
^ _ ^: goodbye p->next, I like offset and memory. */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "mslist.h"
#define TIME time(0)
#define SR srand((unsigned)TIME)
#define RDM rand()
typedef struct test_def
{
int x, y;
float z, r;
void *node_link;
} test;
int
main (void)
{
int i = 0, j = 0.0;
void *v, *node;
test *t;
list l;
unsigned int list_struct_size = sizeof (struct test_def);
l = create_list (list_struct_size);
printf ("start insert data:\n");
while (i++ < 3 && j++ < 3.0)
{
t = malloc (list_struct_size);
t->x = i; t->y = i; t->z = j; t->r = j;
printf ("data x:%d\tdata y:%d\tdata z:%f\tdata r:%f\n", t->x, t->y, t->z, t->r);
if (!insert_node (l, (void *)t))
{
printf ("insert is error\n");
}
}
printf ("output insert data:\n");
node = (void *)*(unsigned long *)((void *)l+OFFSET);
while (NULL != node)
{
v = node;
printf ("data x:%d\tdata y:%d\t", ((test *)node)->x, ((test *)node)->y);
printf ("data z:%f\tdata r:%f\n", ((test *)node)->z, ((test *)node)->r);
node = (void *)*(unsigned long *)(node+(*l).offset);
free (v);
}
exit (0);
}