2
0

regexh.inc 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. type
  2. Ps_reg_t = ^s_reg_t;
  3. s_reg_t = longint;
  4. Pactive_reg_t = ^active_reg_t;
  5. active_reg_t = dword;
  6. Preg_syntax_t = ^reg_syntax_t;
  7. reg_syntax_t = dword;
  8. Const
  9. RE_BACKSLASH_ESCAPE_IN_LISTS = dword(1);
  10. const
  11. RE_BK_PLUS_QM = RE_BACKSLASH_ESCAPE_IN_LISTS shl 1;
  12. RE_CHAR_CLASSES = RE_BK_PLUS_QM shl 1;
  13. RE_CONTEXT_INDEP_ANCHORS = RE_CHAR_CLASSES shl 1;
  14. RE_CONTEXT_INDEP_OPS = RE_CONTEXT_INDEP_ANCHORS shl 1;
  15. RE_CONTEXT_INVALID_OPS = RE_CONTEXT_INDEP_OPS shl 1;
  16. RE_DOT_NEWLINE = RE_CONTEXT_INVALID_OPS shl 1;
  17. RE_DOT_NOT_NULL = RE_DOT_NEWLINE shl 1;
  18. RE_HAT_LISTS_NOT_NEWLINE = RE_DOT_NOT_NULL shl 1;
  19. RE_INTERVALS = RE_HAT_LISTS_NOT_NEWLINE shl 1;
  20. RE_LIMITED_OPS = RE_INTERVALS shl 1;
  21. RE_NEWLINE_ALT = RE_LIMITED_OPS shl 1;
  22. RE_NO_BK_BRACES = RE_NEWLINE_ALT shl 1;
  23. RE_NO_BK_PARENS = RE_NO_BK_BRACES shl 1;
  24. RE_NO_BK_REFS = RE_NO_BK_PARENS shl 1;
  25. RE_NO_BK_VBAR = RE_NO_BK_REFS shl 1;
  26. RE_NO_EMPTY_RANGES = RE_NO_BK_VBAR shl 1;
  27. RE_UNMATCHED_RIGHT_PAREN_ORD = RE_NO_EMPTY_RANGES shl 1;
  28. RE_NO_POSIX_BACKTRACKING = RE_UNMATCHED_RIGHT_PAREN_ORD shl 1;
  29. RE_NO_GNU_OPS = RE_NO_POSIX_BACKTRACKING shl 1;
  30. RE_DEBUG = RE_NO_GNU_OPS shl 1;
  31. RE_INVALID_INTERVAL_ORD = RE_DEBUG shl 1;
  32. var
  33. re_syntax_options : reg_syntax_t;cvar;external;
  34. const
  35. _RE_SYNTAX_POSIX_COMMON = (((RE_CHAR_CLASSES or RE_DOT_NEWLINE) or RE_DOT_NOT_NULL) or RE_INTERVALS) or RE_NO_EMPTY_RANGES;
  36. RE_SYNTAX_POSIX_EXTENDED = ((((((_RE_SYNTAX_POSIX_COMMON or RE_CONTEXT_INDEP_ANCHORS) or RE_CONTEXT_INDEP_OPS) or RE_NO_BK_BRACES) or RE_NO_BK_PARENS) or RE_NO_BK_VBAR) or RE_CONTEXT_INVALID_OPS) or RE_UNMATCHED_RIGHT_PAREN_ORD;
  37. RE_SYNTAX_POSIX_BASIC = _RE_SYNTAX_POSIX_COMMON or RE_BK_PLUS_QM;
  38. RE_SYNTAX_POSIX_MINIMAL_BASIC = _RE_SYNTAX_POSIX_COMMON or RE_LIMITED_OPS;
  39. RE_SYNTAX_POSIX_MINIMAL_EXTENDED = ((((((_RE_SYNTAX_POSIX_COMMON or RE_CONTEXT_INDEP_ANCHORS) or RE_CONTEXT_INVALID_OPS) or RE_NO_BK_BRACES) or RE_NO_BK_PARENS) or RE_NO_BK_REFS) or RE_NO_BK_VBAR) or RE_UNMATCHED_RIGHT_PAREN_ORD;
  40. RE_SYNTAX_EMACS = 0;
  41. RE_SYNTAX_AWK = ((((((((RE_BACKSLASH_ESCAPE_IN_LISTS or RE_DOT_NOT_NULL) or RE_NO_BK_PARENS) or RE_NO_BK_REFS) or RE_NO_BK_VBAR) or RE_NO_EMPTY_RANGES) or RE_DOT_NEWLINE) or RE_CONTEXT_INDEP_ANCHORS) or RE_UNMATCHED_RIGHT_PAREN_ORD) or RE_NO_GNU_OPS;
  42. RE_SYNTAX_GNU_AWK = ((RE_SYNTAX_POSIX_EXTENDED or RE_BACKSLASH_ESCAPE_IN_LISTS) or RE_DEBUG) and ( not ((RE_DOT_NOT_NULL or RE_INTERVALS) or RE_CONTEXT_INDEP_OPS));
  43. RE_SYNTAX_POSIX_AWK = ((RE_SYNTAX_POSIX_EXTENDED or RE_BACKSLASH_ESCAPE_IN_LISTS) or RE_INTERVALS) or RE_NO_GNU_OPS;
  44. RE_SYNTAX_GREP = (((RE_BK_PLUS_QM or RE_CHAR_CLASSES) or RE_HAT_LISTS_NOT_NEWLINE) or RE_INTERVALS) or RE_NEWLINE_ALT;
  45. RE_SYNTAX_EGREP = (((((RE_CHAR_CLASSES or RE_CONTEXT_INDEP_ANCHORS) or RE_CONTEXT_INDEP_OPS) or RE_HAT_LISTS_NOT_NEWLINE) or RE_NEWLINE_ALT) or RE_NO_BK_PARENS) or RE_NO_BK_VBAR;
  46. RE_SYNTAX_POSIX_EGREP = ((RE_SYNTAX_EGREP or RE_INTERVALS) or RE_NO_BK_BRACES) or RE_INVALID_INTERVAL_ORD;
  47. RE_SYNTAX_ED = RE_SYNTAX_POSIX_BASIC;
  48. RE_SYNTAX_SED = RE_SYNTAX_POSIX_BASIC;
  49. const
  50. // Already in posix2_limh.inc:
  51. // RE_DUP_MAX = $7fff;
  52. REG_EXTENDED = 1;
  53. REG_ICASE = REG_EXTENDED shl 1;
  54. REG_NEWLINE = REG_ICASE shl 1;
  55. REG_NOSUB = REG_NEWLINE shl 1;
  56. REG_NOTBOL = 1;
  57. REG_NOTEOL = 1 shl 1;
  58. type
  59. RE_TRANSLATE_TYPE = PChar;
  60. const
  61. REGS_UNALLOCATED = 0;
  62. REGS_REALLOCATE = 1;
  63. REGS_FIXED = 2;
  64. type
  65. Preg_errcode_t = ^reg_errcode_t;
  66. reg_errcode_t =(
  67. REG_ENOSYS := -(1),
  68. REG_NOERROR := 0,
  69. REG_NOMATCH := 1,
  70. REG_BADPAT := 2,
  71. REG_ECOLLATE := 3,
  72. REG_ECTYPE := 4,
  73. REG_EESCAPE := 5,
  74. REG_ESUBREG := 6,
  75. REG_EBRACK := 7,
  76. REG_EPAREN := 8,
  77. REG_EBRACE := 9,
  78. REG_BADBR := 10,
  79. REG_ERANGE := 11,
  80. REG_ESPACE := 12,
  81. REG_BADRPT := 13,
  82. REG_EEND := 14,
  83. REG_ESIZE := 15,
  84. REG_ERPAREN := 16);
  85. type
  86. Pre_pattern_buffer = ^re_pattern_buffer;
  87. re_pattern_buffer = record
  88. buffer: PByte;
  89. allocated: LongWord;
  90. used: LongWord;
  91. syntax: reg_syntax_t;
  92. fastmap: PChar;
  93. translate: RE_TRANSLATE_TYPE;
  94. re_nsub: size_t;
  95. __bitfield: Cardinal; (* In this case 8 bits use 32 bits *)
  96. end;
  97. regex_t = re_pattern_buffer;
  98. pregex_t = ^regex_t;
  99. Pregoff_t = ^regoff_t;
  100. regoff_t = longint;
  101. Pre_registers = ^re_registers;
  102. re_registers = record
  103. num_regs : dword;
  104. start : Pregoff_t;
  105. end_ : Pregoff_t;
  106. end;
  107. const
  108. RE_NREGS = 30;
  109. type
  110. Pregmatch_t = ^regmatch_t;
  111. regmatch_t = record
  112. rm_so : regoff_t;
  113. rm_eo : regoff_t;
  114. end;
  115. function re_set_syntax(syntax:reg_syntax_t):reg_syntax_t;cdecl;external clib name 're_set_syntax';
  116. function re_compile_pattern(pattern:Pchar; length:size_t; buffer:Pre_pattern_buffer):Pchar;cdecl;external clib name 're_compile_pattern';
  117. function re_compile_fastmap(buffer:Pre_pattern_buffer):longint;cdecl;external clib name 're_compile_fastmap';
  118. function re_search(buffer:Pre_pattern_buffer; _string:Pchar; length:longint; start:longint; range:longint;
  119. regs:Pre_registers):longint;cdecl;external clib name 're_search';
  120. function re_search_2(buffer:Pre_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint;
  121. start:longint; range:longint; regs:Pre_registers; stop:longint):longint;cdecl;external clib name 're_search_2';
  122. function re_match(buffer:Pre_pattern_buffer; _string:Pchar; length:longint; start:longint; regs:Pre_registers):longint;cdecl;external clib name 're_match';
  123. function re_match_2(buffer:Pre_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint;
  124. start:longint; regs:Pre_registers; stop:longint):longint;cdecl;external clib name 're_match_2';
  125. procedure re_set_registers(buffer:Pre_pattern_buffer; regs:Pre_registers; num_regs:dword; starts:Pregoff_t; ends:Pregoff_t);cdecl;external clib name 're_set_registers';
  126. function regcomp(__preg:Pregex_t; __pattern:Pchar; __cflags:longint):longint;cdecl;external clib name 'regcomp';
  127. function regexec(__preg:Pregex_t; __string:Pchar; __nmatch:size_t; __pmatch:array of regmatch_t; __eflags:longint):longint;cdecl;external clib name 'regexec';
  128. function regerror(__errcode:longint; __preg:Pregex_t; __errbuf:Pchar; __errbuf_size:size_t):size_t;cdecl;external clib name 'regerror';
  129. procedure regfree(__preg:Pregex_t);cdecl;external clib name 'regfree';
  130. { ---------------------------------------------------------------------
  131. Borland compatibility types
  132. ---------------------------------------------------------------------}
  133. Type
  134. TRePatternBuffer = re_pattern_buffer;
  135. PRePatternBuffer = ^TRePatternBuffer;
  136. TRegOff = regoff_t;
  137. PRegOff = ^TRegOff;
  138. TReRegisters = re_registers;
  139. PReRegisters = ^TReRegisters;
  140. TRegEx = regex_t;
  141. PRegEx = ^TRegEx;
  142. TRegMatch = regmatch_t;
  143. PRegMatch = ^TRegMatch;
  144. function re_compile_pattern(pattern:Pchar; length:size_t; var buffer: re_pattern_buffer):Pchar;cdecl;external clib name 're_compile_pattern';
  145. function re_compile_fastmap(var buffer: re_pattern_buffer):longint;cdecl;external clib name 're_compile_fastmap';
  146. function re_search(var buffer:re_pattern_buffer; _string:Pchar; length:longint; start:longint; range:longint; regs:Pre_registers):longint;cdecl;external clib name 're_search';
  147. function re_search(var buffer:re_pattern_buffer; _string:Pchar; length:longint; start:longint; range:longint; var regs:re_registers):longint;cdecl;external clib name 're_search';
  148. function re_search_2(var buffer:re_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint; start:longint; range:longint; regs:Pre_registers; stop:longint):longint;cdecl;external clib name 're_search_2';
  149. function re_search_2(var buffer:re_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint; start:longint; range:longint; var regs:re_registers; stop:longint):longint;cdecl;external clib name 're_search_2';
  150. function re_match(var buffer:re_pattern_buffer; _string:Pchar; length:longint; start:longint; regs:Pre_registers):longint;cdecl;external clib name 're_match';
  151. function re_match(var buffer:re_pattern_buffer; _string:Pchar; length:longint; start:longint; var regs:re_registers):longint;cdecl;external clib name 're_match';
  152. function re_match_2(var buffer:re_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint; start:longint; regs:Pre_registers; stop:longint):longint;cdecl;external clib name 're_match_2';
  153. function re_match_2(var buffer:re_pattern_buffer; string1:Pchar; length1:longint; string2:Pchar; length2:longint; start:longint; var regs:re_registers; stop:longint):longint;cdecl;external clib name 're_match_2';
  154. procedure re_set_registers(var buffer:re_pattern_buffer; var regs:re_registers; num_regs:dword; var starts:regoff_t; var ends:regoff_t);cdecl;external clib name 're_set_registers';
  155. function regcomp(var __preg:regex_t; __pattern:Pchar; __cflags:longint):longint;cdecl;external clib name 'regcomp';
  156. function regexec(var __preg:regex_t; __string:Pchar; __nmatch:size_t; __pmatch: Pregmatch_t; __eflags:longint):longint;cdecl;external clib name 'regexec';
  157. function regerror(__errcode:longint; const __preg:regex_t; __errbuf:Pchar; __errbuf_size:size_t):size_t;cdecl;external clib name 'regerror';
  158. procedure regfree(var __preg:regex_t);cdecl;external clib name 'regfree';