mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-22 13:49:17 +02:00
* Patch from Inoussa to decompose canonically (to be able to implement CompareText)
git-svn-id: trunk@31508 -
This commit is contained in:
parent
e8fca1c9c0
commit
f759815d04
@ -382,6 +382,8 @@ const
|
|||||||
|
|
||||||
function NormalizeNFD(const AString : UnicodeString) : UnicodeString;inline;overload;
|
function NormalizeNFD(const AString : UnicodeString) : UnicodeString;inline;overload;
|
||||||
function NormalizeNFD(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;overload;
|
function NormalizeNFD(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;overload;
|
||||||
|
function DecomposeCanonical(const AString : UnicodeString) : UnicodeString;inline;overload;
|
||||||
|
function DecomposeCanonical(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;overload;
|
||||||
procedure CanonicalOrder(var AString : UnicodeString);inline;overload;
|
procedure CanonicalOrder(var AString : UnicodeString);inline;overload;
|
||||||
procedure CanonicalOrder(AStr : PUnicodeChar; const ALength : SizeInt);overload;
|
procedure CanonicalOrder(AStr : PUnicodeChar; const ALength : SizeInt);overload;
|
||||||
|
|
||||||
@ -1423,13 +1425,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//Canonical Decomposition
|
function DecomposeCanonical(const AString : UnicodeString) : UnicodeString;
|
||||||
function NormalizeNFD(const AString : UnicodeString) : UnicodeString;
|
|
||||||
begin
|
begin
|
||||||
Result := NormalizeNFD(@AString[1],Length(AString));
|
Result := DecomposeCanonical(@AString[1],Length(AString));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function NormalizeNFD(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;
|
function DecomposeCanonical(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;
|
||||||
const MAX_EXPAND = 3;
|
const MAX_EXPAND = 3;
|
||||||
var
|
var
|
||||||
i, c, kc, k : SizeInt;
|
i, c, kc, k : SizeInt;
|
||||||
@ -1509,6 +1510,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function NormalizeNFD(const AStr : PUnicodeChar; ALength : SizeInt) : UnicodeString;
|
||||||
|
begin
|
||||||
|
if (ALength < 1) then
|
||||||
|
exit('');
|
||||||
|
Result := DecomposeCanonical(AStr,ALength);
|
||||||
|
CanonicalOrder(@Result[1],Length(Result));
|
||||||
|
end;
|
||||||
|
|
||||||
|
//Canonical Decomposition + _ordering_
|
||||||
|
function NormalizeNFD(const AString : UnicodeString) : UnicodeString;
|
||||||
|
begin
|
||||||
|
Result := NormalizeNFD(@AString[1],Length(AString));
|
||||||
|
end;
|
||||||
|
|
||||||
{ TUCA_PropItemContextTreeNodeRec }
|
{ TUCA_PropItemContextTreeNodeRec }
|
||||||
|
|
||||||
function TUCA_PropItemContextTreeNodeRec.GetLeftNode: PUCA_PropItemContextTreeNodeRec;
|
function TUCA_PropItemContextTreeNodeRec.GetLeftNode: PUCA_PropItemContextTreeNodeRec;
|
||||||
|
Loading…
Reference in New Issue
Block a user