libpcre2_16.pp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. {$mode objfpc}
  2. {$h+}
  3. {$IFNDEF FPC_DOTTEDUNITS}
  4. unit libpcre2_16;
  5. {$ENDIF}
  6. interface
  7. uses
  8. {$IFDEF FPC_DOTTEDUNITS}
  9. System.CTypes;
  10. {$ELSE}
  11. ctypes;
  12. {$ENDIF}
  13. const
  14. {$IFDEF LINUX}
  15. pcrelibname = 'libpcre2-16.so.0';
  16. {$ELSE}
  17. {$IFDEF windows}
  18. pcrelibname = 'libpcre16-0.dll'; // As used in Mingw64
  19. {$ELSE}
  20. {$ERROR: platform not supported by pcre}
  21. {$ENDIF}
  22. {$ENDIF}
  23. {$i pcreconsts.inc}
  24. {
  25. Automatically converted by H2Pas 1.0.0 from pre_pcre_8.h
  26. The following command line parameters were used:
  27. -c
  28. -l
  29. libpcre2-8
  30. pre_pcre_8.h
  31. -C
  32. -o
  33. libpcre28.pp
  34. -P
  35. -P
  36. -t
  37. }
  38. {$IFDEF FPC}
  39. {$PACKRECORDS C}
  40. {$ENDIF}
  41. Type
  42. tsize_t = csize_t;
  43. PCRE2_SIZE = tsize_t;
  44. PTsize_t = ^Tsize_t;
  45. PPTsize_t = ^PTsize_t;
  46. tuint32_t = cardinal;
  47. Tint32_t = cuint32;
  48. Tcint = cint;
  49. TPCRE2_UCHAR8 = ansichar;
  50. TPCRE2_SPTR8 = PAnsichar;
  51. PTPCRE2_UCHAR8 = ^TPCRE2_UCHAR8;
  52. PCRE2_SPTR8 = TPCRE2_SPTR8;
  53. PTPCRE2_SPTR8 = PCRE2_SPTR8;
  54. PPTPCRE2_UCHAR8 = ^PTPCRE2_UCHAR8;
  55. PPPTPCRE2_UCHAR8 = ^PPTPCRE2_UCHAR8;
  56. Ppcre2_callout_block_16 = ^Tpcre2_callout_block_16;
  57. Ppcre2_callout_block = Ppcre2_callout_block_16;
  58. Ppcre2_callout_enumerate_block_16 = ^Tpcre2_callout_enumerate_block_16;
  59. Ppcre2_callout_enumerate_block = Ppcre2_callout_enumerate_block_16;
  60. Ppcre2_code_16 = ^Tpcre2_code_16;
  61. Ppcre2_code = Ppcre2_code_16;
  62. Ppcre2_compile_context_16 = ^Tpcre2_compile_context_16;
  63. Ppcre2_compile_context = Ppcre2_compile_context_16;
  64. Ppcre2_convert_context_16 = ^Tpcre2_convert_context_16;
  65. Ppcre2_convert_context = Ppcre2_convert_context_16;
  66. Ppcre2_general_context_16 = ^Tpcre2_general_context_16;
  67. Ppcre2_general_context = Ppcre2_general_context_16;
  68. Ppcre2_jit_stack_16 = ^Tpcre2_jit_stack_16;
  69. Ppcre2_jit_stack = Ppcre2_jit_stack_16;
  70. Ppcre2_match_context_16 = ^Tpcre2_match_context_16;
  71. Ppcre2_match_context = Ppcre2_match_context_16;
  72. Ppcre2_match_data_16 = ^Tpcre2_match_data_16;
  73. Ppcre2_match_data = Ppcre2_match_data_16;
  74. TPCRE2_UCHAR16 = widechar;
  75. PPCRE2_SPTR8 = ^TPCRE2_SPTR8;
  76. Ppcre2_substitute_callout_block_16 = ^Tpcre2_substitute_callout_block_16;
  77. PPCRE2_UCHAR8 = ^TPCRE2_UCHAR8;
  78. PPCRE2_UCHAR16 = ^TPCRE2_UCHAR16;
  79. Psize_t = ^tsize_t;
  80. Puint8_t = ^byte;
  81. PTuint8_t = Puint8_t;
  82. PPTuint8_t = ^PTuint8_t;
  83. TPCRE2_SPTR16 = ^TPCRE2_UCHAR16;
  84. TPCRE2_SPTR = TPCRE2_SPTR16;
  85. PTPCRE2_UCHAR16 = ^TPCRE2_UCHAR16;
  86. PTPCRE2_UCHAR = PTPCRE2_UCHAR16;
  87. PCRE2_SPTR16 = TPCRE2_SPTR16;
  88. PCRE2_SPTR = PCRE2_SPTR16;
  89. PTPCRE2_SPTR16 = PCRE2_SPTR16;
  90. PTPCRE2_SPTR = PTPCRE2_SPTR16;
  91. PPTPCRE2_UCHAR16 = ^PTPCRE2_UCHAR16;
  92. PPTPCRE2_UCHAR = PPTPCRE2_UCHAR16;
  93. PPPTPCRE2_UCHAR16 = ^PPTPCRE2_UCHAR16;
  94. PPPTPCRE2_UCHAR = PPPTPCRE2_UCHAR16;
  95. Tpcre2_real_general_context_16 = record
  96. end;
  97. Tpcre2_general_context_16 = Tpcre2_real_general_context_16;
  98. Tpcre2_general_context = Tpcre2_general_context_16;
  99. Ppcre2_real_general_context_16 = ^tpcre2_real_general_context_16;
  100. PTpcre2_general_context_16 = Ppcre2_real_general_context_16;
  101. Tpcre2_real_compile_context_16 = record
  102. end;
  103. Tpcre2_compile_context_16 = Tpcre2_real_compile_context_16;
  104. Tpcre2_compile_context = Tpcre2_compile_context_16;
  105. Ppcre2_real_compile_context_16 = ^Tpcre2_real_compile_context_16;
  106. PTpcre2_compile_context_16 = Ppcre2_real_compile_context_16;
  107. Tpcre2_real_match_context_16 = record
  108. end;
  109. Tpcre2_match_context_16 = Tpcre2_real_match_context_16;
  110. Tpcre2_match_context = Tpcre2_match_context_16;
  111. Ppcre2_real_match_context_16 = ^Tpcre2_real_match_context_16;
  112. PTpcre2_match_context_16 = Ppcre2_real_match_context_16;
  113. Tpcre2_real_convert_context_16 = record
  114. end;
  115. Tpcre2_convert_context_16 = Tpcre2_real_convert_context_16;
  116. Tpcre2_convert_context = Tpcre2_convert_context_16;
  117. Ppcre2_real_convert_context_16 = ^Tpcre2_real_convert_context_16;
  118. PTpcre2_convert_context_16 = Ppcre2_real_convert_context_16;
  119. Tpcre2_real_code_16 = record
  120. end;
  121. Tpcre2_code_16 = Tpcre2_real_code_16;
  122. Tpcre2_code = Tpcre2_code_16;
  123. Ppcre2_real_code_16 = ^Tpcre2_real_code_16;
  124. PTpcre2_code_16 = Ppcre2_real_code_16;
  125. PPTpcre2_code_16 = ^PTpcre2_code_16;
  126. Tpcre2_real_match_data_16 = record
  127. end;
  128. Tpcre2_match_data_16 = Tpcre2_real_match_data_16;
  129. Tpcre2_match_data = Tpcre2_match_data_16;
  130. Ppcre2_real_match_data_16 = ^Tpcre2_real_match_data_16;
  131. PTpcre2_match_data_16 = Ppcre2_real_match_data_16;
  132. Tpcre2_real_jit_stack_16 = record
  133. end;
  134. Tpcre2_jit_stack_16 = Tpcre2_real_jit_stack_16;
  135. Tpcre2_jit_stack = Tpcre2_jit_stack_16;
  136. Ppcre2_real_jit_stack_16 = ^Tpcre2_real_jit_stack_16;
  137. PTpcre2_jit_stack_16 = Ppcre2_real_jit_stack_16;
  138. Tpcre2_jit_callback_16 = function (_para1:pointer): PTpcre2_jit_stack_16;cdecl;
  139. Tpcre2_callout_block_16 = record
  140. version : Tuint32_t;
  141. callout_number : Tuint32_t;
  142. capture_top : Tuint32_t;
  143. capture_last : Tuint32_t;
  144. offset_vector : ^Tsize_t;
  145. mark : TPCRE2_SPTR8;
  146. subject : TPCRE2_SPTR8;
  147. subject_length : Tsize_t;
  148. start_match : Tsize_t;
  149. current_position : Tsize_t;
  150. pattern_position : Tsize_t;
  151. next_item_length : Tsize_t;
  152. callout_string_offset : Tsize_t;
  153. callout_string_length : Tsize_t;
  154. callout_string : TPCRE2_SPTR8;
  155. callout_flags : Tuint32_t;
  156. end;
  157. Tpcre2_callout_enumerate_block_16 = record
  158. version : Tuint32_t;
  159. pattern_position : Tsize_t;
  160. next_item_length : Tsize_t;
  161. callout_number : Tuint32_t;
  162. callout_string_offset : Tsize_t;
  163. callout_string_length : Tsize_t;
  164. callout_string : TPCRE2_SPTR8;
  165. end;
  166. PTpcre2_callout_enumerate_block_16 = ^Tpcre2_callout_enumerate_block_16;
  167. Tpcre2_substitute_callout_block_16 = record
  168. version : Tuint32_t;
  169. input : TPCRE2_SPTR8;
  170. output : TPCRE2_SPTR8;
  171. output_offsets : array[0..1] of Tsize_t;
  172. ovector : ^Tsize_t;
  173. oveccount : Tuint32_t;
  174. subscount : Tuint32_t;
  175. end;
  176. PTpcre2_substitute_callout_block_16 = ^ Tpcre2_substitute_callout_block_16;
  177. tpcre2_malloc = function (_para1:Tsize_t; _para2:pointer) : Pointer; cdecl;
  178. tpcre2_free = procedure (_para1:pointer; _para2:pointer); cdecl;
  179. tpcre2_set_compile_recursion_guard_16_callback = function (_para1:Tuint32_t; _para2:pointer):Tcint; cdecl;
  180. tpcre2_set_callout_16_callback = function (_para1:Ppcre2_callout_block_16; _para2:pointer):Tcint; cdecl;
  181. tpcre2_callout_enumerate_16_callback = function (_para1: PTpcre2_callout_enumerate_block_16; _para2:pointer):Tcint; cdecl;
  182. tpcre2_set_substitute_callout_16_callback = function (_para1:Ppcre2_substitute_callout_block_16; _para2:pointer):Tcint; cdecl;
  183. var
  184. pcre2_config : function(_para1:Tuint32_t; _para2:pointer):Tcint;cdecl;
  185. pcre2_general_context_copy : function(_para1:PTpcre2_general_context_16): PTpcre2_general_context_16;cdecl;
  186. pcre2_general_context_create : function(_para1:tpcre2_malloc; _para2:tpcre2_free; _para3:pointer):PTpcre2_general_context_16;cdecl;
  187. pcre2_general_context_free : procedure(_para1:PTpcre2_general_context_16);cdecl;
  188. pcre2_compile_context_copy : function(_para1:PTpcre2_compile_context_16):PTpcre2_compile_context_16;cdecl;
  189. pcre2_compile_context_create : function(_para1:PTpcre2_general_context_16):PTpcre2_compile_context_16;cdecl;
  190. pcre2_compile_context_free : procedure(_para1:PTpcre2_compile_context_16);cdecl;
  191. pcre2_set_bsr : function(_para1:PTpcre2_compile_context_16; _para2:Tuint32_t):Tcint;cdecl;
  192. pcre2_set_character_tables : function(_para1:PTpcre2_compile_context_16; _para2: Puint8_t):Tcint;cdecl;
  193. pcre2_set_compile_extra_options : function(_para1:PTpcre2_compile_context_16; _para2:Tuint32_t):Tcint;cdecl;
  194. pcre2_set_max_pattern_length : function(_para1:PTpcre2_compile_context_16; _para2:Tsize_t):Tcint;cdecl;
  195. pcre2_set_newline : function(_para1:PTpcre2_compile_context_16; _para2:Tuint32_t):Tcint;cdecl;
  196. pcre2_set_parens_nest_limit : function(_para1:PTpcre2_compile_context_16; _para2:Tuint32_t):Tcint;cdecl;
  197. pcre2_set_compile_recursion_guard : function(_para1:PTpcre2_compile_context_16; _para2: tpcre2_set_compile_recursion_guard_16_callback; _para3:pointer):Tcint;cdecl;
  198. pcre2_convert_context_copy : function(_para1:PTpcre2_convert_context_16):PTpcre2_convert_context_16;cdecl;
  199. pcre2_convert_context_create : function(_para1:PTpcre2_general_context_16):PTpcre2_convert_context_16;cdecl;
  200. pcre2_convert_context_free : procedure(_para1:PTpcre2_convert_context_16);cdecl;
  201. pcre2_set_glob_escape : function(_para1:PTpcre2_convert_context_16; _para2:Tuint32_t):Tcint;cdecl;
  202. pcre2_set_glob_separator : function(_para1:PTpcre2_convert_context_16; _para2:Tuint32_t):Tcint;cdecl;
  203. pcre2_pattern_convert : function(_para1:TPCRE2_SPTR8; _para2:Tsize_t; _para3:Tuint32_t; _para4:PPTPCRE2_UCHAR8; _para5: Psize_t; _para6:PTpcre2_convert_context_16):Tcint;cdecl;
  204. pcre2_converted_pattern_free : procedure(_para1:PTPCRE2_UCHAR8);cdecl;
  205. pcre2_match_context_copy : function(_para1:PTpcre2_match_context_16):PTpcre2_match_context_16;cdecl;
  206. pcre2_match_context_create : function(_para1:PTpcre2_general_context_16):PTpcre2_match_context_16;cdecl;
  207. pcre2_match_context_free : procedure(_para1:PTpcre2_match_context_16);cdecl;
  208. pcre2_set_callout : function(_para1:PTpcre2_match_context_16; _para2: tpcre2_set_callout_16_callback; _para3:pointer):Tcint;cdecl;
  209. pcre2_set_substitute_callout : function(_para1:PTpcre2_match_context_16; _para2:tpcre2_set_substitute_callout_16_callback; _para3:pointer):Tcint;cdecl;
  210. pcre2_set_depth_limit : function(_para1:PTpcre2_match_context_16; _para2:Tuint32_t):Tcint;cdecl;
  211. pcre2_set_heap_limit : function(_para1:PTpcre2_match_context_16; _para2:Tuint32_t):Tcint;cdecl;
  212. pcre2_set_match_limit : function(_para1:PTpcre2_match_context_16; _para2:Tuint32_t):Tcint;cdecl;
  213. pcre2_set_offset_limit : function(_para1:PTpcre2_match_context_16; _para2:Tsize_t):Tcint;cdecl;
  214. pcre2_set_recursion_limit : function(_para1:PTpcre2_match_context_16; _para2:Tuint32_t):Tcint;cdecl;
  215. pcre2_set_recursion_memory_management : function(_para1:PTpcre2_match_context_16; _para2: tpcre2_malloc; _para3:tpcre2_free; _para4:pointer):Tcint;cdecl;
  216. pcre2_compile : function(_para1:TPCRE2_SPTR8; _para2:Tsize_t; _para3:Tuint32_t; _para4:Pcint; _para5:Psize_t; _para6:PTpcre2_compile_context_16):Ppcre2_code_16;cdecl;
  217. // PCRE actually uses TPCRE2_SPTR8. With this we avoid a typecast
  218. pcre2_compile_w : function(_para1:TPCRE2_SPTR16; _para2:Tsize_t; _para3:Tuint32_t; _para4:Pcint; _para5:Psize_t; _para6:PTpcre2_compile_context_16):Ppcre2_code_16;cdecl;
  219. pcre2_code_free : procedure(_para1:PTpcre2_code_16);cdecl;
  220. pcre2_code_copy : function(_para1:PTpcre2_code_16):PTpcre2_code_16;cdecl;
  221. pcre2_code_copy_with_tables : function(_para1:PTpcre2_code_16):PTpcre2_code_16;cdecl;
  222. pcre2_pattern_info : function(_para1:PTpcre2_code_16; _para2:Tuint32_t; _para3:pointer):Tcint;cdecl;
  223. pcre2_callout_enumerate : function(_para1:PTpcre2_code_16; _para2: tpcre2_callout_enumerate_16_callback; _para3:pointer):Tcint;cdecl;
  224. pcre2_match_data_create : function(_para1:Tuint32_t; _para2:PTpcre2_general_context_16):PTpcre2_match_data_16;cdecl;
  225. pcre2_match_data_create_from_pattern : function(_para1:PTpcre2_code_16; _para2:PTpcre2_general_context_16):PTpcre2_match_data_16;cdecl;
  226. pcre2_dfa_match : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16; _para8:Pcint; _para9:Tsize_t):Tcint;cdecl;
  227. // PCRE actually uses TPCRE2_SPTR8. With this we avoid a typecast
  228. pcre2_dfa_match_w : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR16; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16; _para8:Pcint; _para9:Tsize_t):Tcint;cdecl;
  229. pcre2_match : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16):Tcint;cdecl;
  230. // PCRE actually uses TPCRE2_SPTR8. With this we avoid a typecast
  231. pcre2_match_w : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR16; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16):Tcint;cdecl;
  232. pcre2_match_data_free : procedure(_para1:PTpcre2_match_data_16);cdecl;
  233. pcre2_get_mark : function(_para1:PTpcre2_match_data_16):TPCRE2_SPTR8;cdecl;
  234. pcre2_get_match_data_size : function(_para1:PTpcre2_match_data_16):Tsize_t;cdecl;
  235. pcre2_get_ovector_count : function(_para1:PTpcre2_match_data_16):Tuint32_t;cdecl;
  236. pcre2_get_ovector_pointer : function(_para1:PTpcre2_match_data_16):Psize_t;cdecl;
  237. pcre2_get_startchar : function(_para1:PTpcre2_match_data_16):Tsize_t;cdecl;
  238. pcre2_substring_copy_byname : function(_para1:PTpcre2_match_data_16; _para2:TPCRE2_SPTR8; _para3:PTPCRE2_UCHAR8; _para4:PTsize_t):Tcint;cdecl;
  239. pcre2_substring_copy_bynumber : function(_para1:PTpcre2_match_data_16; _para2:Tuint32_t; _para3:PTPCRE2_UCHAR8; _para4:PTsize_t):Tcint;cdecl;
  240. pcre2_substring_free : procedure(_para1:PTPCRE2_UCHAR8);cdecl;
  241. pcre2_substring_get_byname : function(_para1:PTpcre2_match_data_16; _para2:TPCRE2_SPTR8; _para3:PPTPCRE2_UCHAR8; _para4:PTsize_t):Tcint;cdecl;
  242. pcre2_substring_get_bynumber : function(_para1:PTpcre2_match_data_16; _para2:Tuint32_t; _para3:PPTPCRE2_UCHAR8; _para4:PTsize_t):Tcint;cdecl;
  243. pcre2_substring_length_byname : function(_para1:PTpcre2_match_data_16; _para2:TPCRE2_SPTR8; _para3:PTsize_t):Tcint;cdecl;
  244. pcre2_substring_length_bynumber : function(_para1:PTpcre2_match_data_16; _para2:Tuint32_t; _para3:PTsize_t):Tcint;cdecl;
  245. pcre2_substring_nametable_scan : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8; _para3:PTPCRE2_SPTR8; _para4:PTPCRE2_SPTR8):Tcint;cdecl;
  246. pcre2_substring_number_from_name : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8):Tcint;cdecl;
  247. pcre2_substring_list_free : procedure(_para1:PTPCRE2_SPTR8);cdecl;
  248. pcre2_substring_list_get : function(_para1:PTpcre2_match_data_16; _para2:PPPTPCRE2_UCHAR8; _para3:PPTsize_t):Tcint;cdecl;
  249. pcre2_serialize_encode : function(_para1:PPTpcre2_code_16; _para2:Tint32_t; _para3:PPTuint8_t; _para4:PTsize_t; _para5:PTpcre2_general_context_16):Tint32_t;cdecl;
  250. pcre2_serialize_decode : function(_para1:PPTpcre2_code_16; _para2:Tint32_t; _para3:PTuint8_t; _para4:PTpcre2_general_context_16):Tint32_t;cdecl;
  251. pcre2_serialize_get_number_of_codes : function(_para1:PTuint8_t):Tint32_t;cdecl;
  252. pcre2_serialize_free : procedure(_para1:PTuint8_t);cdecl;
  253. pcre2_substitute : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16; _para8:TPCRE2_SPTR8; _para9:Tsize_t; _para10:PTPCRE2_UCHAR8; _para11:PTsize_t):Tcint;cdecl;
  254. pcre2_jit_compile : function(_para1:PTpcre2_code_16; _para2:Tuint32_t):Tcint;cdecl;
  255. pcre2_jit_match : function(_para1:PTpcre2_code_16; _para2:TPCRE2_SPTR8; _para3:Tsize_t; _para4:Tsize_t; _para5:Tuint32_t; _para6:PTpcre2_match_data_16; _para7:PTpcre2_match_context_16):Tcint;cdecl;
  256. pcre2_jit_free_unused_memory : procedure(_para1:PTpcre2_general_context_16);cdecl;
  257. pcre2_jit_stack_create : function(_para1:Tsize_t; _para2:Tsize_t; _para3:PTpcre2_general_context_16):PTpcre2_jit_stack_16;cdecl;
  258. pcre2_jit_stack_assign : procedure(_para1:PTpcre2_match_context_16; _para2:Tpcre2_jit_callback_16; _para3:pointer);cdecl;
  259. pcre2_jit_stack_free : procedure(_para1:PTpcre2_jit_stack_16);cdecl;
  260. pcre2_get_error_message : function(_para1:Tcint; _para2:PTPCRE2_UCHAR8; _para3:Tsize_t):Tcint;cdecl;
  261. pcre2_maketables : function(_para1:PTpcre2_general_context_16):PTuint8_t;cdecl;
  262. pcre2_maketables_free : procedure(_para1:PTpcre2_general_context_16; _para2:PTuint8_t);cdecl;
  263. function libpcre28loaded : Boolean;
  264. procedure Loadlibpcre28; overload;
  265. procedure Loadlibpcre28(const lib : string); overload;
  266. procedure Freelibpcre28;
  267. implementation
  268. uses
  269. {$IFDEF FPC_DOTTEDUNITS}
  270. System.SysUtils, System.DynLibs;
  271. {$ELSE}
  272. SysUtils, dynlibs;
  273. {$ENDIF}
  274. var
  275. hlib : tlibhandle;
  276. function libpcre28loaded : Boolean;
  277. begin
  278. Result:=(hLib<>NilHandle);
  279. end;
  280. procedure Freelibpcre28;
  281. begin
  282. if hlib=nilhandle then exit;
  283. FreeLibrary(hlib);
  284. hlib:=NilHandle;
  285. pcre2_config:=nil;
  286. pcre2_general_context_copy:=nil;
  287. pcre2_general_context_create:=nil;
  288. pcre2_general_context_free:=nil;
  289. pcre2_compile_context_copy:=nil;
  290. pcre2_compile_context_create:=nil;
  291. pcre2_compile_context_free:=nil;
  292. pcre2_set_bsr:=nil;
  293. pcre2_set_character_tables:=nil;
  294. pcre2_set_compile_extra_options:=nil;
  295. pcre2_set_max_pattern_length:=nil;
  296. pcre2_set_newline:=nil;
  297. pcre2_set_parens_nest_limit:=nil;
  298. pcre2_set_compile_recursion_guard:=nil;
  299. pcre2_convert_context_copy:=nil;
  300. pcre2_convert_context_create:=nil;
  301. pcre2_convert_context_free:=nil;
  302. pcre2_set_glob_escape:=nil;
  303. pcre2_set_glob_separator:=nil;
  304. pcre2_pattern_convert:=nil;
  305. pcre2_converted_pattern_free:=nil;
  306. pcre2_match_context_copy:=nil;
  307. pcre2_match_context_create:=nil;
  308. pcre2_match_context_free:=nil;
  309. pcre2_set_callout:=nil;
  310. pcre2_set_substitute_callout:=nil;
  311. pcre2_set_depth_limit:=nil;
  312. pcre2_set_heap_limit:=nil;
  313. pcre2_set_match_limit:=nil;
  314. pcre2_set_offset_limit:=nil;
  315. pcre2_set_recursion_limit:=nil;
  316. pcre2_set_recursion_memory_management:=nil;
  317. pcre2_compile:=nil;
  318. pcre2_compile_w:=Nil;
  319. pcre2_code_free:=nil;
  320. pcre2_code_copy:=nil;
  321. pcre2_code_copy_with_tables:=nil;
  322. pcre2_pattern_info:=nil;
  323. pcre2_callout_enumerate:=nil;
  324. pcre2_match_data_create:=nil;
  325. pcre2_match_data_create_from_pattern:=nil;
  326. pcre2_dfa_match:=nil;
  327. pcre2_dfa_match_w:=nil;
  328. pcre2_match:=nil;
  329. pcre2_match_w:=nil;
  330. pcre2_match_data_free:=nil;
  331. pcre2_get_mark:=nil;
  332. pcre2_get_match_data_size:=nil;
  333. pcre2_get_ovector_count:=nil;
  334. pcre2_get_ovector_pointer:=nil;
  335. pcre2_get_startchar:=nil;
  336. pcre2_substring_copy_byname:=nil;
  337. pcre2_substring_copy_bynumber:=nil;
  338. pcre2_substring_free:=nil;
  339. pcre2_substring_get_byname:=nil;
  340. pcre2_substring_get_bynumber:=nil;
  341. pcre2_substring_length_byname:=nil;
  342. pcre2_substring_length_bynumber:=nil;
  343. pcre2_substring_nametable_scan:=nil;
  344. pcre2_substring_number_from_name:=nil;
  345. pcre2_substring_list_free:=nil;
  346. pcre2_substring_list_get:=nil;
  347. pcre2_serialize_encode:=nil;
  348. pcre2_serialize_decode:=nil;
  349. pcre2_serialize_get_number_of_codes:=nil;
  350. pcre2_serialize_free:=nil;
  351. pcre2_substitute:=nil;
  352. pcre2_jit_compile:=nil;
  353. pcre2_jit_match:=nil;
  354. pcre2_jit_free_unused_memory:=nil;
  355. pcre2_jit_stack_create:=nil;
  356. pcre2_jit_stack_assign:=nil;
  357. pcre2_jit_stack_free:=nil;
  358. pcre2_get_error_message:=nil;
  359. pcre2_maketables:=nil;
  360. pcre2_maketables_free:=nil;
  361. end;
  362. procedure Loadlibpcre28;
  363. begin
  364. Loadlibpcre28(pcrelibname);
  365. end;
  366. procedure Loadlibpcre28(const lib : string);
  367. Function GetAddr(const aName : string) : Pointer;
  368. begin
  369. Result:=GetProcAddress(hlib,aname);
  370. if Result=Nil then
  371. if IsConsole then
  372. Writeln(stdErr,'Could not load procedure: ',aName)
  373. end;
  374. begin
  375. Freelibpcre28;
  376. hlib:=LoadLibrary(lib);
  377. if (hlib=NilHandle) then
  378. raise Exception.Create(format('Could not load library: %s',[lib]));
  379. pointer(pcre2_config):=GetAddr('pcre2_config_16');
  380. pointer(pcre2_general_context_copy):=GetAddr('pcre2_general_context_copy_16');
  381. pointer(pcre2_general_context_create):=GetAddr('pcre2_general_context_create_16');
  382. pointer(pcre2_general_context_free):=GetAddr('pcre2_general_context_free_16');
  383. pointer(pcre2_compile_context_copy):=GetAddr('pcre2_compile_context_copy_16');
  384. pointer(pcre2_compile_context_create):=GetAddr('pcre2_compile_context_create_16');
  385. pointer(pcre2_compile_context_free):=GetAddr('pcre2_compile_context_free_16');
  386. pointer(pcre2_set_bsr):=GetAddr('pcre2_set_bsr_16');
  387. pointer(pcre2_set_character_tables):=GetAddr('pcre2_set_character_tables_16');
  388. pointer(pcre2_set_compile_extra_options):=GetAddr('pcre2_set_compile_extra_options_16');
  389. pointer(pcre2_set_max_pattern_length):=GetAddr('pcre2_set_max_pattern_length_16');
  390. pointer(pcre2_set_newline):=GetAddr('pcre2_set_newline_16');
  391. pointer(pcre2_set_parens_nest_limit):=GetAddr('pcre2_set_parens_nest_limit_16');
  392. pointer(pcre2_set_compile_recursion_guard):=GetAddr('pcre2_set_compile_recursion_guard_16');
  393. pointer(pcre2_convert_context_copy):=GetAddr('pcre2_convert_context_copy_16');
  394. pointer(pcre2_convert_context_create):=GetAddr('pcre2_convert_context_create_16');
  395. pointer(pcre2_convert_context_free):=GetAddr('pcre2_convert_context_free_16');
  396. pointer(pcre2_set_glob_escape):=GetAddr('pcre2_set_glob_escape_16');
  397. pointer(pcre2_set_glob_separator):=GetAddr('pcre2_set_glob_separator_16');
  398. pointer(pcre2_pattern_convert):=GetAddr('pcre2_pattern_convert_16');
  399. pointer(pcre2_converted_pattern_free):=GetAddr('pcre2_converted_pattern_free_16');
  400. pointer(pcre2_match_context_copy):=GetAddr('pcre2_match_context_copy_16');
  401. pointer(pcre2_match_context_create):=GetAddr('pcre2_match_context_create_16');
  402. pointer(pcre2_match_context_free):=GetAddr('pcre2_match_context_free_16');
  403. pointer(pcre2_set_callout):=GetAddr('pcre2_set_callout_16');
  404. pointer(pcre2_set_substitute_callout):=GetAddr('pcre2_set_substitute_callout_16');
  405. pointer(pcre2_set_depth_limit):=GetAddr('pcre2_set_depth_limit_16');
  406. pointer(pcre2_set_heap_limit):=GetAddr('pcre2_set_heap_limit_16');
  407. pointer(pcre2_set_match_limit):=GetAddr('pcre2_set_match_limit_16');
  408. pointer(pcre2_set_offset_limit):=GetAddr('pcre2_set_offset_limit_16');
  409. pointer(pcre2_set_recursion_limit):=GetAddr('pcre2_set_recursion_limit_16');
  410. pointer(pcre2_set_recursion_memory_management):=GetAddr('pcre2_set_recursion_memory_management_16');
  411. pointer(pcre2_compile):=GetAddr('pcre2_compile_16');
  412. pointer(pcre2_compile_w):=GetAddr('pcre2_compile_16');
  413. pointer(pcre2_code_free):=GetAddr('pcre2_code_free_16');
  414. pointer(pcre2_code_copy):=GetAddr('pcre2_code_copy_16');
  415. pointer(pcre2_code_copy_with_tables):=GetAddr('pcre2_code_copy_with_tables_16');
  416. pointer(pcre2_pattern_info):=GetAddr('pcre2_pattern_info_16');
  417. pointer(pcre2_callout_enumerate):=GetAddr('pcre2_callout_enumerate_16');
  418. pointer(pcre2_match_data_create):=GetAddr('pcre2_match_data_create_16');
  419. pointer(pcre2_match_data_create_from_pattern):=GetAddr('pcre2_match_data_create_from_pattern_16');
  420. pointer(pcre2_dfa_match):=GetAddr('pcre2_dfa_match_16');
  421. pointer(pcre2_dfa_match_w):=GetAddr('pcre2_dfa_match_16');
  422. pointer(pcre2_match):=GetAddr('pcre2_match_16');
  423. pointer(pcre2_match_w):=GetAddr('pcre2_match_16');
  424. pointer(pcre2_match_data_free):=GetAddr('pcre2_match_data_free_16');
  425. pointer(pcre2_get_mark):=GetAddr('pcre2_get_mark_16');
  426. pointer(pcre2_get_match_data_size):=GetAddr('pcre2_get_match_data_size_16');
  427. pointer(pcre2_get_ovector_count):=GetAddr('pcre2_get_ovector_count_16');
  428. pointer(pcre2_get_ovector_pointer):=GetAddr('pcre2_get_ovector_pointer_16');
  429. pointer(pcre2_get_startchar):=GetAddr('pcre2_get_startchar_16');
  430. pointer(pcre2_substring_copy_byname):=GetAddr('pcre2_substring_copy_byname_16');
  431. pointer(pcre2_substring_copy_bynumber):=GetAddr('pcre2_substring_copy_bynumber_16');
  432. pointer(pcre2_substring_free):=GetAddr('pcre2_substring_free_16');
  433. pointer(pcre2_substring_get_byname):=GetAddr('pcre2_substring_get_byname_16');
  434. pointer(pcre2_substring_get_bynumber):=GetAddr('pcre2_substring_get_bynumber_16');
  435. pointer(pcre2_substring_length_byname):=GetAddr('pcre2_substring_length_byname_16');
  436. pointer(pcre2_substring_length_bynumber):=GetAddr('pcre2_substring_length_bynumber_16');
  437. pointer(pcre2_substring_nametable_scan):=GetAddr('pcre2_substring_nametable_scan_16');
  438. pointer(pcre2_substring_number_from_name):=GetAddr('pcre2_substring_number_from_name_16');
  439. pointer(pcre2_substring_list_free):=GetAddr('pcre2_substring_list_free_16');
  440. pointer(pcre2_substring_list_get):=GetAddr('pcre2_substring_list_get_16');
  441. pointer(pcre2_serialize_encode):=GetAddr('pcre2_serialize_encode_16');
  442. pointer(pcre2_serialize_decode):=GetAddr('pcre2_serialize_decode_16');
  443. pointer(pcre2_serialize_get_number_of_codes):=GetAddr('pcre2_serialize_get_number_of_codes_16');
  444. pointer(pcre2_serialize_free):=GetAddr('pcre2_serialize_free_16');
  445. pointer(pcre2_substitute):=GetAddr('pcre2_substitute_16');
  446. pointer(pcre2_jit_compile):=GetAddr('pcre2_jit_compile_16');
  447. pointer(pcre2_jit_match):=GetAddr('pcre2_jit_match_16');
  448. pointer(pcre2_jit_free_unused_memory):=GetAddr('pcre2_jit_free_unused_memory_16');
  449. pointer(pcre2_jit_stack_create):=GetAddr('pcre2_jit_stack_create_16');
  450. pointer(pcre2_jit_stack_assign):=GetAddr('pcre2_jit_stack_assign_16');
  451. pointer(pcre2_jit_stack_free):=GetAddr('pcre2_jit_stack_free_16');
  452. pointer(pcre2_get_error_message):=GetAddr('pcre2_get_error_message_16');
  453. pointer(pcre2_maketables):=GetAddr('pcre2_maketables_16');
  454. pointer(pcre2_maketables_free):=GetAddr('pcre2_maketables_free_16');
  455. end;
  456. initialization
  457. Loadlibpcre28;
  458. finalization
  459. Freelibpcre28;
  460. end.