Navigate within a resource list
Name
ggiGAIsListEmpty, ggiGAGetFirst, ggiGAGetNext, ggiGAGetNextSkipCap, ggiGAGetPrev, ggiGAGetPrevSkipCap : Navigate within a resource list
Synopsis
#include <ggi/galloc.h> #define ggiGAIsListEmpty(list) \ ggiGAGetFirst(list) == NULL ggiGA_resource_handle ggiGAGetFirst(ggiGA_resource_list list); ggiGA_resource_handle ggiGAGetNext(ggiGA_resource_handle handle); ggiGA_resource_handle ggiGAGetNextSkipCap(ggiGA_resource_handle handle); ggiGA_resource_handle ggiGAGetPrev(ggiGA_resource_list list, ggiGA_resource_handle handle); ggiGA_resource_handle ggiGAGetPrevSkipCap(ggiGA_resource_list list, ggiGA_resource_handle handle);
Description
These functions allow you to navigate through the list.
Return Values
ggiGAGetFirst returns the first resource in the list or NULL if list is empty.
ggiGAGetNext returns the next resource in the list.
ggiGAGetNextSkipCap is as ggiGAGetNext, but skips a cap resource if present
ggiGAGetPrev returns the previous resource (or last one if handle == NULL)
ggiGAGetPrevSkipCap is as ggiGAGetPrev, but skips a cap resource if present
Example
ggiGA_resource_list request; ggiGA_resource_handle tmp; ... request = ggiGACreateList(); if (request == NULL) goto fail; ggiGAAdd(&request, &props, GA_RT_SPRITE_SPRITE, &hnd); ggiGAAddMode(vis, &request, &mode, &db, &modehnd); ... /* forward traversal */ tmp = ggiGAGetFirst(request); while (tmp != NULL) { ... tmp = ggiGAGetNext(tmp); } /* while */ /* backward traversal */ tmp = ggiGAGetPrev(request, NULL); while (tmp != NULL) { ... tmp = ggiGAGetPrev(request, tmp); } /* while */ /* test for emptiness */ if (ggiGAIsListEmpty(request)) printf("nothing to do\n"); ggiDestroyList(&reqlist);