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);