소스 검색

* PChar -> PAnsiChar

Michaël Van Canneyt 2 년 전
부모
커밋
49e41873b0

+ 2 - 2
packages/regexpr/examples/demowd.pp

@@ -9,7 +9,7 @@
 {$h+}
 uses cwstring,uregexpr;
 
-Function ReplaceRegExpr(ARegExpr, AInputStr, AReplaceStr : Unicodestring) : string;
+Function ReplaceRegExpr(ARegExpr, AInputStr, AReplaceStr : Unicodestring) : AnsiString;
 
 begin
   with TRegExpr.Create do
@@ -24,4 +24,4 @@ end;
 
 begin    
   Writeln(ReplaceRegExpr('\w+', UTF8Decode('test слово ŕáćéí ϸϬϛ ュユョ'), '<$0>'));
-end.
+end.

+ 2 - 2
packages/regexpr/examples/testreg1.pp

@@ -9,7 +9,7 @@ uses
 var
    r         : tregexprengine;
    index,len : longint;
-   S         : String;
+   S         : AnsiString;
    Dest	     : AnsiString;
 
 procedure do_error(i : longint);
@@ -286,7 +286,7 @@ begin
      do_error(103);
    DestroyregExprEngine(r);
 
-   { start and end of string handling }
+   { start and end of AnsiString handling }
    initok:=GenerateRegExprEngine('^TEST1(ANOTHER)$',[],r);
    if not initok then
      do_error(103);

+ 29 - 29
packages/regexpr/src/old/regexpr.pp

@@ -48,7 +48,7 @@ unit regexpr;
     { some procedures return pregexprentry but programs which   }
     { use this unit shouldn't access this data structures        }
     type
-       tcharset = set of char;
+       tcharset = set of AnsiChar;
        tregexprentrytype = (ret_charset,ret_or,
           ret_illegalend,ret_backtrace,ret_startline,
           ret_endline,ret_pattern);
@@ -101,11 +101,11 @@ unit regexpr;
          @param(RegExprEngine The actual encoded version of the regular expression)
          @returns(true if success, otherwise syntax error in compiling regular expression)
      }
-     function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags;var RegExprEngine: TRegExprEngine): boolean;
+     function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags;var RegExprEngine: TRegExprEngine): boolean;
 
 {$IFDEF FPC}
     {** Backward compatibility routine }
-     function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags): TREGExprEngine;
+     function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags): TREGExprEngine;
 {$ENDIF}
 
      {** Frees all up resources used for the encoded regular expression }
@@ -119,13 +119,13 @@ unit regexpr;
         @param(len length of the match)
         @returns(true if there was a match, otherwise false)
      }
-     function RegExprPos(RegExprEngine : TRegExprEngine;p : pchar;var index,len : longint) : boolean;
+     function RegExprPos(RegExprEngine : TRegExprEngine;p : PAnsiChar;var index,len : longint) : boolean;
 
      function RegExprReplaceAll(RegExprEngine : TRegExprEngine;const src,newstr : ansistring;var dest : ansistring) : sizeint;
 
      { This function Escape known regex chars and place the result on Return. If something went wrong the
        function will return false. }
-     function RegExprEscapeStr (const S : string) : string;
+     function RegExprEscapeStr (const S : AnsiString) : AnsiString;
 
   implementation
 
@@ -145,7 +145,7 @@ unit regexpr;
 
     const
 
-      typ2str : array[tregexprentrytype] of string =
+      typ2str : array[tregexprentrytype] of AnsiString =
       (
         'ret_charset',
         'ret_or',
@@ -158,7 +158,7 @@ unit regexpr;
 
 
      { Dumps all the next elements of a tree }
-     procedure dumptree(space: string; regentry: pregexprentry);
+     procedure dumptree(space: AnsiString; regentry: pregexprentry);
       begin
         while assigned(regentry) do
           begin
@@ -219,7 +219,7 @@ unit regexpr;
          patlength:=count;
        end;
 
-     function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags; var RegExprEngine:TRegExprEngine) : boolean;
+     function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags; var RegExprEngine:TRegExprEngine) : boolean;
 
        var
           first : pregexprentry;
@@ -232,13 +232,13 @@ unit regexpr;
          end;
 
        var
-          currentpos : pchar;
+          currentpos : PAnsiChar;
           error : boolean;
 
        procedure readchars(var chars: tcharset);
 
          var
-            c1 : char;
+            c1 : AnsiChar;
 
          begin
             chars:=[];
@@ -404,10 +404,10 @@ unit regexpr;
           elements. In case of error, sets error to true and returns false,
           otherwise returns true and set minoccurs and maxoccurs accordingly
           (-1 if not present). *)
-       function parseoccurences(var currentpos: pchar; var minoccurs,maxoccurs: integer): boolean;
+       function parseoccurences(var currentpos: PAnsiChar; var minoccurs,maxoccurs: integer): boolean;
          var
-          minOccursString: string;
-          maxOccursString: string;
+          minOccursString: AnsiString;
+          maxOccursString: AnsiString;
          begin
            parseoccurences:=false;
            minOccurs:=-1;
@@ -449,7 +449,7 @@ unit regexpr;
                 end;
                 if currentpos^= '}' then
                  begin
