LazUtils: use TSysCharSet / See MR !310

This commit is contained in:
Martin 2024-08-21 22:12:39 +02:00
parent a310bf43dc
commit 14514dc97f
4 changed files with 16 additions and 20 deletions

View File

@ -112,7 +112,6 @@ type
// DOMString // DOMString
// ------------------------------------------------------- // -------------------------------------------------------
TSetOfChar = set of Char;
DOMString = AnsiString; DOMString = AnsiString;
DOMPChar = PChar; DOMPChar = PChar;
DOMChar = Char; DOMChar = Char;

View File

@ -163,7 +163,7 @@ uses
URIParser, Laz2_XMLUtils, LazUTF8; URIParser, Laz2_XMLUtils, LazUTF8;
const const
PubidChars: TSetOfChar = [' ', #13, #10, 'a'..'z', 'A'..'Z', '0'..'9', PubidChars: TSysCharSet = [' ', #13, #10, 'a'..'z', 'A'..'Z', '0'..'9',
'-', '''', '(', ')', '+', ',', '.', '/', ':', '=', '?', ';', '!', '*', '-', '''', '(', ')', '+', ',', '.', '/', ':', '=', '?', ';', '!', '*',
'#', '@', '$', '_', '%']; '#', '@', '$', '_', '%'];
var var
@ -228,7 +228,7 @@ type
constructor Create(const AData: DOMString); constructor Create(const AData: DOMString);
procedure NextChar; procedure NextChar;
procedure NewLine; virtual; procedure NewLine; virtual;
function SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSetOfChar; function SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSysCharSet;
wsflag: PBoolean = nil; {%H-}AllowSpecialChars: boolean = false): DOMChar; virtual; wsflag: PBoolean = nil; {%H-}AllowSpecialChars: boolean = false): DOMChar; virtual;
procedure Initialize; virtual; procedure Initialize; virtual;
function SetEncoding(const {%H-}AEncoding: string): Boolean; virtual; function SetEncoding(const {%H-}AEncoding: string): Boolean; virtual;
@ -256,7 +256,7 @@ type
destructor Destroy; override; destructor Destroy; override;
function SetEncoding(const AEncoding: string): Boolean; override; function SetEncoding(const AEncoding: string): Boolean; override;
procedure NewLine; override; procedure NewLine; override;
function SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSetOfChar; function SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSysCharSet;
wsflag: PBoolean = nil; AllowSpecialChars: boolean = false): DOMChar; override; wsflag: PBoolean = nil; AllowSpecialChars: boolean = false): DOMChar; override;
procedure Initialize; override; procedure Initialize; override;
end; end;
@ -407,7 +407,7 @@ type
procedure StandaloneError(LineOffs: Integer = 0); procedure StandaloneError(LineOffs: Integer = 0);
procedure CallErrorHandler(E: EXMLReadError); procedure CallErrorHandler(E: EXMLReadError);
function FindOrCreateElDef: TDOMElementDef; function FindOrCreateElDef: TDOMElementDef;
function SkipUntilSeq(const Delim: TSetOfChar; c1: DOMChar; c2: DOMChar = #0; function SkipUntilSeq(const Delim: TSysCharSet; c1: DOMChar; c2: DOMChar = #0;
AllowSpecialChars: boolean = false): Boolean; AllowSpecialChars: boolean = false): Boolean;
procedure CheckMaxChars; procedure CheckMaxChars;
protected protected
@ -1032,7 +1032,7 @@ begin
LFPos := FBuf; LFPos := FBuf;
end; end;
function TXMLCharSource.SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSetOfChar; function TXMLCharSource.SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSysCharSet;
wsflag: PBoolean; AllowSpecialChars: boolean): DOMChar; wsflag: PBoolean; AllowSpecialChars: boolean): DOMChar;
var var
old: DOMPChar; old: DOMPChar;
@ -1954,11 +1954,11 @@ begin
end; end;
const const
AttrDelims: array[boolean] of TSetOfChar = ( AttrDelims: array[boolean] of TSysCharSet = (
[#0, '<', '&', '''', '"', #9, #10, #13], // false: default [#0, '<', '&', '''', '"', #9, #10, #13], // false: default
[#0, '<', '&', '''', '"'] // true: xrfAllowSpecialCharsInAttributeValue [#0, '<', '&', '''', '"'] // true: xrfAllowSpecialCharsInAttributeValue
); );
GT_Delim: TSetOfChar = [#0, '>']; GT_Delim: TSysCharSet = [#0, '>'];
procedure TXMLReader.ExpectAttValue; procedure TXMLReader.ExpectAttValue;
var var
@ -2228,7 +2228,7 @@ begin
end; end;
const const
LiteralDelims: array[TLiteralType] of TSetOfChar = ( LiteralDelims: array[TLiteralType] of TSysCharSet = (
[#0, '''', '"'], // ltPlain [#0, '''', '"'], // ltPlain
[#0, '<', '&', '''', '"', #9, #10, #13], // ltAttr [#0, '<', '&', '''', '"', #9, #10, #13], // ltAttr
[#0, '<', '&', '''', '"', #9, #10, #13], // ltTokAttr [#0, '<', '&', '''', '"', #9, #10, #13], // ltTokAttr
@ -2299,7 +2299,7 @@ begin
Normalize(ToFill, Normalized); Normalize(ToFill, Normalized);
end; end;
function TXMLReader.SkipUntilSeq(const Delim: TSetOfChar; c1: DOMChar; function TXMLReader.SkipUntilSeq(const Delim: TSysCharSet; c1: DOMChar;
c2: DOMChar; AllowSpecialChars: boolean): Boolean; c2: DOMChar; AllowSpecialChars: boolean): Boolean;
var var
wc: DOMChar; wc: DOMChar;
@ -3116,7 +3116,7 @@ end;
// The code below does the bulk of the parsing, and must be as fast as possible. // The code below does the bulk of the parsing, and must be as fast as possible.
// To minimize CPU cache effects, methods from different classes are kept together // To minimize CPU cache effects, methods from different classes are kept together
function TXMLDecodingSource.SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSetOfChar; function TXMLDecodingSource.SkipUntil(var ToFill: TDOMCharBuf; const Delim: TSysCharSet;
wsflag: PBoolean; AllowSpecialChars: boolean): DOMChar; wsflag: PBoolean; AllowSpecialChars: boolean): DOMChar;
var var
old: DOMPChar; old: DOMPChar;
@ -3218,7 +3218,7 @@ begin
end; end;
const const
TextDelims: array[Boolean] of TSetOfChar = ( TextDelims: array[Boolean] of TSysCharSet = (
[#0, '<', '&', '>'], [#0, '<', '&', '>'],
[#0, '>'] [#0, '>']
); );

View File

@ -96,7 +96,7 @@ type
procedure wrtChr(c: DOMChar); {$IFDEF HAS_INLINE} inline; {$ENDIF} procedure wrtChr(c: DOMChar); {$IFDEF HAS_INLINE} inline; {$ENDIF}
procedure wrtIndent; {$IFDEF HAS_INLINE} inline; {$ENDIF} procedure wrtIndent; {$IFDEF HAS_INLINE} inline; {$ENDIF}
procedure wrtQuotedLiteral(const ws: DOMString); procedure wrtQuotedLiteral(const ws: DOMString);
procedure ConvWrite(const s: DOMString; const SpecialChars: TSetOfChar; procedure ConvWrite(const s: DOMString; const SpecialChars: TSysCharSet;
const SpecialCharCallback: TSpecialCharCallback); const SpecialCharCallback: TSpecialCharCallback);
procedure WriteNSDef(B: TBinding); procedure WriteNSDef(B: TBinding);
procedure NamespaceFixup(Element: TDOMElement); procedure NamespaceFixup(Element: TDOMElement);
@ -191,7 +191,7 @@ end;
---------------------------------------------------------------------} ---------------------------------------------------------------------}
const const
AttrSpecialChars : array[boolean] of TSetOfChar = ( AttrSpecialChars : array[boolean] of TSysCharSet = (
['<', '"', '''', '&', #0..#31], // false: default ['<', '"', '''', '&', #0..#31], // false: default
['<', '"', '''', '&', #0] // true: write special characters ['<', '"', '''', '&', #0] // true: write special characters
); );
@ -355,7 +355,7 @@ begin
if FIndentCount>0 then dec(FIndentCount); if FIndentCount>0 then dec(FIndentCount);
end; end;
procedure TXMLWriter.ConvWrite(const s: DOMString; const SpecialChars: TSetOfChar; procedure TXMLWriter.ConvWrite(const s: DOMString; const SpecialChars: TSysCharSet;
const SpecialCharCallback: TSpecialCharCallback); const SpecialCharCallback: TSpecialCharCallback);
var var
StartPos, EndPos: Integer; StartPos, EndPos: Integer;

View File

@ -31,9 +31,6 @@ const
BUFSIZE=1024; BUFSIZE=1024;
MAXGROW = 1 shl 29; MAXGROW = 1 shl 29;
type
TSoc = set of char;
procedure LoadFromCSVStream(AStream: TStream; AProc: TCSVRecordProc; procedure LoadFromCSVStream(AStream: TStream; AProc: TCSVRecordProc;
ADelimiter:Char; CSVEncoding: TCSVEncoding); ADelimiter:Char; CSVEncoding: TCSVEncoding);
var var
@ -42,13 +39,13 @@ var
leadPtr, tailPtr, wordPtr, X:Pchar; leadPtr, tailPtr, wordPtr, X:Pchar;
Line: TStringList = nil; Line: TStringList = nil;
function SkipSet(const aSet: TSoc): boolean; function SkipSet(const aSet: TSysCharSet): boolean;
begin begin
while (leadPtr<tailPtr) and (leadPtr^ in aSet) do Inc(leadPtr); while (leadPtr<tailPtr) and (leadPtr^ in aSet) do Inc(leadPtr);
result := leadPtr<tailPtr; result := leadPtr<tailPtr;
end; end;
function FindSet(const aSet: TSoc): boolean; function FindSet(const aSet: TSysCharSet): boolean;
begin begin
while (leadPtr<tailPtr) and (not (leadPtr^ in ASet)) do Inc(leadPtr); while (leadPtr<tailPtr) and (not (leadPtr^ in ASet)) do Inc(leadPtr);
result := leadPtr<tailPtr; result := leadPtr<tailPtr;