Testing Linked List against multiple data types
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct instance {
int a, b;
float f;
char str[8];
int (*p) (const char *);
};
int
main (void)
{
llist mylist;
node *bufnode;
struct search_result sr;
int i = -1;
char string[] = "Hello World";
float myf = 2.5;
struct instance strc = {1, 2, 3.4, "Five", puts};
struct instance otherstrc;
init_llist (&mylist);
bufnode = init_node ("struct", (char *)&strc, sizeof (struct instance));
add_node (&mylist, bufnode);
bufnode = init_node ("int", (char *)&i, sizeof (int));
add_node (&mylist, bufnode);
bufnode = init_node ("string", string, strlen ("Hello World") + 1);
add_node (&mylist, bufnode);
bufnode = init_node ("float", (char *)&myf, sizeof (float));
add_node (&mylist, bufnode);
sr = search_node (&mylist, "struct");
memcpy (&otherstrc, sr.n->data, sizeof (struct instance));
printf ("otherstrc: %d %d %f %s\n",
otherstrc.a, otherstrc.b, otherstrc.f , otherstrc.str);
otherstrc.p("Nice?");
del_node (&mylist, sr.n, sr.prior);
sr = search_node (&mylist, "int");
printf ("%d\n", *(int *)sr.n->data);
del_node (&mylist, sr.n, sr.prior);
sr = search_node (&mylist, "float");
printf ("%f\n", *(float *)sr.n->data);
del_node (&mylist, sr.n, sr.prior);
sr = search_node (&mylist, "string");
printf ("%s\n", sr.n->data);
del_node (&mylist, sr.n, sr.prior);
if (! mylist.first)
printf ("empty\n");
return 0;
}
Tested here: http://ideone.com/lTlp9