123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320 |
- {
- $Id$
- This file is part of the Free Component Library (FCL)
- Copyright (c) 1999-2000 by Michael Van Canneyt and Florian Klaempfl
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- { We NEED ansistrings !!}
- {$H+}
- type
- { extra types to compile with FPC }
- TRTLCriticalSection = class(TObject);
- HRSRC = longint;
- THANDLE = longint;
- TComponentName = string;
- IUnKnown = class(TObject);
- TGUID = longint;
- HMODULE = longint;
- TPoint = record
- x,y : integer;
- end;
- TSmallPoint = record
- x,y : smallint;
- end;
- TRect = record
- Left,Right,Top,Bottom : Integer;
- end;
- const
- { Maximum TList size }
- MaxListSize = Maxint div 16;
- { values for TShortCut }
- scShift = $2000;
- scCtrl = $4000;
- scAlt = $8000;
- scNone = 0;
- { TStream seek origins }
- soFromBeginning = 0;
- soFromCurrent = 1;
- soFromEnd = 2;
- { TFileStream create mode }
- fmCreate = $FFFF;
- fmOpenRead = 0;
- fmOpenWrite = 1;
- fmOpenReadWrite = 2;
- { TParser special tokens }
- toEOF = Char(0);
- toSymbol = Char(1);
- toString = Char(2);
- toInteger = Char(3);
- toFloat = Char(4);
- Const
- FilerSignature : Array[1..4] of char = 'TPF0';
- type
- { Text alignment types }
- TAlignment = (taLeftJustify, taRightJustify, taCenter);
- { TLeftRight = taLeftJustify..taRightJustify; }
- { Types used by standard events }
- TShiftState = set of (ssShift, ssAlt, ssCtrl,
- ssLeft, ssRight, ssMiddle, ssDouble,
- // Extra additions
- ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum, ssScroll);
- { THelpContext = -MaxLongint..MaxLongint; }
- { Standard events }
- TNotifyEvent = procedure(Sender: TObject) of object;
- THelpEvent = function (Command: Word; Data: Longint;
- var CallHelp: Boolean): Boolean of object;
- TGetStrProc = procedure(const S: string) of object;
- { Exception classes }
- EStreamError = class(Exception);
- EFCreateError = class(EStreamError);
- EFOpenError = class(EStreamError);
- EFilerError = class(EStreamError);
- EReadError = class(EFilerError);
- EWriteError = class(EFilerError);
- EClassNotFound = class(EFilerError);
- EMethodNotFound = class(EFilerError);
- EInvalidImage = class(EFilerError);
- EResNotFound = class(Exception);
- EListError = class(Exception);
- EBitsError = class(Exception);
- EStringListError = class(Exception);
- EComponentError = class(Exception);
- EParserError = class(Exception);
- EOutOfResources = class(EOutOfMemory);
- EInvalidOperation = class(Exception);
- { Forward class declarations }
- TStream = class;
- TFiler = class;
- TReader = class;
- TWriter = class;
- TComponent = class;
- { TList class }
- PPointerList = ^TPointerList;
- TPointerList = array[0..MaxListSize - 1] of Pointer;
- TListSortCompare = function (Item1, Item2: Pointer): Integer;
- TList = class(TObject)
- private
- FList: PPointerList;
- FCount: Integer;
- FCapacity: Integer;
- protected
- function Get(Index: Integer): Pointer;
- procedure Grow; virtual;
- procedure Put(Index: Integer; Item: Pointer);
- procedure SetCapacity(NewCapacity: Integer);
- procedure SetCount(NewCount: Integer);
- public
- destructor Destroy; override;
- function Add(Item: Pointer): Integer;
- procedure Clear;
- procedure Delete(Index: Integer);
- class procedure Error(const Msg: string; Data: Integer); virtual;
- procedure Exchange(Index1, Index2: Integer);
- function Expand: TList;
- function First: Pointer;
- function IndexOf(Item: Pointer): Integer;
- procedure Insert(Index: Integer; Item: Pointer);
- function Last: Pointer;
- procedure Move(CurIndex, NewIndex: Integer);
- function Remove(Item: Pointer): Integer;
- procedure Pack;
- procedure Sort(Compare: TListSortCompare);
- property Capacity: Integer read FCapacity write SetCapacity;
- property Count: Integer read FCount write SetCount;
- property Items[Index: Integer]: Pointer read Get write Put; default;
- property List: PPointerList read FList;
- end;
- { TThreadList class }
- TThreadList = class
- private
- FList: TList;
- FLock: TRTLCriticalSection;
- public
- constructor Create;
- destructor Destroy; override;
- procedure Add(Item: Pointer);
- procedure Clear;
- function LockList: TList;
- procedure Remove(Item: Pointer);
- procedure UnlockList;
- end;
- const
- BITSHIFT = 5;
- MASK = 31; {for longs that are 32-bit in size}
- MaxBitRec = $FFFF Div (SizeOf(longint));
- MaxBitFlags = MaxBitRec * 32;
- type
- TBitArray = array[0..MaxBitRec - 1] of longint;
- TBits = class(TObject)
- private
- { Private declarations }
- FBits : ^TBitArray;
- FSize : longint; { total longints currently allocated }
- findIndex : longint;
- findState : boolean;
- { functions and properties to match TBits class }
- procedure SetBit(bit : longint; value : Boolean);
- function getSize : longint;
- procedure setSize(value : longint);
- public
- { Public declarations }
- constructor Create(theSize : longint); virtual;
- destructor Destroy; override;
- function getFSize : longint;
- procedure seton(bit : longint);
- procedure clear(bit : longint);
- procedure clearall;
- procedure andbits(bitset : TBits);
- procedure orbits(bitset : TBits);
- procedure xorbits(bitset : TBits);
- procedure notbits(bitset : TBits);
- function get(bit : longint) : boolean;
- procedure grow(nbit : longint);
- function equals(bitset : TBits) : Boolean;
- procedure SetIndex(index : longint);
- function FindFirstBit(state : boolean) : longint;
- function FindNextBit : longint;
- function FindPrevBit : longint;
- { functions and properties to match TBits class }
- function OpenBit: longint;
- property Bits[bit: longint]: Boolean read get write SetBit; default;
- property Size: longint read getSize write setSize;
- end;
- { TPersistent abstract class }
- {$M+}
- TPersistent = class(TObject)
- private
- procedure AssignError(Source: TPersistent);
- protected
- procedure AssignTo(Dest: TPersistent); virtual;
- procedure DefineProperties(Filer: TFiler); virtual;
- function GetOwner: TPersistent; dynamic;
- public
- destructor Destroy; override;
- procedure Assign(Source: TPersistent); virtual;
- function GetNamePath: string; virtual; {dynamic;}
- end;
- {$M-}
- { TPersistent class reference type }
- TPersistentClass = class of TPersistent;
- { TCollection class }
- TCollection = class;
- TCollectionItem = class(TPersistent)
- private
- FCollection: TCollection;
- FID: Integer;
- function GetIndex: Integer;
- procedure SetCollection(Value: TCollection);
- protected
- procedure Changed(AllItems: Boolean);
- function GetNamePath: string; override;
- function GetOwner: TPersistent; override;
- function GetDisplayName: string; virtual;
- procedure SetIndex(Value: Integer); virtual;
- procedure SetDisplayName(const Value: string); virtual;
- public
- constructor Create(ACollection: TCollection); virtual;
- destructor Destroy; override;
- property Collection: TCollection read FCollection write SetCollection;
- property ID: Integer read FID;
- property Index: Integer read GetIndex write SetIndex;
- property DisplayName: string read GetDisplayName write SetDisplayName;
- end;
- TCollectionItemClass = class of TCollectionItem;
- TCollection = class(TPersistent)
- private
- FItemClass: TCollectionItemClass;
- FItems: TList;
- FUpdateCount: Integer;
- FNextID: Integer;
- FPropName: string;
- function GetCount: Integer;
- function GetPropName: string;
- procedure InsertItem(Item: TCollectionItem);
- procedure RemoveItem(Item: TCollectionItem);
- protected
- { Design-time editor support }
- function GetAttrCount: Integer; dynamic;
- function GetAttr(Index: Integer): string; dynamic;
- function GetItemAttr(Index, ItemIndex: Integer): string; dynamic;
- function GetNamePath: string; override;
- procedure Changed;
- function GetItem(Index: Integer): TCollectionItem;
- procedure SetItem(Index: Integer; Value: TCollectionItem);
- procedure SetItemName(Item: TCollectionItem); virtual;
- procedure SetPropName; virtual;
- procedure Update(Item: TCollectionItem); virtual;
- property PropName: string read GetPropName write FPropName;
- public
- constructor Create(AItemClass: TCollectionItemClass);
- destructor Destroy; override;
- function Add: TCollectionItem;
- procedure Assign(Source: TPersistent); override;
- procedure BeginUpdate;
- procedure Clear;
- procedure EndUpdate;
- function FindItemID(ID: Integer): TCollectionItem;
- property Count: Integer read GetCount;
- property ItemClass: TCollectionItemClass read FItemClass;
- property Items[Index: Integer]: TCollectionItem read GetItem write SetItem;
- end;
- TStrings = class;
- { IStringsAdapter interface }
- { Maintains link between TStrings and IStrings implementations }
- { !!!! Interfaces aren't supported by FPC
- IStringsAdapter = interface
- procedure ReferenceStrings(S: TStrings);
- procedure ReleaseStrings;
- end;
- }
- IStringsAdapter = class(TObject);
- { TStrings class }
- TStrings = class(TPersistent)
- private
- FUpdateCount: Integer;
- FAdapter: IStringsAdapter;
- function GetCommaText: string;
- function GetName(Index: Integer): string;
- function GetValue(const Name: string): string;
- procedure ReadData(Reader: TReader);
- procedure SetCommaText(const Value: string);
- procedure SetStringsAdapter(const Value: IStringsAdapter);
- procedure SetValue(const Name, Value: string);
- procedure WriteData(Writer: TWriter);
- protected
- procedure DefineProperties(Filer: TFiler); override;
- procedure Error(const Msg: string; Data: Integer);
- function Get(Index: Integer): string; virtual; abstract;
- function GetCapacity: Integer; virtual;
- function GetCount: Integer; virtual; abstract;
- function GetObject(Index: Integer): TObject; virtual;
- function GetTextStr: string; virtual;
- procedure Put(Index: Integer; const S: string); virtual;
- procedure PutObject(Index: Integer; AObject: TObject); virtual;
- procedure SetCapacity(NewCapacity: Integer); virtual;
- procedure SetTextStr(const Value: string); virtual;
- procedure SetUpdateState(Updating: Boolean); virtual;
- public
- destructor Destroy; override;
- function Add(const S: string): Integer; virtual;
- function AddObject(const S: string; AObject: TObject): Integer; virtual;
- procedure Append(const S: string);
- procedure AddStrings(TheStrings: TStrings); virtual;
- procedure Assign(Source: TPersistent); override;
- procedure BeginUpdate;
- procedure Clear; virtual; abstract;
- procedure Delete(Index: Integer); virtual; abstract;
- procedure EndUpdate;
- function Equals(TheStrings: TStrings): Boolean;
- procedure Exchange(Index1, Index2: Integer); virtual;
- function GetText: PChar; virtual;
- function IndexOf(const S: string): Integer; virtual;
- function IndexOfName(const Name: string): Integer;
- function IndexOfObject(AObject: TObject): Integer;
- procedure Insert(Index: Integer; const S: string); virtual; abstract;
- procedure InsertObject(Index: Integer; const S: string;
- AObject: TObject);
- procedure LoadFromFile(const FileName: string); virtual;
- procedure LoadFromStream(Stream: TStream); virtual;
- procedure Move(CurIndex, NewIndex: Integer); virtual;
- procedure SaveToFile(const FileName: string); virtual;
- procedure SaveToStream(Stream: TStream); virtual;
- procedure SetText(TheText: PChar); virtual;
- property Capacity: Integer read GetCapacity write SetCapacity;
- property CommaText: string read GetCommaText write SetCommaText;
- property Count: Integer read GetCount;
- property Names[Index: Integer]: string read GetName;
- property Objects[Index: Integer]: TObject read GetObject write PutObject;
- property Values[const Name: string]: string read GetValue write SetValue;
- property Strings[Index: Integer]: string read Get write Put; default;
- property Text: string read GetTextStr write SetTextStr;
- property StringsAdapter: IStringsAdapter read FAdapter write SetStringsAdapter;
- end;
- { TStringList class }
- TDuplicates = (dupIgnore, dupAccept, dupError);
- PStringItem = ^TStringItem;
- TStringItem = record
- FString: string;
- FObject: TObject;
- end;
- PStringItemList = ^TStringItemList;
- TStringItemList = array[0..MaxListSize] of TStringItem;
- TStringList = class(TStrings)
- private
- FList: PStringItemList;
- FCount: Integer;
- FCapacity: Integer;
- FSorted: Boolean;
- FDuplicates: TDuplicates;
- FOnChange: TNotifyEvent;
- FOnChanging: TNotifyEvent;
- procedure ExchangeItems(Index1, Index2: Integer);
- procedure Grow;
- procedure QuickSort(L, R: Integer);
- procedure InsertItem(Index: Integer; const S: string);
- procedure SetSorted(Value: Boolean);
- protected
- procedure Changed; virtual;
- procedure Changing; virtual;
- function Get(Index: Integer): string; override;
- function GetCapacity: Integer; override;
- function GetCount: Integer; override;
- function GetObject(Index: Integer): TObject; override;
- procedure Put(Index: Integer; const S: string); override;
- procedure PutObject(Index: Integer; AObject: TObject); override;
- procedure SetCapacity(NewCapacity: Integer); override;
- procedure SetUpdateState(Updating: Boolean); override;
- public
- destructor Destroy; override;
- function Add(const S: string): Integer; override;
- procedure Clear; override;
- procedure Delete(Index: Integer); override;
- procedure Exchange(Index1, Index2: Integer); override;
- function Find(const S: string; var Index: Integer): Boolean; virtual;
- function IndexOf(const S: string): Integer; override;
- procedure Insert(Index: Integer; const S: string); override;
- procedure Sort; virtual;
- property Duplicates: TDuplicates read FDuplicates write FDuplicates;
- property Sorted: Boolean read FSorted write SetSorted;
- property OnChange: TNotifyEvent read FOnChange write FOnChange;
- property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
- end;
- { TStream abstract class }
- TStream = class(TObject)
- private
- function GetPosition: Longint;
- procedure SetPosition(Pos: Longint);
- function GetSize: Longint;
- protected
- procedure SetSize(NewSize: Longint); virtual;
- public
- function Read(var Buffer; Count: Longint): Longint; virtual; abstract;
- function Write(const Buffer; Count: Longint): Longint; virtual; abstract;
- function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract;
- procedure ReadBuffer(var Buffer; Count: Longint);
- procedure WriteBuffer(const Buffer; Count: Longint);
- function CopyFrom(Source: TStream; Count: Longint): Longint;
- function ReadComponent(Instance: TComponent): TComponent;
- function ReadComponentRes(Instance: TComponent): TComponent;
- procedure WriteComponent(Instance: TComponent);
- procedure WriteComponentRes(const ResName: string; Instance: TComponent);
- procedure WriteDescendent(Instance, Ancestor: TComponent);
- procedure WriteDescendentRes(const ResName: string; Instance, Ancestor: TComponent);
- procedure WriteResourceHeader(const ResName: string; {!!!:out} var FixupInfo: Integer);
- procedure FixupResourceHeader(FixupInfo: Integer);
- procedure ReadResHeader;
- function ReadByte : Byte;
- function ReadWord : Word;
- function ReadDWord : Cardinal;
- function ReadAnsiString : String;
- procedure WriteByte(b : Byte);
- procedure WriteWord(w : Word);
- procedure WriteDWord(d : Cardinal);
- Procedure WriteAnsiString (S : String);
- property Position: Longint read GetPosition write SetPosition;
- property Size: Longint read GetSize write SetSize;
- end;
- { THandleStream class }
- THandleStream = class(TStream)
- private
- FHandle: Integer;
- public
- constructor Create(AHandle: Integer);
- function Read(var Buffer; Count: Longint): Longint; override;
- function Write(const Buffer; Count: Longint): Longint; override;
- property Handle: Integer read FHandle;
- end;
- { TFileStream class }
- TFileStream = class(THandleStream)
- Private
- FFileName : String;
- protected
- procedure SetSize(NewSize: Longint); override;
- public
- constructor Create(const AFileName: string; Mode: Word);
- destructor Destroy; override;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
- property FileName : String Read FFilename;
- end;
- { TCustomMemoryStream abstract class }
- TCustomMemoryStream = class(TStream)
- private
- FMemory: Pointer;
- FSize, FPosition: Longint;
- protected
- procedure SetPointer(Ptr: Pointer; ASize: Longint);
- public
- function Read(var Buffer; Count: Longint): Longint; override;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
- procedure SaveToStream(Stream: TStream);
- procedure SaveToFile(const FileName: string);
- property Memory: Pointer read FMemory;
- end;
- { TMemoryStream }
- TMemoryStream = class(TCustomMemoryStream)
- private
- FCapacity: Longint;
- procedure SetCapacity(NewCapacity: Longint);
- protected
- function Realloc(var NewCapacity: Longint): Pointer; virtual;
- property Capacity: Longint read FCapacity write SetCapacity;
- public
- destructor Destroy; override;
- procedure Clear;
- procedure LoadFromStream(Stream: TStream);
- procedure LoadFromFile(const FileName: string);
- procedure SetSize(NewSize: Longint); override;
- function Write(const Buffer; Count: Longint): Longint; override;
- end;
- { TStringStream }
- TStringStream = class(TStream)
- private
- FDataString: string;
- FPosition: Integer;
- protected
- procedure SetSize(NewSize: Longint); override;
- public
- constructor Create(const AString: string);
- function Read(var Buffer; Count: Longint): Longint; override;
- function ReadString(Count: Longint): string;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
- function Write(const Buffer; Count: Longint): Longint; override;
- procedure WriteString(const AString: string);
- property DataString: string read FDataString;
- end;
- { TResourceStream }
- TResourceStream = class(TCustomMemoryStream)
- private
- HResInfo: HRSRC;
- HGlobal: THandle;
- procedure Initialize(Instance: THandle; Name, ResType: PChar);
- public
- constructor Create(Instance: THandle; const ResName: string; ResType: PChar);
- constructor CreateFromID(Instance: THandle; ResID: Integer; ResType: PChar);
- destructor Destroy; override;
- function Write(const Buffer; Count: Longint): Longint; override;
- end;
- { TStreamAdapter }
- { Implements OLE IStream on VCL TStream }
- { we don't need that yet
- TStreamAdapter = class(TInterfacedObject, IStream)
- private
- FStream: TStream;
- public
- constructor Create(Stream: TStream);
- function Read(pv: Pointer; cb: Longint;
- pcbRead: PLongint): HResult; stdcall;
- function Write(pv: Pointer; cb: Longint;
- pcbWritten: PLongint): HResult; stdcall;
- function Seek(dlibMove: Largeint; dwOrigin: Longint;
- out libNewPosition: Largeint): HResult; stdcall;
- function SetSize(libNewSize: Largeint): HResult; stdcall;
- function CopyTo(stm: IStream; cb: Largeint; out cbRead: Largeint;
- out cbWritten: Largeint): HResult; stdcall;
- function Commit(grfCommitFlags: Longint): HResult; stdcall;
- function Revert: HResult; stdcall;
- function LockRegion(libOffset: Largeint; cb: Largeint;
- dwLockType: Longint): HResult; stdcall;
- function UnlockRegion(libOffset: Largeint; cb: Largeint;
- dwLockType: Longint): HResult; stdcall;
- function Stat(out statstg: TStatStg;
- grfStatFlag: Longint): HResult; stdcall;
- function Clone(out stm: IStream): HResult; stdcall;
- end;
- }
- { TFiler }
- TValueType = (vaNull, vaList, vaInt8, vaInt16, vaInt32, vaExtended,
- vaString, vaIdent, vaFalse, vaTrue, vaBinary, vaSet, vaLString,
- vaNil, vaCollection, vaSingle, vaCurrency, vaDate, vaWString, vaInt64);
- TFilerFlag = (ffInherited, ffChildPos, ffInline);
- TFilerFlags = set of TFilerFlag;
- TReaderProc = procedure(Reader: TReader) of object;
- TWriterProc = procedure(Writer: TWriter) of object;
- TStreamProc = procedure(Stream: TStream) of object;
- TFiler = class(TObject)
- private
- FRoot: TComponent;
- FLookupRoot: TComponent;
- FAncestor: TPersistent;
- FIgnoreChildren: Boolean;
- protected
- procedure SetRoot(ARoot: TComponent); virtual;
- public
- procedure DefineProperty(const Name: string;
- ReadData: TReaderProc; WriteData: TWriterProc;
- HasData: Boolean); virtual; abstract;
- procedure DefineBinaryProperty(const Name: string;
- ReadData, WriteData: TStreamProc;
- HasData: Boolean); virtual; abstract;
- property Root: TComponent read FRoot write SetRoot;
- property LookupRoot: TComponent read FLookupRoot;
- property Ancestor: TPersistent read FAncestor write FAncestor;
- property IgnoreChildren: Boolean read FIgnoreChildren write FIgnoreChildren;
- end;
- { TComponent class reference type }
- TComponentClass = class of TComponent;
- { TReader }
- TAbstractObjectReader = class
- public
- function NextValue: TValueType; virtual; abstract;
- function ReadValue: TValueType; virtual; abstract;
- procedure BeginRootComponent; virtual; abstract;
- procedure BeginComponent(var Flags: TFilerFlags; var AChildPos: Integer;
- var CompClassName, CompName: String); virtual; abstract;
- function BeginProperty: String; virtual; abstract;
- { All ReadXXX methods are called _after_ the value type has been read! }
- procedure ReadBinary(const DestData: TMemoryStream); virtual; abstract;
- function ReadFloat: Extended; virtual; abstract;
- function ReadSingle: Single; virtual; abstract;
- {!!!: function ReadCurrency: Currency; virtual; abstract;}
- function ReadDate: TDateTime; virtual; abstract;
- function ReadIdent(ValueType: TValueType): String; virtual; abstract;
- function ReadInt8: ShortInt; virtual; abstract;
- function ReadInt16: SmallInt; virtual; abstract;
- function ReadInt32: LongInt; virtual; abstract;
- function ReadInt64: Int64; virtual; abstract;
- function ReadSet(EnumType: Pointer): Integer; virtual; abstract;
- function ReadStr: String; virtual; abstract;
- function ReadString(StringType: TValueType): String; virtual; abstract;
- procedure SkipComponent(SkipComponentInfos: Boolean); virtual; abstract;
- procedure SkipValue; virtual; abstract;
- end;
- TBinaryObjectReader = class(TAbstractObjectReader)
- private
- FStream: TStream;
- FBuffer: Pointer;
- FBufSize: Integer;
- FBufPos: Integer;
- FBufEnd: Integer;
- procedure Read(var Buf; Count: LongInt);
- procedure SkipProperty;
- procedure SkipSetBody;
- public
- constructor Create(Stream: TStream; BufSize: Integer);
- destructor Destroy; override;
- function NextValue: TValueType; override;
- function ReadValue: TValueType; override;
- procedure BeginRootComponent; override;
- procedure BeginComponent(var Flags: TFilerFlags; var AChildPos: Integer;
- var CompClassName, CompName: String); override;
- function BeginProperty: String; override;
- procedure ReadBinary(const DestData: TMemoryStream); override;
- function ReadFloat: Extended; override;
- function ReadSingle: Single; override;
- {!!!: function ReadCurrency: Currency; override;}
- function ReadDate: TDateTime; override;
- function ReadIdent(ValueType: TValueType): String; override;
- function ReadInt8: ShortInt; override;
- function ReadInt16: SmallInt; override;
- function ReadInt32: LongInt; override;
- function ReadInt64: Int64; override;
- function ReadSet(EnumType: Pointer): Integer; override;
- function ReadStr: String; override;
- function ReadString(StringType: TValueType): String; override;
- procedure SkipComponent(SkipComponentInfos: Boolean); override;
- procedure SkipValue; override;
- end;
- TFindMethodEvent = procedure(Reader: TReader; const MethodName: string;
- var Address: Pointer; var Error: Boolean) of object;
- TSetNameEvent = procedure(Reader: TReader; Component: TComponent;
- var Name: string) of object;
- TReferenceNameEvent = procedure(Reader: TReader; var Name: string) of object;
- TAncestorNotFoundEvent = procedure(Reader: TReader; const ComponentName: string;
- ComponentClass: TPersistentClass; var Component: TComponent) of object;
- TReadComponentsProc = procedure(Component: TComponent) of object;
- TReaderError = procedure(Reader: TReader; const Message: string; var Handled: Boolean) of object;
- TFindComponentClassEvent = procedure(Reader: TReader; const ClassName: string;
- var ComponentClass: TComponentClass) of object;
- TCreateComponentEvent = procedure(Reader: TReader;
- ComponentClass: TComponentClass; var Component: TComponent) of object;
- TReader = class(TFiler)
- private
- FDriver: TAbstractObjectReader;
- FOwner: TComponent;
- FParent: TComponent;
- FFixups: TList;
- FLoaded: TList;
- FOnFindMethod: TFindMethodEvent;
- FOnSetName: TSetNameEvent;
- FOnReferenceName: TReferenceNameEvent;
- FOnAncestorNotFound: TAncestorNotFoundEvent;
- FOnError: TReaderError;
- FOnFindComponentClass: TFindComponentClassEvent;
- FOnCreateComponent: TCreateComponentEvent;
- FPropName: string;
- FCanHandleExcepts: Boolean;
- procedure DoFixupReferences;
- procedure FreeFixups;
- function FindComponentClass(const AClassName: string): TComponentClass;
- protected
- function Error(const Message: string): Boolean; virtual;
- function FindMethod(ARoot: TComponent; const AMethodName: string): Pointer; virtual;
- procedure ReadProperty(AInstance: TPersistent);
- procedure ReadPropValue(Instance: TPersistent; PropInfo: Pointer);
- procedure PropertyError;
- procedure ReadData(Instance: TComponent);
- property PropName: string read FPropName;
- property CanHandleExceptions: Boolean read FCanHandleExcepts;
- public
- constructor Create(Stream: TStream; BufSize: Integer);
- destructor Destroy; override;
- procedure BeginReferences;
- procedure CheckValue(Value: TValueType);
- procedure DefineProperty(const Name: string;
- AReadData: TReaderProc; WriteData: TWriterProc;
- HasData: Boolean); override;
- procedure DefineBinaryProperty(const Name: string;
- AReadData, WriteData: TStreamProc;
- HasData: Boolean); override;
- function EndOfList: Boolean;
- procedure EndReferences;
- procedure FixupReferences;
- function NextValue: TValueType;
- function ReadBoolean: Boolean;
- function ReadChar: Char;
- procedure ReadCollection(Collection: TCollection);
- function ReadComponent(Component: TComponent): TComponent;
- procedure ReadComponents(AOwner, AParent: TComponent;
- Proc: TReadComponentsProc);
- function ReadFloat: Extended;
- function ReadSingle: Single;
- {!!!: function ReadCurrency: Currency;}
- function ReadDate: TDateTime;
- function ReadIdent: string;
- function ReadInteger: Longint;
- function ReadInt64: Int64;
- procedure ReadListBegin;
- procedure ReadListEnd;
- function ReadRootComponent(ARoot: TComponent): TComponent;
- function ReadString: string;
- {!!!: function ReadWideString: WideString;}
- function ReadValue: TValueType;
- procedure CopyValue(Writer: TWriter);
- property Owner: TComponent read FOwner write FOwner;
- property Parent: TComponent read FParent write FParent;
- property OnError: TReaderError read FOnError write FOnError;
- property OnFindMethod: TFindMethodEvent read FOnFindMethod write FOnFindMethod;
- property OnSetName: TSetNameEvent read FOnSetName write FOnSetName;
- property OnReferenceName: TReferenceNameEvent read FOnReferenceName write FOnReferenceName;
- property OnAncestorNotFound: TAncestorNotFoundEvent read FOnAncestorNotFound write FOnAncestorNotFound;
- property OnCreateComponent: TCreateComponentEvent read FOnCreateComponent write FOnCreateComponent;
- property OnFindComponentClass: TFindComponentClassEvent read FOnFindComponentClass write FOnFindComponentClass;
- end;
- { TWriter }
- TAbstractObjectWriter = class
- public
- { Begin/End markers. Those ones who don't have an end indicator, use
- "EndList", after the occurrence named in the comment. Note that this
- only counts for "EndList" calls on the same level; each BeginXXX call
- increases the current level. }
- procedure BeginCollection; virtual; abstract; { Ends with the next "EndList" }
- procedure BeginComponent(Component: TComponent; Flags: TFilerFlags;
- ChildPos: Integer); virtual; abstract; { Ends after the second "EndList" }
- procedure BeginList; virtual; abstract;
- procedure EndList; virtual; abstract;
- procedure BeginProperty(const PropName: String); virtual; abstract;
- procedure EndProperty; virtual; abstract;
- procedure WriteBinary(const Buffer; Count: Longint); virtual; abstract;
- procedure WriteBoolean(Value: Boolean); virtual; abstract;
- // procedure WriteChar(Value: Char);
- procedure WriteFloat(const Value: Extended); virtual; abstract;
- procedure WriteSingle(const Value: Single); virtual; abstract;
- {!!!: procedure WriteCurrency(const Value: Currency); virtual; abstract;}
- procedure WriteDate(const Value: TDateTime); virtual; abstract;
- procedure WriteIdent(const Ident: string); virtual; abstract;
- procedure WriteInteger(Value: Int64); virtual; abstract;
- procedure WriteMethodName(const Name: String); virtual; abstract;
- procedure WriteSet(Value: LongInt; SetType: Pointer); virtual; abstract;
- procedure WriteString(const Value: String); virtual; abstract;
- end;
- TBinaryObjectWriter = class(TAbstractObjectWriter)
- private
- FStream: TStream;
- FBuffer: Pointer;
- FBufSize: Integer;
- FBufPos: Integer;
- FBufEnd: Integer;
- FSignatureWritten: Boolean;
- procedure FlushBuffer;
- procedure Write(const Buffer; Count: Longint);
- procedure WriteValue(Value: TValueType);
- procedure WriteStr(const Value: String);
- public
- constructor Create(Stream: TStream; BufSize: Integer);
- destructor Destroy; override;
- procedure BeginCollection; override;
- procedure BeginComponent(Component: TComponent; Flags: TFilerFlags;
- ChildPos: Integer); override;
- procedure BeginList; override;
- procedure EndList; override;
- procedure BeginProperty(const PropName: String); override;
- procedure EndProperty; override;
- procedure WriteBinary(const Buffer; Count: LongInt); override;
- procedure WriteBoolean(Value: Boolean); override;
- procedure WriteFloat(const Value: Extended); override;
- procedure WriteSingle(const Value: Single); override;
- {!!!: procedure WriteCurrency(const Value: Currency); override;}
- procedure WriteDate(const Value: TDateTime); override;
- procedure WriteIdent(const Ident: string); override;
- procedure WriteInteger(Value: Int64); override;
- procedure WriteMethodName(const Name: String); override;
- procedure WriteSet(Value: LongInt; SetType: Pointer); override;
- procedure WriteString(const Value: String); override;
- end;
- TTextObjectWriter = class(TAbstractObjectWriter)
- end;
- TFindAncestorEvent = procedure (Writer: TWriter; Component: TComponent;
- const Name: string; var Ancestor, RootAncestor: TComponent) of object;
- TWriter = class(TFiler)
- private
- FDriver: TAbstractObjectWriter;
- FDestroyDriver: Boolean;
- FRootAncestor: TComponent;
- FPropPath: String;
- FAncestorList: TList;
- FAncestorPos: Integer;
- FChildPos: Integer;
- FOnFindAncestor: TFindAncestorEvent;
- procedure AddToAncestorList(Component: TComponent);
- procedure WriteComponentData(Instance: TComponent);
- protected
- procedure SetRoot(ARoot: TComponent); override;
- procedure WriteBinary(AWriteData: TStreamProc);
- procedure WriteProperty(Instance: TPersistent; PropInfo: Pointer);
- procedure WriteProperties(Instance: TPersistent);
- public
- constructor Create(ADriver: TAbstractObjectWriter);
- constructor Create(Stream: TStream; BufSize: Integer);
- destructor Destroy; override;
- procedure DefineProperty(const Name: string;
- ReadData: TReaderProc; AWriteData: TWriterProc;
- HasData: Boolean); override;
- procedure DefineBinaryProperty(const Name: string;
- ReadData, AWriteData: TStreamProc;
- HasData: Boolean); override;
- procedure WriteBoolean(Value: Boolean);
- procedure WriteCollection(Value: TCollection);
- procedure WriteComponent(Component: TComponent);
- procedure WriteChar(Value: Char);
- procedure WriteDescendent(ARoot: TComponent; AAncestor: TComponent);
- procedure WriteFloat(const Value: Extended);
- procedure WriteSingle(const Value: Single);
- {!!!: procedure WriteCurrency(const Value: Currency);}
- procedure WriteDate(const Value: TDateTime);
- procedure WriteIdent(const Ident: string);
- procedure WriteInteger(Value: Longint); overload;
- procedure WriteInteger(Value: Int64); overload;
- procedure WriteListBegin;
- procedure WriteListEnd;
- procedure WriteRootComponent(ARoot: TComponent);
- procedure WriteString(const Value: string);
- {!!!: procedure WriteWideString(const Value: WideString);}
- property RootAncestor: TComponent read FRootAncestor write FRootAncestor;
- property OnFindAncestor: TFindAncestorEvent read FOnFindAncestor write FOnFindAncestor;
- property Driver: TAbstractObjectWriter read FDriver;
- end;
- { TParser }
- TParser = class(TObject)
- private
- FStream: TStream;
- FOrigin: Longint;
- FBuffer: PChar;
- FBufPtr: PChar;
- FBufEnd: PChar;
- FSourcePtr: PChar;
- FSourceEnd: PChar;
- FTokenPtr: PChar;
- FStringPtr: PChar;
- FSourceLine: Integer;
- FSaveChar: Char;
- FToken: Char;
- procedure ReadBuffer;
- procedure SkipBlanks;
- public
- constructor Create(Stream: TStream);
- destructor Destroy; override;
- procedure CheckToken(T: Char);
- procedure CheckTokenSymbol(const S: string);
- procedure Error(const Ident: string);
- procedure ErrorFmt(const Ident: string; const Args: array of const);
- procedure ErrorStr(const Message: string);
- procedure HexToBinary(Stream: TStream);
- function NextToken: Char;
- function SourcePos: Longint;
- function TokenComponentIdent: String;
- function TokenFloat: Extended;
- function TokenInt: Longint;
- function TokenString: string;
- function TokenSymbolIs(const S: string): Boolean;
- property SourceLine: Integer read FSourceLine;
- property Token: Char read FToken;
- end;
- { TThread }
- EThread = class(Exception);
- TThreadMethod = procedure of object;
- TThreadPriority = (tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest,
- tpTimeCritical);
- TThread = class
- private
- FHandle: THandle;
- FThreadID: THandle;
- FTerminated: Boolean;
- FSuspended: Boolean;
- FFreeOnTerminate: Boolean;
- FFinished: Boolean;
- FReturnValue: Integer;
- FOnTerminate: TNotifyEvent;
- FMethod: TThreadMethod;
- FSynchronizeException: TObject;
- procedure CallOnTerminate;
- function GetPriority: TThreadPriority;
- procedure SetPriority(Value: TThreadPriority);
- procedure SetSuspended(Value: Boolean);
- protected
- procedure DoTerminate; virtual;
- procedure Execute; virtual; abstract;
- procedure Synchronize(Method: TThreadMethod);
- property ReturnValue: Integer read FReturnValue write FReturnValue;
- property Terminated: Boolean read FTerminated;
- public
- {$ifdef linux}
- { Needed for linux }
- FStackPointer : integer;
- FStackSize : integer;
- FCallExitProcess : boolean;
- {$endif}
- constructor Create(CreateSuspended: Boolean);
- destructor Destroy; { override; !!!: Why???}
- procedure Resume;
- procedure Suspend;
- procedure Terminate;
- function WaitFor: Integer;
- property FreeOnTerminate: Boolean read FFreeOnTerminate write FFreeOnTerminate;
- property Handle: THandle read FHandle;
- property Priority: TThreadPriority read GetPriority write SetPriority;
- property Suspended: Boolean read FSuspended write SetSuspended;
- property ThreadID: THandle read FThreadID;
- property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate;
- end;
- { TComponent class }
- TOperation = (opInsert, opRemove);
- TComponentState = set of (csLoading, csReading, csWriting, csDestroying,
- csDesigning, csAncestor, csUpdating, csFixups, csFreeNotification,
- csInline, csDesignInstance);
- TComponentStyle = set of (csInheritable, csCheckPropAvail);
- TGetChildProc = procedure (Child: TComponent) of object;
- {
- TComponentName = type string;
- IVCLComObject = interface
- function GetTypeInfoCount(out Count: Integer): Integer; stdcall;
- function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): Integer; stdcall;
- function GetIDsOfNames(const IID: TGUID; Names: Pointer;
- NameCount, LocaleID: Integer; DispIDs: Pointer): Integer; stdcall;
- function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
- Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): Integer; stdcall;
- function SafeCallException(ExceptObject: TObject;
- ExceptAddr: Pointer): Integer;
- procedure FreeOnRelease;
- end;
- }
- TComponent = class(TPersistent)
- private
- FOwner: TComponent;
- FName: TComponentName;
- FTag: Longint;
- FComponents: TList;
- FFreeNotifies: TList;
- FDesignInfo: Longint;
- FVCLComObject: Pointer;
- FComponentState: TComponentState;
- // function GetComObject: IUnknown;
- function GetComponent(AIndex: Integer): TComponent;
- function GetComponentCount: Integer;
- function GetComponentIndex: Integer;
- procedure Insert(AComponent: TComponent);
- procedure ReadLeft(Reader: TReader);
- procedure ReadTop(Reader: TReader);
- procedure Remove(AComponent: TComponent);
- procedure SetComponentIndex(Value: Integer);
- procedure SetReference(Enable: Boolean);
- procedure WriteLeft(Writer: TWriter);
- procedure WriteTop(Writer: TWriter);
- protected
- FComponentStyle: TComponentStyle;
- procedure ChangeName(const NewName: TComponentName);
- procedure DefineProperties(Filer: TFiler); override;
- procedure GetChildren(Proc: TGetChildProc; Root: TComponent); dynamic;
- function GetChildOwner: TComponent; dynamic;
- function GetChildParent: TComponent; dynamic;
- function GetNamePath: string; override;
- function GetOwner: TPersistent; override;
- procedure Loaded; virtual;
- procedure Notification(AComponent: TComponent;
- Operation: TOperation); virtual;
- procedure ReadState(Reader: TReader); virtual;
- procedure SetAncestor(Value: Boolean);
- procedure SetDesigning(Value: Boolean);
- procedure SetName(const NewName: TComponentName); virtual;
- procedure SetChildOrder(Child: TComponent; Order: Integer); dynamic;
- procedure SetParentComponent(Value: TComponent); dynamic;
- procedure Updating; dynamic;
- procedure Updated; dynamic;
- class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); dynamic;
- procedure ValidateRename(AComponent: TComponent;
- const CurName, NewName: string); virtual;
- procedure ValidateContainer(AComponent: TComponent); dynamic;
- procedure ValidateInsert(AComponent: TComponent); dynamic;
- { IUnknown }
- //!!!!! function QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;
- //!!!! function _AddRef: Integer; stdcall;
- //!!!! function _Release: Integer; stdcall;
- { IDispatch }
- //!!!! function GetTypeInfoCount(out Count: Integer): Integer; stdcall;
- //!!!! function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): Integer; stdcall;
- //!!!! function GetIDsOfNames(const IID: TGUID; Names: Pointer;
- //!!!! NameCount, LocaleID: Integer; DispIDs: Pointer): Integer; stdcall;
- //!!!! function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
- //!!!! Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): Integer; stdcall;
- public
- //!! Moved temporary
- procedure WriteState(Writer: TWriter); virtual;
- constructor Create(AOwner: TComponent); virtual;
- destructor Destroy; override;
- procedure DestroyComponents;
- procedure Destroying;
- function FindComponent(const AName: string): TComponent;
- procedure FreeNotification(AComponent: TComponent);
- procedure FreeOnRelease;
- function GetParentComponent: TComponent; dynamic;
- function HasParent: Boolean; dynamic;
- procedure InsertComponent(AComponent: TComponent);
- procedure RemoveComponent(AComponent: TComponent);
- function SafeCallException(ExceptObject: TObject;
- ExceptAddr: Pointer): Integer; override;
- // property ComObject: IUnknown read GetComObject;
- property Components[Index: Integer]: TComponent read GetComponent;
- property ComponentCount: Integer read GetComponentCount;
- property ComponentIndex: Integer read GetComponentIndex write SetComponentIndex;
- property ComponentState: TComponentState read FComponentState;
- property ComponentStyle: TComponentStyle read FComponentStyle;
- property DesignInfo: Longint read FDesignInfo write FDesignInfo;
- property Owner: TComponent read FOwner;
- property VCLComObject: Pointer read FVCLComObject write FVCLComObject;
- published
- property Name: TComponentName read FName write SetName stored False;
- property Tag: Longint read FTag write FTag default 0;
- end;
- { Component registration handlers }
- TActiveXRegType = (axrComponentOnly, axrIncludeDescendants);
- var
- RegisterComponentsProc: procedure(const Page: string;
- ComponentClasses: array of TComponentClass);
- RegisterNoIconProc: procedure(ComponentClasses: array of TComponentClass);
- {!!!! RegisterNonActiveXProc: procedure(ComponentClasses: array of TComponentClass;
- AxRegType: TActiveXRegType) = nil;
- CurrentGroup: Integer = -1;
- CreateVCLComObjectProc: procedure(Component: TComponent) = nil;}
- { Point and rectangle constructors }
- function Point(AX, AY: Integer): TPoint;
- function SmallPoint(AX, AY: SmallInt): TSmallPoint;
- function Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;
- function Bounds(ALeft, ATop, AWidth, AHeight: Integer): TRect;
- { Class registration routines }
- procedure RegisterClass(AClass: TPersistentClass);
- procedure RegisterClasses(AClasses: array of TPersistentClass);
- procedure RegisterClassAlias(AClass: TPersistentClass; const Alias: string);
- procedure UnRegisterClass(AClass: TPersistentClass);
- procedure UnRegisterClasses(AClasses: array of TPersistentClass);
- procedure UnRegisterModuleClasses(Module: HMODULE);
- function FindClass(const ClassName: string): TPersistentClass;
- function GetClass(const ClassName: string): TPersistentClass;
- { Component registration routines }
- procedure RegisterComponents(const Page: string;
- ComponentClasses: array of TComponentClass);
- procedure RegisterNoIcon(ComponentClasses: array of TComponentClass);
- procedure RegisterNonActiveX(ComponentClasses: array of TComponentClass;
- AxRegType: TActiveXRegType);
- {!!!: var
- GlobalNameSpace: TMultiReadExclusiveWriteSynchronizer;}
- { Object filing routines }
- type
- TIdentMapEntry = record
- Value: Integer;
- Name: String;
- end;
- TIdentToInt = function(const Ident: string; var Int: Longint): Boolean;
- TIntToIdent = function(Int: Longint; var Ident: string): Boolean;
- TFindGlobalComponent = function(const Name: string): TComponent;
- var
- MainThreadID: THandle;
- FindGlobalComponent: TFindGlobalComponent;
- procedure RegisterIntegerConsts(IntegerType: Pointer; IdentToIntFn: TIdentToInt;
- IntToIdentFn: TIntToIdent);
- function IdentToInt(const Ident: string; var Int: Longint; const Map: array of TIdentMapEntry): Boolean;
- function IntToIdent(Int: Longint; var Ident: string; const Map: array of TIdentMapEntry): Boolean;
- function InitInheritedComponent(Instance: TComponent; RootAncestor: TClass): Boolean;
- function InitComponentRes(const ResName: string; Instance: TComponent): Boolean;
- function ReadComponentRes(const ResName: string; Instance: TComponent): TComponent;
- function ReadComponentResEx(HInstance: THandle; const ResName: string): TComponent;
- function ReadComponentResFile(const FileName: string; Instance: TComponent): TComponent;
- procedure WriteComponentResFile(const FileName: string; Instance: TComponent);
- procedure GlobalFixupReferences;
- procedure GetFixupReferenceNames(Root: TComponent; Names: TStrings);
- procedure GetFixupInstanceNames(Root: TComponent;
- const ReferenceRootName: string; Names: TStrings);
- procedure RedirectFixupReferences(Root: TComponent; const OldRootName,
- NewRootName: string);
- procedure RemoveFixupReferences(Root: TComponent; const RootName: string);
- procedure RemoveFixups(Instance: TPersistent);
- function FindNestedComponent(Root: TComponent; const NamePath: string): TComponent;
- procedure BeginGlobalLoading;
- procedure NotifyGlobalLoading;
- procedure EndGlobalLoading;
- function CollectionsEqual(C1, C2: TCollection): Boolean;
- { Object conversion routines }
- procedure ObjectBinaryToText(Input, Output: TStream);
- procedure ObjectTextToBinary(Input, Output: TStream);
- procedure ObjectResourceToText(Input, Output: TStream);
- procedure ObjectTextToResource(Input, Output: TStream);
- { Utility routines }
- function LineStart(Buffer, BufPos: PChar): PChar;
- {
- $Log$
- Revision 1.1 2000-07-13 06:31:30 michael
- + Initial import
- Revision 1.23 2000/07/08 07:26:23 sg
- * Destructor of TThreadList is now virtual; this fixes some memory leak
- problems in FCL.
- Revision 1.22 2000/06/29 16:29:23 sg
- * Implemented streaming. Note: The writer driver interface is stable, but
- the reader interface is not final yet!
- Revision 1.21 2000/01/07 01:24:33 peter
- * updated copyright to 2000
- Revision 1.20 2000/01/06 01:20:32 peter
- * moved out of packages/ back to topdir
- Revision 1.3 2000/01/05 11:05:29 michael
- + Better collection support
- Revision 1.2 2000/01/04 18:07:16 michael
- + Streaming implemented
- Revision 1.1 2000/01/03 19:33:07 peter
- * moved to packages dir
- Revision 1.18 1999/11/30 15:28:38 michael
- + Added FileNAme property for filestreams
- Revision 1.17 1999/10/20 20:24:21 florian
- + sc* constants added as suggested by Shane Miller
- Revision 1.16 1999/09/13 08:35:16 fcl
- * Changed some argument names (Root->ARoot etc.) because the new compiler
- now performs more ambiguity checks (sg)
- Revision 1.15 1999/09/11 22:01:03 fcl
- * Activated component registration callbacks (sg)
- Revision 1.14 1999/08/26 21:11:25 peter
- * ShiftState extended
- Revision 1.13 1999/05/31 12:43:10 peter
- * fixed tthread for linux additions
- Revision 1.12 1999/05/14 17:52:53 peter
- * removed wrong destroy overrides (gave errors with the new compiler)
- Revision 1.11 1999/04/09 12:13:30 michael
- + Changed TBits to TbitsPlus from Michael A. Hess (renamed to Tbits)
- Revision 1.10 1998/10/30 14:52:49 michael
- + Added format in interface
- + Some errors in parser fixed, it uses exceptions now
- + Strings now has no more syntax errors.
- Revision 1.9 1998/10/24 13:45:35 michael
- + Implemented stringlist. Untested, since classes broken.
- Revision 1.8 1998/09/23 07:47:41 michael
- + Some changes by TSE
- Revision 1.7 1998/08/22 10:41:00 michael
- + Some adaptations for changed comment and published handling
- Revision 1.6 1998/06/11 13:46:32 michael
- + Fixed some functions. TFileStream OK.
- Revision 1.5 1998/06/10 21:53:06 michael
- + Implemented Handle/FileStreams
- Revision 1.4 1998/05/27 11:41:43 michael
- Implemented TCollection and TCollectionItem
- Revision 1.3 1998/05/06 12:58:35 michael
- + Added WriteAnsiString method to TStream
- Revision 1.2 1998/05/04 14:30:11 michael
- * Split file according to Class; implemented dummys for all methods, so unit compiles.
- Revision 1.1 1998/05/04 12:16:01 florian
- + Initial revisions after making a new directory structure
- }
|