-                   { If the length of the string is zero, then there is
+                   { If the length of the AnsiString is zero, then there is
                      no upper bound. }
                    if length(maxOccursString) > 0 then
                       Val(maxOccursString,maxOccurs)
@@ -854,7 +854,7 @@ unit regexpr;
 
 
 {$IFDEF FPC}
-    function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags): TREGExprEngine;
+    function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags): TREGExprEngine;
     var
      r: TRegExprEngine;
     begin
@@ -880,18 +880,18 @@ unit regexpr;
           regexpr.DestroyList:=nil;
        end;
 
-     function RegExprPos(regexprengine : TRegExprEngine;p : pchar;var index,len : longint) : boolean;
+     function RegExprPos(regexprengine : TRegExprEngine;p : PAnsiChar;var index,len : longint) : boolean;
 
        var
-          lastpos : pchar;
-          firstpos: pchar;
+          lastpos : PAnsiChar;
+          firstpos: PAnsiChar;
 
        { Does the actual search of the data - return true if the term was found }
-       function dosearch(regexprentry : pregexprentry;pos : pchar) : boolean;
+       function dosearch(regexprentry : pregexprentry;pos : PAnsiChar) : boolean;
        var
           found: boolean;
           checkvalue: boolean;
-          savedpos: pchar;
+          savedpos: PAnsiChar;
           counter: word;
 
          begin
@@ -1119,11 +1119,11 @@ unit regexpr;
   function RegExprReplaceAll(RegExprEngine : TRegExprEngine;const src,newstr : ansistring;var dest : ansistring) : sizeint;
     var
       index,len : longint;
-      pos,lastpos : pchar;
+      pos,lastpos : PAnsiChar;
       first : boolean;
       oldlength : PtrInt;
     begin
-      pos:=pchar(src);
+      pos:=PAnsiChar(src);
       lastpos:=nil;
       first:=true;
       Result:=0;
@@ -1134,7 +1134,7 @@ unit regexpr;
           inc(pos,index);
           if (lastpos = nil) or (pos>lastpos) then
             begin
-              if lastpos = nil then lastpos := pchar(src);
+              if lastpos = nil then lastpos := PAnsiChar(src);
               { copy skipped part }
 
               { because we cheat with SetLength a SetLength(...,0) isn't what we want
@@ -1144,13 +1144,13 @@ unit regexpr;
                 begin
                   SetLength(dest,(pos-lastpos));
                   { cast dest here because it is already unified }
-                  move(lastpos^,char(dest[1]),pos-lastpos);
+                  move(lastpos^,AnsiChar(dest[1]),pos-lastpos);
                 end
               else
                 begin
                   oldlength:=Length(dest);
                   SetLength(dest,oldlength+(pos-lastpos));
-                  move(lastpos^,char(dest[oldlength+1]),pos-lastpos);
+                  move(lastpos^,AnsiChar(dest[oldlength+1]),pos-lastpos);
                 end;
               first:=false;
             end;
@@ -1165,21 +1165,21 @@ unit regexpr;
       if first then
         begin
           SetLength(dest,len);
-          move(pos^,char(dest[length(dest)+1]),len);
+          move(pos^,AnsiChar(dest[length(dest)+1]),len);
         end
       else
         begin
           oldlength:=Length(dest);
           SetLength(dest,oldlength+len);
-          move(pos^,char(dest[oldlength+1]),len);
+          move(pos^,AnsiChar(dest[oldlength+1]),len);
         end
     end;
 
 
-  function RegExprEscapeStr (const S : string) : string;
+  function RegExprEscapeStr (const S : AnsiString) : AnsiString;
     var
      i, len   : integer;
-     s1: string;
+     s1: AnsiString;
     begin
       RegExprEscapeStr:= '';
       s1:='';

+ 11 - 10
packages/regexpr/src/oldregexpr.pp

@@ -19,7 +19,8 @@
 
 unit OldRegExpr;
 
-{$mode objfpc}{$H+}
+{$mode objfpc}
+{$H-}
 
 interface
 
@@ -39,18 +40,18 @@ type
 
    TRegExprEngine = TRegexEngine;
 
-function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags;var RegExprEngine: TRegExprEngine): boolean;
-function GenerateRegExprEngine(regexpr : pchar;flags : tregexprflags): TREGExprEngine;
+function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags;var RegExprEngine: TRegExprEngine): boolean;
+function GenerateRegExprEngine(regexpr : PAnsiChar;flags : tregexprflags): TREGExprEngine;
 procedure DestroyRegExprEngine(var regexpr : TRegExprEngine);
 
-function RegExprPos(RegExprEngine : TRegExprEngine;p : pchar;var index,len : integer) : boolean;
+function RegExprPos(RegExprEngine : TRegExprEngine;p : PAnsiChar;var index,len : integer) : boolean;
 function RegExprReplaceAll(RegExprEngine : TRegExprEngine;const src,newstr : ansistring;var dest : ansistring) : sizeint;
 
-function RegExprEscapeStr (const S : string) : string;
+function RegExprEscapeStr (const S : AnsiString) : AnsiString;
 
 implementation
 
