Changeset 265 for trunk/archive/pslib/src/Utils/dlist.c
- Timestamp:
- Mar 19, 2004, 9:14:22 AM (22 years ago)
- File:
-
- 1 edited
-
trunk/archive/pslib/src/Utils/dlist.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/pslib/src/Utils/dlist.c
r169 r265 342 342 return list; 343 343 } 344 345 /*****************************************************************************/346 #if 0 // testing347 348 typedef struct { int i; } X;349 static X *xAlloc(int i) { X *x = psAlloc(sizeof(X)); x->i = i; return x; }350 static void xFree(X *x) { psFree(x); }351 352 int main(void)353 {354 psDlist *list = psDlistAlloc(NULL); // list of metadata355 356 psDlistAppend(list, xAlloc(1));357 psDlistAppend(list, xAlloc(2));358 psDlistAppend(list, xAlloc(3));359 /*360 * Print that data361 */362 for (psDlistElem *ptr = list->head; ptr != NULL; ptr = ptr->next) {363 printf("%d ", ((X *)(ptr->data))->i);364 }365 printf("\n");366 /*367 * Print it again368 */369 (void)psDlistGet(list, PS_DLIST_TAIL); // initialise iterator370 X *x = NULL;371 while ((x = psDlistGet(list, PS_DLIST_PREV)) != NULL) {372 printf("%d ", x->i);373 }374 printf("\n");375 #if 1376 /*377 * Convert to an array378 */379 psVoidPtrArray *arr = psDlistToArray(list);380 list = NULL; // it's been freed381 382 for (int i = 0; i < arr->n; i++) {383 printf("%d ", ((X *)(arr->arr[i]))->i);384 }385 printf("\n");386 #if 1387 /*388 * Convert back to a list389 */390 list = psArrayToDlist(arr);391 arr = NULL; // it's been freed392 393 (void)psDlistGet(list, PS_DLIST_TAIL); // initialise iterator394 while ((x = psDlistGet(list, PS_DLIST_PREV)) != NULL) {395 printf("%d ", x->i);396 }397 printf("\n");398 #endif399 psVoidPtrArrayFree(arr, (void (*)(void *))xFree);400 #endif401 402 #if 1403 list = psArrayToDlist(psDlistToArray(list));404 405 (void)psDlistGet(list, PS_DLIST_TAIL); // initialise iterator406 while ((x = psDlistGet(list, PS_DLIST_PREV)) != NULL) {407 printf("%d ", x->i);408 }409 printf("\n");410 #endif411 /*412 * Clean up413 */414 psDlistFree(list, (void (*)(void *))xFree);415 /*416 * Check for memory leaks417 */418 fprintf(stderr,"Checking for memory leaks:\n");419 psMemCheckLeaks(0, NULL, stderr);420 421 return 0;422 }423 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
