3 /* A simple example to demonstrate the use of swags */
5 /* Copyright (c) 2004 Arnaud Legrand. All rights reserved. */
7 /* This program is free software; you can redistribute it and/or modify it
8 * under the terms of the license (GNU LGPL) which comes with this package. */
15 s_xbt_swag_hookup_t setA;
16 s_xbt_swag_hookup_t setB;
18 } shmurtz, s_shmurtz_t, *shmurtz_t;
22 shmurtz_t obj1, obj2, obj;
25 obj1 = calloc(1,sizeof(s_shmurtz_t));
26 obj2 = calloc(1,sizeof(s_shmurtz_t));
31 printf("%p %p %d\n",obj1,&(obj1->setB),
32 (char *)&(obj1->setB) - (char *)obj1);
34 setA = xbt_swag_new(xbt_swag_offset(*obj1,setA));
35 setB = xbt_swag_new(xbt_swag_offset(*obj1,setB));
37 xbt_swag_insert(obj1, setA);
38 xbt_swag_insert(obj1, setB);
39 xbt_swag_insert(obj2, setA);
40 xbt_swag_insert(obj2, setB);
42 xbt_swag_remove(obj1, setB);
43 /* xbt_swag_remove(obj2, setB);*/
45 xbt_swag_foreach(obj,setA) {
46 printf("\t%s\n",obj->name);
49 xbt_swag_foreach(obj,setB) {
50 printf("\t%s\n",obj->name);
53 printf("Belongs : %d\n", xbt_swag_belongs(obj2,setB));
55 printf("%d %d\n", xbt_swag_size(setA),xbt_swag_size(setB));