-function GenerateRegExprEngine(regexpr: pchar; flags: tregexprflags;
+function GenerateRegExprEngine(regexpr: PAnsiChar; flags: tregexprflags;
   var RegExprEngine: TRegExprEngine): boolean;
 var ErrorPos  : Integer;
     ErrorCode : TRegexError;
@@ -62,7 +63,7 @@ begin
   Result := RegExprEngine.Parse(ErrorPos,ErrorCode);
 end;
 
-function GenerateRegExprEngine(regexpr: pchar; flags: tregexprflags
+function GenerateRegExprEngine(regexpr: PAnsiChar; flags: tregexprflags
   ): TREGExprEngine;
 
 var r: TRegExprEngine;
@@ -79,7 +80,7 @@ begin
   regexpr := nil;
 end;
 
-function RegExprPos(RegExprEngine: TRegExprEngine; p: pchar; var index,
+function RegExprPos(RegExprEngine: TRegExprEngine; p: PAnsiChar; var index,
   len: integer): boolean;
 begin
   Len := 1;
@@ -99,10 +100,10 @@ begin
   result := RegExprEngine.ReplaceAllString(src,newstr,Dest);
 end;
 
-function RegExprEscapeStr(const S: string): string;
+function RegExprEscapeStr(const S: AnsiString): AnsiString;
 var
   i, len   : integer;
-  s1: string;
+  s1: AnsiString;
 begin
   RegExprEscapeStr:= '';
   s1:='';

+ 28 - 27
packages/regexpr/src/regex.pp

@@ -21,7 +21,8 @@
 
 unit Regex;
 
-{$mode Delphi}{$H+}
+{$mode Delphi}
+{$H-}
 {$INLINE ON}
 
 interface
@@ -42,8 +43,8 @@ interface
                  <atom> '*' |                    - zero or more
                  <atom> 'n,m' |                  - min n, max m (added by Joost)
                  <atom> '+'                      - one or more
-    <atom> ::= <char> |
-               '.' |                             - any char
+    <atom> ::= <AnsiChar> |
+               '.' |                             - any AnsiChar
                '(' <expr> ') |                   - parentheses
                '[' <charclass> ']' |             - normal class
                '[^' <charclass> ']'              - negated class
@@ -51,7 +52,7 @@ interface
                     <charrange><charclass>
     <charrange> ::= <ccchar> |
                     <ccchar> '-' <ccchar>
-    <char> ::= <any character except metacharacters> |
+    <AnsiChar> ::= <any character except metacharacters> |
                '\' <any character at all>
     <ccchar> ::= <any character except '-' and ']'> |
                  '\' <any character at all>
@@ -80,8 +81,8 @@ type
 
   TRegexError = (    {error codes for invalid regex strings}
      recNone,          {..no error}
-     recSuddenEnd,     {..unexpected end of string}
-     recMetaChar,      {..read metacharacter, but needed normal char}
+     recSuddenEnd,     {..unexpected end of String}
+     recMetaChar,      {..read metacharacter, but needed normal AnsiChar}
      recNoCloseParen,  {..expected close paren, but not there}
      recExtraChars     {..not at end of string after parsing regex}
      );
@@ -93,7 +94,7 @@ type
      );
 
   PCharSet = ^TCharSet;
-  TCharSet = set of Char;
+  TCharSet = set of AnsiChar;
 
   { TtdRegexEngine }
 
@@ -116,7 +117,7 @@ type
       FIgnoreCase : boolean;
       FMultiLine  : boolean;
       FPosn       : PAnsiChar;
-      FRegexStr   : string;
+      FRegexStr   : AnsiString;
       FStartState : integer;
       FStateTable : Array of TNFAState;
       FStateCount : integer;
@@ -136,14 +137,14 @@ type
       procedure DequeGrow;
 
       procedure rcSetIgnoreCase(aValue : boolean); virtual;
-      procedure rcSetRegexStr(const aRegexStr : string); virtual;
+      procedure rcSetRegexStr(const aRegexStr : AnsiString); virtual;
       procedure rcSetUpcase(aValue : TUpcaseFunc); virtual;
       procedure rcSetMultiLine(aValue : Boolean); virtual;
 
       procedure rcClear; virtual;
       procedure rcError(aIndex      : integer); virtual;
       procedure rcLevel1Optimize; virtual;
-      function rcMatchSubString(const S   : string;
+      function rcMatchSubString(const S   : AnsiString;
                                 StartPosn : integer;
                                 var Len   : integer) : boolean; virtual;
       function rcAddState(aMatchType : TNFAMatchType;
@@ -167,20 +168,20 @@ type
       Function rcReturnEscapeChar : AnsiChar; virtual;
     public
       procedure WriteTable;
-      constructor Create(const aRegexStr : string);
+      constructor Create(const aRegexStr : AnsiString);
       destructor Destroy; override;
 
       function Parse(out aErrorPos : integer;
                      out aErrorCode: TRegexError) : boolean; virtual;
-      function MatchString(const S : string; out MatchPos : integer; var Offset : integer) : boolean; virtual;
-      function ReplaceAllString(const src, newstr: ansistring; out DestStr : string): Integer;
+      function MatchString(const S : AnsiString; out MatchPos : integer; var Offset : integer) : boolean; virtual;
+      function ReplaceAllString(const src, newstr: ansistring; out DestStr : AnsiString): Integer;
 
 
       property IgnoreCase : boolean
                   read FIgnoreCase write rcSetIgnoreCase;
       property MultiLine : boolean
                   read FMultiLine write rcSetMultiLine;
-      property RegexString : string
+      property RegexString : AnsiString
                   read FRegexStr write rcSetRegexStr;
       property Upcase : TUpcaseFunc
                   read FUpcase write rcSetUpcase;
@@ -222,7 +223,7 @@ end;
 
 
 {===TRegexEngine===================================================}
-constructor TRegexEngine.Create(const aRegexStr : string);
+constructor TRegexEngine.Create(const aRegexStr : AnsiString);
 begin
   inherited Create;
   FRegexStr := aRegexStr;
@@ -247,12 +248,12 @@ begin
   inherited Destroy;
 end;
 {--------}
-function TRegexEngine.MatchString(const S : string; out MatchPos : integer; var Offset : integer): boolean;
+function TRegexEngine.MatchString(const S : AnsiString; out MatchPos : integer; var Offset : integer): boolean;
 var
   i : integer;
   ErrorPos  : integer;
   ErrorCode : TRegexError;
-  pc : pchar;
+  pc : PAnsiChar;
   x:integer;
 begin
   if Offset>length(S) then
@@ -271,7 +272,7 @@ begin
   case FRegexType of
     rtSingleChar :
       begin
-      MatchPos := PosEx(char(FRegexStr[1]),s,Offset);
+      MatchPos := PosEx(AnsiChar(FRegexStr[1]),s,Offset);
       Offset := MatchPos+1;
       Result := (MatchPos>0);
       end;
@@ -322,7 +323,7 @@ begin
     end; {case}
 end;
 
-function TRegexEngine.ReplaceAllString(const src, newstr: ansistring; out DestStr : string): Integer;
+function TRegexEngine.ReplaceAllString(const src, newstr: ansistring; out DestStr : AnsiString): Integer;
 
 type TReplRec = record
                   Pos : integer;
@@ -357,7 +358,7 @@ begin
     inc(racount);
     end;
 
-  SetLength(DestStr, SizeOf(Char)*DestSize);
+  SetLength(DestStr, SizeOf(AnsiChar)*DestSize);
   MatchPos:=1; LastPos:=1;
 
   if size_newstr<>0 then for i := 0 to racount -1 do
@@ -534,7 +535,7 @@ begin
   end;
 end;
 {--------}
-function TRegexEngine.rcMatchSubString(const s   : string;
+function TRegexEngine.rcMatchSubString(const s   : AnsiString;
                                          StartPosn : integer;
                                          var Len   : integer)
                                                             : boolean;
@@ -785,7 +786,7 @@ begin
     Result := #0;
     Exit;
   end;
-  {if the current char is a metacharacter (at least in terms of a
+  {if the current AnsiChar is a metacharacter (at least in terms of a
    character class), it's an error}
   if FPosn^ in [']', '-'] then begin
     FErrorCode := recMetaChar;
@@ -815,7 +816,7 @@ begin
     FErrorCode := recSuddenEnd;
     Exit;
   end;
-  {if the current char is one of the metacharacters, it's an error}
+  {if the current AnsiChar is one of the metacharacters, it's an error}
   if FPosn^ in MetaCharacters then begin
     Result := ErrorState;
     FErrorCode := recMetaChar;
@@ -969,7 +970,7 @@ var
   StartStateAtom : integer;
   EndStateAtom   : integer;
   TempEndStateAtom : integer;
-  Int            : string;
+  Int            : AnsiString;
   n,m,nState     : integer;
   i              : integer;
 begin
@@ -1132,7 +1133,7 @@ begin
          be
            - an open parenthesis
            - an open square bracket
-           - an any char operator
+           - an any AnsiChar operator
            - a character that's not a metacharacter
          i.e., the three possibilities for the start of an "atom" in
          our grammar}
@@ -1159,7 +1160,7 @@ procedure TRegexEngine.WriteTable;
 var i : integer;
 begin
   for i := 0 to FStateCount-1 do with FStateTable[i] do
-    writeln('s:',i,' mt:',sdMatchType ,' ns1:',sdNextState1,' ns2:',sdNextState2,' char:',sdChar);
+    writeln('s:',i,' mt:',sdMatchType ,' ns1:',sdNextState1,' ns2:',sdNextState2,' AnsiChar:',sdChar);
 end;
 
 procedure TRegexEngine.DequeEnqueue(aValue: integer);
@@ -1234,7 +1235,7 @@ begin
   end;
 end;
 {--------}
-procedure TRegexEngine.rcSetRegexStr(const aRegexStr : string);
+procedure TRegexEngine.rcSetRegexStr(const aRegexStr : AnsiString);
 begin
   if (aRegexStr <> FRegexStr) then begin
     rcClear;

+ 43 - 43
packages/regexpr/src/regexpr.pas

@@ -154,7 +154,7 @@ type
   TRegExprCharset = set of byte;
 
 const
-  // Escape char ('\' in common r.e.) used for escaping metachars (\w, \d etc)
+  // Escape AnsiChar ('\' in common r.e.) used for escaping metachars (\w, \d etc)
   EscChar = '\';
 
   // Substitute method: prefix of group reference: $1 .. $9 and $<name>
@@ -232,7 +232,7 @@ type
        // А-Я additionally includes 'Ё', and а-Я includes all Russian letters.
        // Turn it off if it interferes with your national alphabet.
     S: boolean;
-       // Dot '.' matches any char, otherwise only [^\n].
+       // Dot '.' matches any AnsiChar, otherwise only [^\n].
     G: boolean;
        // Greedy. Switching it off switches all operators to non-greedy style,
        // so if G=False, then '*' works like '*?', '+' works like '+?' and so on.
@@ -241,7 +241,7 @@ type
        // matching at only the very start/end of the string to the start/end
        // of any line anywhere within the string.
     X: boolean;
-       // Allow comments in regex using # char.
+       // Allow comments in regex using # AnsiChar.
   end;
 
 function IsModifiersEqual(const A, B: TRegExprModifiers): boolean;
@@ -314,16 +314,16 @@ type
     {$ENDIF}
 
     // work variables for Exec routines - save stack in recursion
-    regInput: PRegExprChar; // pointer to currently handling char of input string
-    fInputStart: PRegExprChar; // pointer to first char of input string
-    fInputEnd: PRegExprChar; // pointer after last char of input string
-    fRegexStart: PRegExprChar; // pointer to first char of regex
-    fRegexEnd: PRegExprChar; // pointer after last char of regex
+    regInput: PRegExprChar; // pointer to currently handling AnsiChar of input string
+    fInputStart: PRegExprChar; // pointer to first AnsiChar of input string
+    fInputEnd: PRegExprChar; // pointer after last AnsiChar of input string
+    fRegexStart: PRegExprChar; // pointer to first AnsiChar of regex
+    fRegexEnd: PRegExprChar; // pointer after last AnsiChar of regex
     regCurrentGrp: integer; // index of group handling by OP_OPEN* opcode
     regRecursion: integer; // current level of recursion (?R) (?1); always 0 if no recursion is used
 
     // work variables for compiler's routines
-    regParse: PRegExprChar; // pointer to currently handling char of regex
+    regParse: PRegExprChar; // pointer to currently handling AnsiChar of regex
     regNumBrackets: integer; // count of () brackets
     regDummy: REChar; // dummy pointer, used to detect 1st/2nd pass of Compile
                       // if p=@regDummy, it is pass-1: opcode memory is not yet allocated
@@ -570,7 +570,7 @@ type
     function ExecNext(ABackward: boolean {$IFDEF DefParam} = False{$ENDIF}): boolean;
 
     // find match for InputString starting from AOffset position
-    // (AOffset=1 - first char of InputString)
+    // (AOffset=1 - first AnsiChar of InputString)
     function ExecPos(AOffset: integer {$IFDEF DefParam} = 1{$ENDIF}): boolean;
     {$IFDEF OverMeth} overload;
     function ExecPos(AOffset: integer; ATryOnce, ABackward: boolean): boolean; overload;
@@ -1078,7 +1078,7 @@ end;
 
 {$IFDEF UNICODEEX}
 procedure IncUnicode(var p: PRegExprChar); {$IFDEF InlineFuncs}inline;{$ENDIF}
-// make additional increment if we are on low-surrogate char
+// make additional increment if we are on low-surrogate AnsiChar
 // no need to check p<fInputEnd, at the end of string we have chr(0)
 var
   ch: REChar;
@@ -1367,13 +1367,13 @@ begin
             // comment beginning!
             i0 := i;
             Inc(i);
-            if ARegExpr[i] = ']' // first ']' inside [] treated as simple char, no need to check '['
+            if ARegExpr[i] = ']' // first ']' inside [] treated as simple AnsiChar, no need to check '['
             then
               Inc(i);
             while (i <= Len) and (ARegExpr[i] <> ']') do
               if ARegExpr[i] = EscChar // ###0.942
               then
-                Inc(i, 2) // skip 'escaped' char to prevent stopping at '\]'
+                Inc(i, 2) // skip 'escaped' AnsiChar to prevent stopping at '\]'
               else
                 Inc(i);
             if (i > Len) or (ARegExpr[i] <> ']') // ###0.942
@@ -1395,7 +1395,7 @@ begin
           end;
         // here is no 'else' clause - we simply skip ordinary chars
       end; // of case
-      Inc(i); // skip scanned char
+      Inc(i); // skip scanned AnsiChar
       // ! can move after Len due to skipping quoted symbol
     end;
 
@@ -1426,7 +1426,7 @@ const
   OP_EOL = TREOp(2); // -    Match "" at end of line
   OP_ANY = TREOp(3); // -    Match any one character
   OP_ANYOF = TREOp(4); // Str  Match any character in string Str
-  OP_ANYBUT = TREOp(5); // Str  Match any char. not in string Str
+  OP_ANYBUT = TREOp(5); // Str  Match any AnsiChar. not in string Str
   OP_BRANCH = TREOp(6); // Node Match this alternative, or the next
   OP_BACK = TREOp(7); // -    Jump backward (Next < 0)
   OP_EXACTLY = TREOp(8); // Str  Match string Str
@@ -1437,8 +1437,8 @@ const
   OP_NOTDIGIT = TREOp(13); // -    Match not digit (equiv [0-9])
   OP_ANYLETTER = TREOp(14); // -    Match any letter from property WordChars
   OP_NOTLETTER = TREOp(15); // -    Match not letter from property WordChars
-  OP_ANYSPACE = TREOp(16); // -    Match any space char (see property SpaceChars)
-  OP_NOTSPACE = TREOp(17); // -    Match not space char (see property SpaceChars)
+  OP_ANYSPACE = TREOp(16); // -    Match any space AnsiChar (see property SpaceChars)
+  OP_NOTSPACE = TREOp(17); // -    Match not space AnsiChar (see property SpaceChars)
   OP_BRACES = TREOp(18);
   // Node,Min,Max Match this (simple) thing from Min to Max times.
   // Min and Max are TREBracesArg
@@ -1447,7 +1447,7 @@ const
   OP_ANYOFCI = TREOp(21);
   // Str  Match any character in string Str, case insensitive
   OP_ANYBUTCI = TREOp(22);
-  // Str  Match any char. not in string Str, case insensitive
+  // Str  Match any AnsiChar. not in string Str, case insensitive
   OP_LOOPENTRY = TREOp(23); // Node Start of loop (Node - LOOP for this loop)
   OP_LOOP = TREOp(24); // Node,Min,Max,LoopEntryJmp - back jump for LOOPENTRY.
   // Min and Max are TREBracesArg
@@ -1637,7 +1637,7 @@ begin
     reeUnmatchedSqBrackets:
       Result := 'TRegExpr compile: unmatched []';
     reeInternalUrp:
-      Result := 'TRegExpr compile: internal fail on char "|", ")"';
+      Result := 'TRegExpr compile: internal fail on AnsiChar "|", ")"';
     reeQuantifFollowsNothing:
       Result := 'TRegExpr compile: quantifier ?+*{ follows nothing';
     reeTrailingBackSlash:
@@ -1704,7 +1704,7 @@ begin
     reeExecNextWithoutExec:
       Result := 'TRegExpr exec: ExecNext without Exec(Pos)';
     reeBadOpcodeInCharClass:
-      Result := 'TRegExpr exec: invalid opcode in char class';
+      Result := 'TRegExpr exec: invalid opcode in AnsiChar class';
     reeDumpCorruptedOpcode:
       Result := 'TRegExpr dump: corrupted opcode';
     reeLoopStackExceeded:
@@ -1980,7 +1980,7 @@ end;
 {$IFDEF FastUnicodeData}
 function TRegExpr.IsWordChar(AChar: REChar): boolean;
 begin
-  // bit 7 in value: is word char
+  // bit 7 in value: is word AnsiChar
   Result := CharCategoryArray[Ord(AChar)] and 128 <> 0;
 end;
 
@@ -2083,7 +2083,7 @@ begin
 end;
 
 function CheckCharCategory(AChar: REChar; Ch0, Ch1: REChar): boolean;
-// AChar: check this char against opcode
+// AChar: check this AnsiChar against opcode
 // Ch0, Ch1: opcode operands after OP_*CATEGORY
 var
   N: byte;
@@ -2375,7 +2375,7 @@ end;
 {$IFDEF FastUnicodeData}
 procedure TRegExpr.FindCategoryName(var scan: PRegExprChar; var ch1, ch2: REChar);
 // scan: points into regex string after '\p', to find category name
-// ch1, ch2: 2-char name of category; ch2 can be #0
+// ch1, ch2: 2-AnsiChar name of category; ch2 can be #0
 var
   ch: REChar;
   pos1, pos2, namePtr: PRegExprChar;
@@ -2519,7 +2519,7 @@ const
   {$ENDIF}
 
 function TRegExpr.FindInCharClass(ABuffer: PRegExprChar; AChar: REChar; AIgnoreCase: boolean): boolean;
-// Buffer contains char pairs: (Kind, Data), where Kind is one of OpKind_ values,
+// Buffer contains AnsiChar pairs: (Kind, Data), where Kind is one of OpKind_ values,
 // and Data depends on Kind
 var
   OpKind: REChar;
@@ -3258,7 +3258,7 @@ begin
           InsertOperator(TheOp, Result, REOpSz + RENextOffSz);
         end;
         if NonGreedyCh or PossessiveCh then
-          Inc(regParse); // Skip extra char ('?')
+          Inc(regParse); // Skip extra AnsiChar ('?')
       end; { of case '*' }
     '+':
       begin
@@ -3300,7 +3300,7 @@ begin
           InsertOperator(TheOp, Result, REOpSz + RENextOffSz);
         end;
         if NonGreedyCh or PossessiveCh then
-          Inc(regParse); // Skip extra char ('?')
+          Inc(regParse); // Skip extra AnsiChar ('?')
       end; { of case '+' }
     '?':
       begin
@@ -3337,7 +3337,7 @@ begin
           OpTail(Result, NextNode);
         end;
         if NonGreedyCh or PossessiveCh then
-          Inc(regParse); // Skip extra char ('?')
+          Inc(regParse); // Skip extra AnsiChar ('?')
       end; { of case '?' }
     '{':
       begin
@@ -3400,7 +3400,7 @@ begin
           EmitComplexBraces(BracesMin, BracesMax, NonGreedyOp);
         end;
         if NonGreedyCh or PossessiveCh then
-          Inc(regParse); // Skip extra char '?'
+          Inc(regParse); // Skip extra AnsiChar '?'
       end; // of case '{'
     // else // here we can't be
   end; { of case op }
@@ -3463,7 +3463,7 @@ begin
         end;
       end;
     'x':
-      begin // \x: hex char
+      begin // \x: hex AnsiChar
         Result := #0;
         Inc(APtr);
         if APtr >= AEnd then
@@ -3681,7 +3681,7 @@ begin
 
         if regParse^ = ']' then
         begin
-          // first ']' inside [] treated as simple char, no need to check '['
+          // first ']' inside [] treated as simple AnsiChar, no need to check '['
           EmitRangeChar(regParse^, (regParse + 1)^ = '-');
           Inc(regParse);
         end;
@@ -3698,7 +3698,7 @@ begin
             Break;
           end;
 
-          // char '-' which (maybe) makes a range
+          // AnsiChar '-' which (maybe) makes a range
           if (regParse^ = '-') and ((regParse + 1) < fRegexEnd) and CanBeRange then
           begin
             Inc(regParse);
@@ -3783,7 +3783,7 @@ begin
               {$ENDIF}
               begin
                 TempChar := UnQuoteChar(regParse, fRegexEnd);
-                // False if '-' is last char in []
+                // False if '-' is last AnsiChar in []
                 DashForRange :=
                   (regParse + 2 < fRegexEnd) and
                   ((regParse + 1)^ = '-') and
@@ -3793,7 +3793,7 @@ begin
             end
             else
             begin
-              // False if '-' is last char in []
+              // False if '-' is last AnsiChar in []
               DashForRange :=
                 (regParse + 2 < fRegexEnd) and
                 ((regParse + 1)^ = '-') and
@@ -4168,22 +4168,22 @@ begin
               FlagParse := FlagParse or FLAG_HASWIDTH or FLAG_SIMPLE;
             end;
           's':
-            begin // r.e.extension - any space char
+            begin // r.e.extension - any space AnsiChar
               ret := EmitNode(OP_ANYSPACE);
               FlagParse := FlagParse or FLAG_HASWIDTH or FLAG_SIMPLE;
             end;
           'S':
-            begin // r.e.extension - not space char
+            begin // r.e.extension - not space AnsiChar
               ret := EmitNode(OP_NOTSPACE);
               FlagParse := FlagParse or FLAG_HASWIDTH or FLAG_SIMPLE;
             end;
           'w':
-            begin // r.e.extension - any english char / digit / '_'
+            begin // r.e.extension - any english AnsiChar / digit / '_'
               ret := EmitNode(OP_ANYLETTER);
               FlagParse := FlagParse or FLAG_HASWIDTH or FLAG_SIMPLE;
             end;
           'W':
-            begin // r.e.extension - not english char / digit / '_'
+            begin // r.e.extension - not english AnsiChar / digit / '_'
               ret := EmitNode(OP_NOTLETTER);
               FlagParse := FlagParse or FLAG_HASWIDTH or FLAG_SIMPLE;
             end;
@@ -4357,7 +4357,7 @@ begin
     OP_ANY:
       begin
         // note - OP_ANYML cannot be proceeded in FindRepeated because can skip
-        // more than one char at once
+        // more than one AnsiChar at once
         {$IFDEF UnicodeEx}
         for i := 1 to TheMax do
           IncUnicode2(scan, Result);
@@ -4368,7 +4368,7 @@ begin
       end;
 
     OP_EXACTLY:
-      begin // in opnd can be only ONE char !!!
+      begin // in opnd can be only ONE AnsiChar !!!
         {
         // Alexey: commented because of https://github.com/andgineer/TRegExpr/issues/145
         NLen := PLongInt(opnd)^;
@@ -4384,7 +4384,7 @@ begin
       end;
 
     OP_EXACTLYCI:
-      begin // in opnd can be only ONE char !!!
+      begin // in opnd can be only ONE AnsiChar !!!
         {
         // Alexey: commented because of https://github.com/andgineer/TRegExpr/issues/145
         NLen := PLongInt(opnd)^;
@@ -5827,7 +5827,7 @@ begin
     else
     begin
       if (Ch = EscChar) and (p < TemplateEnd) then
-      begin // quoted or special char followed
+      begin // quoted or special AnsiChar followed
         Ch := p^;
         Inc(p);
         case Ch of
@@ -5889,7 +5889,7 @@ begin
     else
     begin
       if (Ch = EscChar) and (p < TemplateEnd) then
-      begin // quoted or special char followed
+      begin // quoted or special AnsiChar followed
         Ch := p^;
         Inc(p);
         case Ch of
@@ -5901,7 +5901,7 @@ begin
           'x', 't', 'r', 'f', 'a', 'e':
             begin
               p := p - 1;
-              // UnquoteChar expects the escaped char under the pointer
+              // UnquoteChar expects the escaped AnsiChar under the pointer
               QuotedChar := UnQuoteChar(p, TemplateEnd);
               p := p + 1;
               // Skip after last part of the escaped sequence - UnquoteChar stops on the last symbol of it

+ 8 - 8
packages/regexpr/tests/tcregexp.pp

@@ -18,7 +18,7 @@ type
   private
     FRE: TRegExpr;
   protected
-    class function PrintableString(AString: string): string;
+    class function PrintableString(AString: AnsiString): AnsiString;
     Procedure RunRETest(aIndex : Integer);
     procedure SetUp; override;
     procedure TearDown; override;
@@ -56,10 +56,10 @@ implementation
 
 Type
   TRegExTest = record
-    Expression: string;
-    InputText: string;
-    SubstitutionText: string;
-    ExpectedResult: string;
+    Expression: AnsiString;
+    InputText: AnsiString;
+    SubstitutionText: AnsiString;
+    ExpectedResult: AnsiString;
     MatchStart: integer;
   end;
 
@@ -375,10 +375,10 @@ begin
 end;
 
 
-Class function TOrgTestRegexpr.PrintableString(AString: string): string;
+Class function TOrgTestRegexpr.PrintableString(AString: AnsiString): AnsiString;
 
 var
-    ch: Char;
+    ch: AnsiChar;
 
 begin
   Result := '';
@@ -394,7 +394,7 @@ procedure TOrgTestRegexpr.RunRETest(aIndex: Integer);
 
 var
   T: TRegExTest;
-  act : String;
+  act : AnsiString;
 
 begin
   T:=testCases[aIndex];

+ 16 - 16
packages/regexpr/tests/tests.pp

@@ -43,12 +43,12 @@ type
   protected
     procedure RunRETest(aIndex: Integer);
     procedure CompileRE(const AExpression: RegExprString);
-    procedure IsNotNull(AErrorMessage: string; AObjectToCheck: TObject);
-    procedure IsTrue(AErrorMessage: string; AConditionToCheck: boolean);
-    procedure IsFalse(AErrorMessage: string; AConditionToCheck: boolean);
-    procedure AreEqual(AErrorMessage: string; s1, s2: string); overload;
-    procedure AreEqual(AErrorMessage: string; i1, i2: integer); overload;
-    procedure TestBadRegex(const AErrorMessage: string; const AExpression: RegExprString);
+    procedure IsNotNull(AErrorMessage: AnsiString; AObjectToCheck: TObject);
+    procedure IsTrue(AErrorMessage: AnsiString; AConditionToCheck: boolean);
+    procedure IsFalse(AErrorMessage: AnsiString; AConditionToCheck: boolean);
+    procedure AreEqual(AErrorMessage: AnsiString; s1, s2: AnsiString); overload;
+    procedure AreEqual(AErrorMessage: AnsiString; i1, i2: integer); overload;
+    procedure TestBadRegex(const AErrorMessage: AnsiString; const AExpression: RegExprString);
   published
     procedure TestEmpty;
     procedure TestNotFound;
@@ -144,10 +144,10 @@ Type
     MatchStart: integer;
   end;
 
-function PrintableString(const S: RegExprString): string;
+function PrintableString(const S: RegExprString): AnsiString;
 var
-  buf: string;
-  ch: char;
+  buf: AnsiString;
+  ch: AnsiChar;
   i: integer;
 begin
   Result := '';
@@ -719,12 +719,12 @@ const
     )
   );
 
-procedure TTestRegexpr.IsFalse(AErrorMessage: string; AConditionToCheck: boolean);
+procedure TTestRegexpr.IsFalse(AErrorMessage: AnsiString; AConditionToCheck: boolean);
 begin
   IsTrue(AErrorMessage, not AConditionToCheck)
 end;
 
-procedure TTestRegexpr.IsTrue(AErrorMessage: string; AConditionToCheck: boolean);
+procedure TTestRegexpr.IsTrue(AErrorMessage: AnsiString; AConditionToCheck: boolean);
 begin
   {$IFDEF FPC}
   AssertTrue(AErrorMessage, AConditionToCheck);
@@ -733,7 +733,7 @@ begin
   {$ENDIF}
 end;
 
-procedure TTestRegexpr.IsNotNull(AErrorMessage: string; AObjectToCheck: TObject
+procedure TTestRegexpr.IsNotNull(AErrorMessage: AnsiString; AObjectToCheck: TObject
   );
 begin
   {$IFDEF FPC}
@@ -743,7 +743,7 @@ begin
   {$ENDIF}
 end;
 
-procedure TTestRegexpr.AreEqual(AErrorMessage: string; s1, s2: string);
+procedure TTestRegexpr.AreEqual(AErrorMessage: AnsiString; s1, s2: AnsiString);
 begin
   {$IFDEF FPC}
   AssertEquals(AErrorMessage, s1,s2);
@@ -752,7 +752,7 @@ begin
   {$ENDIF}
 end;
 
-procedure TTestRegexpr.AreEqual(AErrorMessage: string; i1, i2: integer);
+procedure TTestRegexpr.AreEqual(AErrorMessage: AnsiString; i1, i2: integer);
 begin
   {$IFDEF FPC}
   AssertEquals(AErrorMessage, i1,i2);
@@ -761,7 +761,7 @@ begin
   {$ENDIF}
 end;
 
-procedure TTestRegexpr.TestBadRegex(const AErrorMessage: string;
+procedure TTestRegexpr.TestBadRegex(const AErrorMessage: AnsiString;
   const AExpression: RegExprString);
 var
   ok: boolean;
@@ -793,7 +793,7 @@ end;
 {$IFDEF OverMeth}
 procedure TTestRegexpr.TestReplaceOverload;
 var
-  act: string;
+  act: AnsiString;
 begin
   CompileRE('A\r(\n)'); // just to print compiled re - it will be recompiled below
   act:=ReplaceRegExpr('A\r(\n)', 'a'#$d#$a, '\n', [rroModifierI, rroUseSubstitution]);