garray.inc 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. {$ifndef __G_ARRAY_H__}
  2. {$define __G_ARRAY_H__}
  3. //{$include gtypes.inc}
  4. type
  5. PGArray = ^TGArray;
  6. TGArray = record
  7. data : Pgchar;
  8. len : guint;
  9. end;
  10. PGByteArray = ^TGByteArray;
  11. TGByteArray = record
  12. data : Pguint8;
  13. len : guint;
  14. end;
  15. PGPtrArray = ^TGPtrArray;
  16. TGPtrArray = record
  17. pdata : Pgpointer;
  18. len : guint;
  19. end;
  20. {* Resizable arrays, remove fills any cleared spot and shortens the
  21. * array, while preserving the order. remove_fast will distort the
  22. * order by moving the last element to the position of the removed
  23. *}
  24. { macro function; see glib.cc for implementation}
  25. function g_array_append_val(a: PGArray; v : gpointer) : PGArray;
  26. function g_array_prepend_val(a: PGArray; v : gpointer) : PGArray;
  27. function g_array_insert_val(a: PGArray; i: guint; v : gpointer) : PGArray;
  28. function g_array_new(zero_terminated:gboolean; clear:gboolean; element_size:guint):PGArray;cdecl;external gliblib name 'g_array_new';
  29. function g_array_sized_new(zero_terminated:gboolean; clear:gboolean; element_size:guint; reserved_size:guint):PGArray;cdecl;external gliblib name 'g_array_sized_new';
  30. function g_array_free(parray:PGArray; free_segment:gboolean):Pgchar;cdecl;external gliblib name 'g_array_free';
  31. function g_array_append_vals(parray:PGArray; data:gconstpointer; len:guint):PGArray;cdecl;external gliblib name 'g_array_append_vals';
  32. function g_array_prepend_vals(parray:PGArray; data:gconstpointer; len:guint):PGArray;cdecl;external gliblib name 'g_array_prepend_vals';
  33. function g_array_insert_vals(parray:PGArray; index:guint; data:gconstpointer; len:guint):PGArray;cdecl;external gliblib name 'g_array_insert_vals';
  34. function g_array_set_size(parray:PGArray; length:guint):PGArray;cdecl;external gliblib name 'g_array_set_size';
  35. function g_array_remove_index(parray:PGArray; index:guint):PGArray;cdecl;external gliblib name 'g_array_remove_index';
  36. function g_array_remove_index_fast(parray:PGArray; index:guint):PGArray;cdecl;external gliblib name 'g_array_remove_index_fast';
  37. procedure g_array_sort(parray:PGArray; compare_func:TGCompareFunc);cdecl;external gliblib name 'g_array_sort';
  38. procedure g_array_sort_with_data(parray:PGArray; compare_func:TGCompareDataFunc; user_data:gpointer);cdecl;external gliblib name 'g_array_sort_with_data';
  39. {* Resizable pointer array. This interface is much less complicated
  40. * than the above. Add appends appends a pointer. Remove fills any
  41. * cleared spot and shortens the array. remove_fast will again distort
  42. * order.
  43. *}
  44. { macro function }
  45. function g_ptr_array_index (parray: PGPtrArray; index: guint): gpointer;
  46. function g_ptr_array_new:PGPtrArray;cdecl;external gliblib name 'g_ptr_array_new';
  47. function g_ptr_array_sized_new(reserved_size:guint):PGPtrArray;cdecl;external gliblib name 'g_ptr_array_sized_new';
  48. function g_ptr_array_free(parray:PGPtrArray; free_seg:gboolean):Pgpointer;cdecl;external gliblib name 'g_ptr_array_free';
  49. procedure g_ptr_array_set_size(parray:PGPtrArray; length:gint);cdecl;external gliblib name 'g_ptr_array_set_size';
  50. function g_ptr_array_remove_index(parray:PGPtrArray; index:guint):gpointer;cdecl;external gliblib name 'g_ptr_array_remove_index';
  51. function g_ptr_array_remove_index_fast(parray:PGPtrArray; index:guint):gpointer;cdecl;external gliblib name 'g_ptr_array_remove_index_fast';
  52. function g_ptr_array_remove(parray:PGPtrArray; data:gpointer):gboolean;cdecl;external gliblib name 'g_ptr_array_remove';
  53. function g_ptr_array_remove_fast(parray:PGPtrArray; data:gpointer):gboolean;cdecl;external gliblib name 'g_ptr_array_remove_fast';
  54. procedure g_ptr_array_add(parray:PGPtrArray; data:gpointer);cdecl;external gliblib name 'g_ptr_array_add';
  55. procedure g_ptr_array_sort(parray:PGPtrArray; compare_func:TGCompareFunc);cdecl;external gliblib name 'g_ptr_array_sort';
  56. procedure g_ptr_array_sort_with_data(parray:PGPtrArray; compare_func:TGCompareDataFunc; user_data:gpointer);cdecl;external gliblib name 'g_ptr_array_sort_with_data';
  57. function g_byte_array_new:PGByteArray;cdecl;external gliblib name 'g_byte_array_new';
  58. function g_byte_array_sized_new(reserved_size:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_sized_new';
  59. function g_byte_array_free(parray:PGByteArray; free_segment:gboolean):Pguint8;cdecl;external gliblib name 'g_byte_array_free';
  60. function g_byte_array_append(parray:PGByteArray; data:Pguint8; len:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_append';
  61. function g_byte_array_prepend(parray:PGByteArray; data:Pguint8; len:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_prepend';
  62. function g_byte_array_set_size(parray:PGByteArray; length:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_set_size';
  63. function g_byte_array_remove_index(parray:PGByteArray; index:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_remove_index';
  64. function g_byte_array_remove_index_fast(parray:PGByteArray; index:guint):PGByteArray;cdecl;external gliblib name 'g_byte_array_remove_index_fast';
  65. procedure g_byte_array_sort(parray:PGByteArray; compare_func:TGCompareFunc);cdecl;external gliblib name 'g_byte_array_sort';
  66. procedure g_byte_array_sort_with_data(parray:PGByteArray; compare_func:TGCompareDataFunc; user_data:gpointer);cdecl;external gliblib name 'g_byte_array_sort_with_data';
  67. {$endif}