From e779ae43b4a761116b2f8c602df180cdd5f51c0a Mon Sep 17 00:00:00 2001 From: pierre Date: Mon, 7 Feb 2000 11:45:11 +0000 Subject: [PATCH] + TUnsortedStringCollection CreateFrom/Assign/GetItem/PutItem from Gabor --- ide/text/wutils.pas | 66 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/ide/text/wutils.pas b/ide/text/wutils.pas index 2dd4e3db34..7f6e26a81b 100644 --- a/ide/text/wutils.pas +++ b/ide/text/wutils.pas @@ -34,8 +34,12 @@ type PUnsortedStringCollection = ^TUnsortedStringCollection; TUnsortedStringCollection = object(TCollection) - function At(Index: Integer): PString; - procedure FreeItem(Item: Pointer); virtual; + constructor CreateFrom(ALines: PUnsortedStringCollection); + procedure Assign(ALines: PUnsortedStringCollection); + function At(Index: Integer): PString; + procedure FreeItem(Item: Pointer); virtual; + function GetItem(var S: TStream): Pointer; virtual; + procedure PutItem(var S: TStream; Item: Pointer); virtual; end; PNulStream = ^TNulStream; @@ -89,6 +93,7 @@ function IntToStr(L: longint): string; function StrToInt(const S: string): longint; function GetStr(P: PString): string; function GetPChar(P: PChar): string; +function BoolToStr(B: boolean; const TrueS, FalseS: string): string; function DirOf(const S: string): string; function ExtOf(const S: string): string; @@ -107,6 +112,8 @@ procedure GiveUpTimeSlice; const LastStrToIntResult : integer = 0; DirSep : char = {$ifdef Linux}'/'{$else}'\'{$endif}; +procedure RegisterWUtils; + implementation uses @@ -115,6 +122,16 @@ uses {$endif win32} Strings, Dos; +{$ifndef NOOBJREG} +const + RUnsortedStringCollection: TStreamRec = ( + ObjType: 22500; + VmtLink: Ofs(TypeOf(TUnsortedStringCollection)^); + Load: @TUnsortedStringCollection.Load; + Store: @TUnsortedStringCollection.Store + ); +{$endif} + {$ifdef TPUNIXLF} procedure readln(var t:text;var s:string); var @@ -403,11 +420,34 @@ begin end; +function BoolToStr(B: boolean; const TrueS, FalseS: string): string; +begin + if B then BoolToStr:=TrueS else BoolToStr:=FalseS; +end; + procedure TNoDisposeCollection.FreeItem(Item: Pointer); begin { don't do anything here } end; +constructor TUnsortedStringCollection.CreateFrom(ALines: PUnsortedStringCollection); +begin + if Assigned(ALines)=false then Fail; + inherited Init(ALines^.Count,ALines^.Count div 10); + Assign(ALines); +end; + +procedure TUnsortedStringCollection.Assign(ALines: PUnsortedStringCollection); +procedure AddIt(P: PString); {$ifndef FPC}far;{$endif} +begin + Insert(NewStr(GetStr(P))); +end; +begin + FreeAll; + if Assigned(ALines) then + ALines^.ForEach(@AddIt); +end; + function TUnsortedStringCollection.At(Index: Integer): PString; begin At:=inherited At(Index); @@ -418,6 +458,16 @@ begin if Item<>nil then DisposeStr(Item); end; +function TUnsortedStringCollection.GetItem(var S: TStream): Pointer; +begin + GetItem:=S.ReadStr; +end; + +procedure TUnsortedStringCollection.PutItem(var S: TStream; Item: Pointer); +begin + S.WriteStr(Item); +end; + constructor TNulStream.Init; begin inherited Init; @@ -564,11 +614,21 @@ end; {$endif} {$undef DOS} +procedure RegisterWUtils; +begin +{$ifndef NOOBJREG} + RegisterType(RUnsortedStringCollection); +{$endif} +end; + END. { $Log$ - Revision 1.14 2000-01-20 00:30:32 pierre + Revision 1.15 2000-02-07 11:45:11 pierre + + TUnsortedStringCollection CreateFrom/Assign/GetItem/PutItem from Gabor + + Revision 1.14 2000/01/20 00:30:32 pierre * Result of GetShortPathName is checked Revision 1.13 2000/01/17 12:20:03 pierre