list.inc 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. (*
  2. * Summary: lists interfaces
  3. * Description: this module implement the list support used in
  4. * various place in the library.
  5. *
  6. * Copy: See Copyright for the status of this software.
  7. *
  8. * Author: Gary Pennington <[email protected]>
  9. *)
  10. {$IFDEF POINTER}
  11. xmlLinkPtr = ^xmlLink;
  12. xmlListPtr = ^xmlList;
  13. {$ENDIF}
  14. {$IFDEF TYPE}
  15. xmlLink = record end;
  16. xmlList = record end;
  17. (**
  18. * xmlListDeallocator:
  19. * @lk: the data to deallocate
  20. *
  21. * Callback function used to free data from a list.
  22. *)
  23. xmlListDeallocator = procedure(lk: xmlLinkPtr); EXTDECL;
  24. (**
  25. * xmlListDataCompare:
  26. * @data0: the first data
  27. * @data1: the second data
  28. *
  29. * Callback function used to compare 2 data.
  30. *
  31. * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
  32. *)
  33. xmlListDataCompare = function(data0, data1: pointer): cint; EXTDECL;
  34. (**
  35. * xmlListWalker:
  36. * @data: the data found in the list
  37. * @user: extra user provided data to the walker
  38. *
  39. * Callback function used when walking a list with xmlListWalk().
  40. *
  41. * Returns 0 to stop walking the list, 1 otherwise.
  42. *)
  43. xmlListWalker = function(data, user: pointer): cint; EXTDECL;
  44. {$ENDIF}
  45. {$IFDEF FUNCTION}
  46. (* Creation/Deletion *)
  47. function xmlListCreate(deallocator: xmlListDeallocator; compare: xmlListDataCompare): xmlListPtr; EXTDECL; external xml2lib;
  48. procedure xmlListDelete(l: xmlListPtr); EXTDECL; external xml2lib;
  49. (* Basic Operators *)
  50. function xmlListSearch(l: xmlListPtr; data: pointer): pointer; EXTDECL; external xml2lib;
  51. function xmlListReverseSearch(l: xmlListPtr; data: pointer): pointer; EXTDECL; external xml2lib;
  52. function xmlListInsert(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  53. function xmlListAppend(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  54. function xmlListRemoveFirst(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  55. function xmlListRemoveLast(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  56. function xmlListRemoveAll(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  57. procedure xmlListClear(l: xmlListPtr); EXTDECL; external xml2lib;
  58. function xmlListEmpty(l: xmlListPtr): cint; EXTDECL; external xml2lib;
  59. function xmlListFront(l: xmlListPtr): xmlLinkPtr; EXTDECL; external xml2lib;
  60. function xmlListEnd(l: xmlListPtr): xmlLinkPtr; EXTDECL; external xml2lib;
  61. function xmlListSize(l: xmlListPtr): cint; EXTDECL; external xml2lib;
  62. procedure xmlListPopFront(l: xmlListPtr); EXTDECL; external xml2lib;
  63. procedure xmlListPopBack(l: xmlListPtr); EXTDECL; external xml2lib;
  64. function xmlListPushFront(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  65. function xmlListPushBack(l: xmlListPtr; data: pointer): cint; EXTDECL; external xml2lib;
  66. (* Advanced Operators *)
  67. procedure xmlListReverse(l: xmlListPtr); EXTDECL; external xml2lib;
  68. procedure xmlListSort(l: xmlListPtr); EXTDECL; external xml2lib;
  69. procedure xmlListWalk(l: xmlListPtr; walker: xmlListWalker; user: pointer); EXTDECL; external xml2lib;
  70. procedure xmlListReverseWalk(l: xmlListPtr; walker: xmlListWalker; user: pointer); EXTDECL; external xml2lib;
  71. procedure xmlListMerge(l1, l2: xmlListPtr); EXTDECL; external xml2lib;
  72. function xmlListDup(old: xmlListPtr): xmlListPtr; EXTDECL; external xml2lib;
  73. function xmlListDup(cur, old: xmlListPtr): cint; EXTDECL; external xml2lib;
  74. (* Link operators *)
  75. function xmlLinkGetData(lk: xmlLinkPtr): cint; EXTDECL; external xml2lib;
  76. {$ENDIF}