From edad510ad413c909eac9b1c102e72887c3c14d9d Mon Sep 17 00:00:00 2001 From: nickysn Date: Wed, 10 Feb 2021 21:34:22 +0000 Subject: [PATCH] + added TUnicodeStringCollection git-svn-id: branches/unicodekvm@48632 - --- packages/rtl-extra/src/inc/objects.pp | 77 +++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/packages/rtl-extra/src/inc/objects.pp b/packages/rtl-extra/src/inc/objects.pp index 3f0202fe85..e31bc4833e 100644 --- a/packages/rtl-extra/src/inc/objects.pp +++ b/packages/rtl-extra/src/inc/objects.pp @@ -505,6 +505,19 @@ TYPE END; PRawByteStringCollection = ^TRawByteStringCollection; +{---------------------------------------------------------------------------} +{ TUnicodeStringCollection OBJECT - RAW BYTE STRING COLLECTION OBJECT } +{---------------------------------------------------------------------------} +TYPE + TUnicodeStringCollection = OBJECT (TSortedCollection) + FUNCTION GetItem (Var S: TStream): Pointer; Virtual; + FUNCTION Compare (Key1, Key2: Pointer): Sw_Integer; Virtual; + PROCEDURE FreeItem (Item: Pointer); Virtual; + PROCEDURE PutItem (Var S: TStream; Item: Pointer); Virtual; + PROCEDURE AtInsert (Index: Sw_Integer; const Item: UnicodeString); + END; + PUnicodeStringCollection = ^TUnicodeStringCollection; + {---------------------------------------------------------------------------} { TStrCollection OBJECT - STRING COLLECTION OBJECT } {---------------------------------------------------------------------------} @@ -2629,6 +2642,70 @@ BEGIN TCollection.AtInsert(Index, Pointer(Item)); END; +{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++} +{ TUnicodeStringCollection OBJECT METHODS } +{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++} + +{--TRawByteStringCollection-------------------------------------------------} +{ GetItem -> Platforms DOS/DPMI/WIN/OS2 - Checked 22May96 LdB } +{---------------------------------------------------------------------------} +FUNCTION TUnicodeStringCollection.GetItem (Var S: TStream): Pointer; +BEGIN + GetItem := nil; + UnicodeString(GetItem) := S.ReadUnicodeString; { Get new item } +END; + +{--TRawByteStringCollection-------------------------------------------------} +{ Compare -> Platforms DOS/DPMI/WIN/OS2 - Checked 21Aug97 LdB } +{---------------------------------------------------------------------------} +FUNCTION TUnicodeStringCollection.Compare (Key1, Key2: Pointer): Sw_Integer; +VAR I, J: Sw_Integer; P1, P2: UnicodeString; +BEGIN + P1 := UnicodeString(Key1); { String 1 pointer } + P2 := UnicodeString(Key2); { String 2 pointer } + If (Length(P1)P2[I]) Then Compare := 1 Else { String1 > String2 } + If (Length(P1)>Length(P2)) Then Compare := 1 { String1 > String2 } + Else If (Length(P1) String2 } +END; + +{--TRawByteStringCollection-------------------------------------------------} +{ FreeItem -> Platforms DOS/DPMI/WIN/OS2 - Checked 22May96 LdB } +{---------------------------------------------------------------------------} +PROCEDURE TUnicodeStringCollection.FreeItem (Item: Pointer); +BEGIN + UnicodeString(Item):=''; { Dispose item } +END; + +{--TRawByteStringCollection-------------------------------------------------} +{ PutItem -> Platforms DOS/DPMI/WIN/OS2 - Checked 22May96 LdB } +{---------------------------------------------------------------------------} +PROCEDURE TUnicodeStringCollection.PutItem (Var S: TStream; Item: Pointer); +BEGIN + S.WriteUnicodeString(UnicodeString(Item)); { Write string } +END; + +{--TRawByteStringCollection-------------------------------------------------} +{ AtInsert } +{---------------------------------------------------------------------------} +PROCEDURE TUnicodeStringCollection.AtInsert (Index: Sw_Integer; const Item: UnicodeString); +VAR TmpRef: Pointer; +BEGIN + TmpRef:=Nil; + UnicodeString(TmpRef) := Item; + TCollection.AtInsert(Index, Pointer(Item)); +END; + {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++} { TStrCollection OBJECT METHODS } {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}