list.rpgle 7.08 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
      * 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__