      * Summary: lists interfaces
      * Description: this module implement the list support used in
      * various place in the library.
      *
      * Copy: See Copyright for the status of this software.
      *
      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.

      /if not defined(XML_LINK_INCLUDE__)
      /define XML_LINK_INCLUDE__

      /include "libxmlrpg/xmlversion"

     d xmlLinkPtr      s               *   based(######typedef######)

     d xmlListPtr      s               *   based(######typedef######)

      * xmlListDeallocator:
      * @lk:  the data to deallocate
      *
      * Callback function used to free data from a list.

     d xmlListDeallocator...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * xmlListDataCompare:
      * @data0: the first data
      * @data1: the second data
      *
      * Callback function used to compare 2 data.
      *
      * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.

     d xmlListDataCompare...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * xmlListWalker:
      * @data: the data found in the list
      * @user: extra user provided data to the walker
      *
      * Callback function used when walking a list with xmlListWalk().
      *
      * Returns 0 to stop walking the list, 1 otherwise.

     d xmlListWalker   s               *   based(######typedef######)
     d                                     procptr

      * Creation/Deletion

     d xmlListCreate   pr                  extproc('xmlListCreate')
     d                                     like(xmlListPtr)
     d  deallocator                        value like(xmlListDeallocator)
     d  compare                            value like(xmlListDataCompare)

     d xmlListDelete   pr                  extproc('xmlListDelete')
     d  l                                  value like(xmlListPtr)

      * Basic Operators

     d xmlListSearch   pr              *   extproc('xmlListSearch')             void *
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListReverseSearch...
     d                 pr              *   extproc('xmlListReverseSearch')      void *
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListInsert   pr            10i 0 extproc('xmlListInsert')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListAppend   pr            10i 0 extproc('xmlListAppend')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListRemoveFirst...
     d                 pr            10i 0 extproc('xmlListRemoveFirst')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListRemoveLast...
     d                 pr            10i 0 extproc('xmlListRemoveLast')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListRemoveAll...
     d                 pr            10i 0 extproc('xmlListRemoveAll')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListClear    pr                  extproc('xmlListClear')
     d  l                                  value like(xmlListPtr)

     d xmlListEmpty    pr            10i 0 extproc('xmlListEmpty')
     d  l                                  value like(xmlListPtr)

     d xmlListFront    pr                  extproc('xmlListFront')
     d                                     like(xmlLinkPtr)
     d  l                                  value like(xmlListPtr)

     d xmlListEnd      pr                  extproc('xmlListEnd')
     d                                     like(xmlLinkPtr)
     d  l                                  value like(xmlListPtr)

     d xmlListSize     pr            10i 0 extproc('xmlListSize')
     d  l                                  value like(xmlListPtr)

     d xmlListPopFront...
     d                 pr                  extproc('xmlListPopFront')
     d  l                                  value like(xmlListPtr)

     d xmlListPopBack...
     d                 pr                  extproc('xmlListPopBack')
     d  l                                  value like(xmlListPtr)

     d xmlListPushFront...
     d                 pr            10i 0 extproc('xmlListPushFront')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

     d xmlListPushBack...
     d                 pr            10i 0 extproc('xmlListPushBack')
     d  l                                  value like(xmlListPtr)
     d  data                           *   value                                void *

      * Advanced Operators

     d xmlListReverse  pr                  extproc('xmlListReverse')
     d  l                                  value like(xmlListPtr)

     d xmlListSort     pr                  extproc('xmlListSort')
     d  l                                  value like(xmlListPtr)

     d xmlListWalk     pr                  extproc('xmlListWalk')
     d  l                                  value like(xmlListPtr)
     d  walker                             value like(xmlListWalker)
     d  user                           *   value                                const void *

     d xmlListReverseWalk...
     d                 pr                  extproc('xmlListReverseWalk')
     d  l                                  value like(xmlListPtr)
     d  walker                             value like(xmlListWalker)
     d  user                           *   value                                const void *

     d xmlListMerge    pr                  extproc('xmlListMerge')
     d  l1                                 value like(xmlListPtr)
     d  l2                                 value like(xmlListPtr)

     d xmlListDup      pr                  extproc('xmlListDup')
     d                                     like(xmlListPtr)
     d  old                                value like(xmlListPtr)

     d xmlListCopy     pr            10i 0 extproc('xmlListCopy')
     d  cur                                value like(xmlListPtr)
     d  old                                value like(xmlListPtr)               const

      * Link operators

     d xmlListGetData  pr              *   extproc('xmlListGetData')            void *
     d  lk                                 value like(xmlLinkPtr)

      * xmlListUnique()
      * xmlListSwap

      /endif                                                                    XML_LINK_INCLUDE__
