plucky (3) VistaIOList.3.gz

Provided by: libvistaio-dev_1.2.19-3_amd64 bug

NAME

       VistaIOList - representation of a list of opaque items

SYNOPSIS

       #include <vistaio.h>

       VistaIOList vlist;

       VistaIOList VistaIOListCreate (void);

       int VistaIOListCount (VistaIOList vlist);

       VistaIOPointer VistaIOListFirst (VistaIOList vlist);

       VistaIOPointer VistaIOListLast (VistaIOList vlist);

       VistaIOPointer VistaIOListNext (VistaIOList vlist);

       VistaIOPointer VistaIOListPrev (VistaIOList vlist);

       VistaIOPointer VistaIOListCurr (VistaIOList vlist);

       void VistaIOListAdd (VistaIOList vlist, VistaIOPointer item);

       void VistaIOListInsert (VistaIOList vlist, VistaIOPointer item);

       void VistaIOListAppend (VistaIOList vlist, VistaIOPointer item);

       void VistaIOListPrepend (VistaIOList vlist, VistaIOPointer item);

       VistaIOPointer VistaIOListRemove (VistaIOList vlist);

       void VistaIOListConcat (VistaIOList vlist1, VistaIOList vlist2);

       void VistaIOListDestroy (VistaIOList vlist, void (*item_free)());

       VistaIOPointer VistaIOListTrim (VistaIOList vlist);

       VistaIOPointer VistaIOListSearch (VistaIOList vlist, int (*comp)(), VistaIOPointer comp_arg);

       VistaIOPointer VistaIOListGetCurr (VistaIOList vlist);

       void VistaIOListSetCurr (VistaIOList vlist, VistaIOPointer curr);

DESCRIPTION

   Introduction
       The VistaIOList data type and its associated routines allow programmers to create and manipulate lists of
       opaque items. A VistaIOList is an ordered list whose elements are pointers to opaque data structures.

       The elements of a VistaIOList are arranged in a sequential order so that it is meaningful to say that  an
       element  is  before  (or  after)  another element.  A VistaIOList has two pseudo-elements: BEFORE-ALL and
       AFTER-ALL. BEFORE-ALL is located before all other elements of the list. The element before BEFORE-ALL  is
       still  BEFORE-ALL  itself; the element after BEFORE-ALL is the first element of the list (or AFTER-ALL if
       the list is empty). Similarly, AFTER-ALL is located after all other elements of  the  list.  The  element
       after  AFTER-ALL  is still AFTER-ALL itself; the element before AFTER-ALL is the last element of the list
       (or BEFORE-ALL if the list is empty).

       A VistaIOList also has the notion of a current  item.  The  current  item  of  a  VistaIOList  may  be  a
       particular element of the list, the pseudo-element BEFORE-ALL, or the pseudo-element AFTER-ALL. The value
       of the current item is simply the value of the element it represents, or NULL if it is the pseudo-element
       BEFORE-ALL or AFTER-ALL.

   Routines and Macros
       VistaIOListCreate  creates  an  empty VistaIOList, makes BEFORE-ALL the current item, and returns the new
       VistaIOList.

       VistaIOListCount returns the number of elements in vlist.

       VistaIOListFirst makes the first element of vlist the current item if  vlist  is  not  empty,  and  makes
       BEFORE-ALL the current item otherwise. It returns the value of the new current item.

       VistaIOListLast  makes the last element of vlist the current item if vlist is not empty, and makes AFTER-
       ALL the current item otherwise. It returns the value of the new current item.

       VistaIOListNext makes the element after the current item of vlist the new current item, and  returns  the
       value of the new current item.

       VistaIOListPrev  makes the element before the current item of vlist the new current item, and returns the
       value of the new current item.

       VistaIOListCurr returns the value of the current item of vlist.

       VistaIOListAdd adds item to vlist immediately after the current item if the current item  is  not  AFTER-
       ALL.   Otherwise, item is added to vlist immediately before AFTER-ALL.  VistaIOListAdd makes item the new
       current item.

       VistaIOListInsert adds item to vlist immediately before the current item  if  the  current  item  is  not
       BEFORE-ALL.   Otherwise,  item  is  added to vlist immediately after BEFORE-ALL.  VistaIOListInsert makes
       item the new current item.

       VistaIOListAppend adds item to vlist immediately before AFTER-ALL, and makes item the new current item.

       VistaIOListPrepend adds item to vlist immediately after BEFORE-ALL, and makes item the new current item.

       VistaIOListRemove returns NULL  if  the  current  item  of  vlist  is  either  BEFORE-ALL  or  AFTER-ALL.
       Otherwise,  VistaIOListRemove removes the current item from vlist, returns the value of the element being
       removed, and makes the element after the original current item the new current item.

       VistaIOListConcat concatenates vlist2 to the end of vlist1.  If the current item of vlist1 is  AFTER-ALL,
       then  VistaIOListConcat  will  make  the  element  after  BEFORE-ALL  of  vlist2  the current item of the
       concatenated list; otherwise, the current item of vlist1 will become the current item of the concatenated
       list.   The  concatenated  list  will  be  stored  in  vlist1,  and  vlist2 will cease to exist after the
       concatenation.

       VistaIOListDestroy frees all the storage area occupied by vlist, including the storage area  occupied  by
       the  opaque  data  objects pointed to by the elements of vlist. item_free is a pointer to a function that
       knows how to free an opaque data object. item_free must have the following prototype:
              void item_free (VistaIOPointer opaque_object)
       where opaque_object is the object to be freed.

       VistaIOListTrim removes the last element of vlist, returns the value of the element  being  removed,  and
       makes  the  new  last  element  the  current  item  (by  calling  VistaIOListLast) if vlist is not empty.
       Otherwise, VistaIOListTrim makes AFTER-ALL the current item and returns NULL.

       VistaIOListSearch searches for the first occurrence (starting from the current item) of an element  e  in
       vlist  such  that  a  call  to  (*comp)(e, comp_arg) returns a non-zero value. If such an element exists,
       VistaIOListSearch makes that element the current item and returns the value of that element.   Otherwise,
       VistaIOListSearch makes AFTER-ALL the current item and returns NULL.

       VistaIOListGetCurr  returns  an  opaque pointer denoting the current item.  This pointer is only intended
       for use in a subsequent invocation of VistaIOListSetCurr.

       VistaIOListSetCurr sets  the  identity  of  the  current  item  using  a  value  previously  supplied  by
       VistaIOListGetCurr.  Care  must be taken to ensure that this isn't an item that has been removed from the
       list since VistaIOListGetCurr was used.

SEE ALSO

AUTHOR

       Daniel Ko <ko@cs.ubc.ca>

       Adaption to vistaio: Gert Wollny <gw.fossdev@gmail.com>