{**************************************************************************************************} { WARNING: JEDI preprocessor generated unit. Do not edit. } {**************************************************************************************************} {**************************************************************************************************} { } { Project JEDI Code Library (JCL) } { } { The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } { you may not use this file except in compliance with the License. You may obtain a copy of the } { License at http://www.mozilla.org/MPL/ } { } { Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } { ANY KIND, either express or implied. See the License for the specific language governing rights } { and limitations under the License. } { } { The Original Code is DCL_intf.pas. } { } { The Initial Developer of the Original Code is Jean-Philippe BEMPEL aka RDM. Portions created by } { Jean-Philippe BEMPEL are Copyright (C) Jean-Philippe BEMPEL (rdm_30 att yahoo dott com) } { All rights reserved. } { } { Contributors: } { Robert Marquardt (marquardt) } { Robert Rossmair (rrossmair) } { Florent Ouchet (outchy) } { } {**************************************************************************************************} { } { The Delphi Container Library } { } {**************************************************************************************************} { } { Last modified: $Date:: 2009-08-10 19:54:31 +0200 (lun., 10 août 2009) $ } { Revision: $Rev:: 2940 $ } { Author: $Author:: outchy $ } { } {**************************************************************************************************} unit JclContainerIntf; {$I jcl.inc} interface uses {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} Classes, JclBase, JclAnsiStrings, JclWideStrings; {$IFDEF BCB6} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} {$ENDIF BCB6} {$IFDEF BCB10} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} {$ENDIF BCB10} {$IFDEF BCB11} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} {$ENDIF BCB11} const DefaultContainerCapacity = 16; type // function pointer types // apply functions Type -> Type TIntfApplyFunction = function(const AInterface: IInterface): IInterface; TAnsiStrApplyFunction = function(const AString: AnsiString): AnsiString; TWideStrApplyFunction = function(const AString: WideString): WideString; {$IFDEF SUPPORTS_UNICODE_STRING} TUnicodeStrApplyFunction = function(const AString: UnicodeString): UnicodeString; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} TStrApplyFunction = TAnsiStrApplyFunction; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} TStrApplyFunction = TWideStrApplyFunction; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} TStrApplyFunction = TUnicodeStrApplyFunction; {$ENDIF CONTAINER_UNICODESTR} TSingleApplyFunction = function(const AValue: Single): Single; TDoubleApplyFunction = function(const AValue: Double): Double; TExtendedApplyFunction = function(const AValue: Extended): Extended; {$IFDEF MATH_SINGLE_PRECISION} TFloatApplyFunction = TSingleApplyFunction; {$ENDIF MATH_SINGLE_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} TFloatApplyFunction = TDoubleApplyFunction; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_EXTENDED_PRECISION} TFloatApplyFunction = TExtendedApplyFunction; {$ENDIF MATH_EXTENDED_PRECISION} TIntegerApplyFunction = function(AValue: Integer): Integer; TCardinalApplyFunction = function(AValue: Cardinal): Cardinal; TInt64ApplyFunction = function(const AValue: Int64): Int64; TPtrApplyFunction = function(APtr: Pointer): Pointer; TApplyFunction = function(AObject: TObject): TObject; {$IFDEF SUPPORTS_GENERICS} TApplyFunction = function(const AItem: T): T; {$ENDIF SUPPORTS_GENERICS} // comparison functions Type -> Type -> Integer TIntfCompare = function(const Obj1, Obj2: IInterface): Integer; TAnsiStrCompare = function(const Obj1, Obj2: AnsiString): Integer; TWideStrCompare = function(const Obj1, Obj2: WideString): Integer; {$IFDEF SUPPORTS_UNICODE_STRING} TUnicodeStrCompare = function(const Obj1, Obj2: UnicodeString): Integer; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} TStrCompare = TAnsiStrCompare; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} TStrCompare = TWideStrCompare; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} TStrCompare = TUnicodeStrCompare; {$ENDIF CONTAINER_UNICODESTR} TSingleCompare = function(const Obj1, Obj2: Single): Integer; TDoubleCompare = function(const Obj1, Obj2: Double): Integer; TExtendedCompare = function(const Obj1, Obj2: Extended): Integer; {$IFDEF MATH_SINGLE_PRECISION} TFloatCompare = TSingleCompare; {$ENDIF MATH_SINGLE_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} TFloatCompare = TDoubleCompare; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_EXTENDED_PRECISION} TFloatCompare = TExtendedCompare; {$ENDIF MATH_EXTENDED_PRECISION} TIntegerCompare = function(Obj1, Obj2: Integer): Integer; TCardinalCompare = function(Obj1, Obj2: Cardinal): Integer; TInt64Compare = function(Obj1, Obj2: Int64): Integer; TPtrCompare = function(Obj1, Obj2: Pointer): Integer; TCompare = function(Obj1, Obj2: TObject): Integer; {$IFDEF SUPPORTS_GENERICS} TCompare = function(const Obj1, Obj2: T): Integer; {$ENDIF SUPPORTS_GENERICS} // comparison for equality functions Type -> Type -> Boolean TIntfEqualityCompare = function(const Obj1, Obj2: IInterface): Boolean; TAnsiStrEqualityCompare = function(const Obj1, Obj2: AnsiString): Boolean; TWideStrEqualityCompare = function(const Obj1, Obj2: WideString): Boolean; {$IFDEF SUPPORTS_UNICODE_STRING} TUnicodeStrEqualityCompare = function(const Obj1, Obj2: UnicodeString): Boolean; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} TStrEqualityCompare = TAnsiStrEqualityCompare; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} TStrEqualityCompare = TWideStrEqualityCompare; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} TStrEqualityCompare = TUnicodeStrEqualityCompare; {$ENDIF CONTAINER_UNICODESTR} TSingleEqualityCompare = function(const Obj1, Obj2: Single): Boolean; TDoubleEqualityCompare = function(const Obj1, Obj2: Double): Boolean; TExtendedEqualityCompare = function(const Obj1, Obj2: Extended): Boolean; {$IFDEF MATH_SINGLE_PRECISION} TFloatEqualityCompare = TSingleEqualityCompare; {$ENDIF MATH_SINGLE_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} TFloatEqualityCompare = TDoubleEqualityCompare; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_EXTENDED_PRECISION} TFloatEqualityCompare = TExtendedEqualityCompare; {$ENDIF MATH_EXTENDED_PRECISION} TIntegerEqualityCompare = function(Obj1, Obj2: Integer): Boolean; TCardinalEqualityCompare = function(Obj1, Obj2: Cardinal): Boolean; TInt64EqualityCompare = function(const Obj1, Obj2: Int64): Boolean; TPtrEqualityCompare = function(Obj1, Obj2: Pointer): Boolean; TEqualityCompare = function(Obj1, Obj2: TObject): Boolean; {$IFDEF SUPPORTS_GENERICS} TEqualityCompare = function(const Obj1, Obj2: T): Boolean; {$ENDIF SUPPORTS_GENERICS} // hash functions Type -> Integer TIntfHashConvert = function(const AInterface: IInterface): Integer; TAnsiStrHashConvert = function(const AString: AnsiString): Integer; TWideStrHashConvert = function(const AString: WideString): Integer; {$IFDEF SUPPORTS_UNICODE_STRING} TUnicodeStrHashConvert = function(const AString: UnicodeString): Integer; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} TStrHashConvert = TAnsiStrHashConvert; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} TStrHashConvert = TWideStrHashConvert; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} TStrHashConvert = TUnicodeStrHashConvert; {$ENDIF CONTAINER_UNICODESTR} TSingleHashConvert = function(const AValue: Single): Integer; TDoubleHashConvert = function(const AValue: Double): Integer; TExtendedHashConvert = function(const AValue: Extended): Integer; {$IFDEF MATH_SINGLE_PRECISION} TFloatHashConvert = TSingleHashConvert; {$ENDIF MATH_SINGLE_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} TFloatHashConvert = TDoubleHashConvert; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_EXTENDED_PRECISION} TFloatHashConvert = TExtendedHashConvert; {$ENDIF MATH_EXTENDED_PRECISION} TIntegerHashConvert = function(AValue: Integer): Integer; TCardinalHashConvert = function(AValue: Cardinal): Integer; TInt64HashConvert = function(const AValue: Int64): Integer; TPtrHashConvert = function(APtr: Pointer): Integer; THashConvert = function(AObject: TObject): Integer; {$IFDEF SUPPORTS_GENERICS} THashConvert = function(const AItem: T): Integer; {$ENDIF SUPPORTS_GENERICS} IJclLockable = interface ['{524AD65E-AE1B-4BC6-91C8-8181F0198BA9}'] procedure ReadLock; procedure ReadUnlock; procedure WriteLock; procedure WriteUnlock; end; IJclAbstractIterator = interface{$IFDEF THREADSAFE}(IJclLockable){$ENDIF THREADSAFE} ['{1064D0B4-D9FC-475D-88BE-520490013B46}'] procedure Assign(const Source: IJclAbstractIterator); procedure AssignTo(const Dest: IJclAbstractIterator); function GetIteratorReference: TObject; end; IJclContainer = interface{$IFDEF THREADSAFE}(IJclLockable){$ENDIF THREADSAFE} ['{C517175A-028E-486A-BF27-5EF7FC3101D9}'] procedure Assign(const Source: IJclContainer); procedure AssignTo(const Dest: IJclContainer); function GetAllowDefaultElements: Boolean; function GetContainerReference: TObject; function GetDuplicates: TDuplicates; function GetReadOnly: Boolean; function GetRemoveSingleElement: Boolean; function GetReturnDefaultElements: Boolean; function GetThreadSafe: Boolean; procedure SetAllowDefaultElements(Value: Boolean); procedure SetDuplicates(Value: TDuplicates); procedure SetReadOnly(Value: Boolean); procedure SetRemoveSingleElement(Value: Boolean); procedure SetReturnDefaultElements(Value: Boolean); procedure SetThreadSafe(Value: Boolean); property AllowDefaultElements: Boolean read GetAllowDefaultElements write SetAllowDefaultElements; property Duplicates: TDuplicates read GetDuplicates write SetDuplicates; property ReadOnly: Boolean read GetReadOnly write SetReadOnly; property RemoveSingleElement: Boolean read GetRemoveSingleElement write SetRemoveSingleElement; property ReturnDefaultElements: Boolean read GetReturnDefaultElements write SetReturnDefaultElements; property ThreadSafe: Boolean read GetThreadSafe write SetThreadSafe; end; IJclStrContainer = interface(IJclContainer) ['{9753E1D7-F093-4D5C-8B32-40403F6F700E}'] function GetCaseSensitive: Boolean; procedure SetCaseSensitive(Value: Boolean); property CaseSensitive: Boolean read GetCaseSensitive write SetCaseSensitive; end; TJclAnsiStrEncoding = (seISO, seUTF8); IJclAnsiStrContainer = interface(IJclStrContainer) ['{F8239357-B96F-46F1-A48E-B5DF25B5F1FA}'] function GetEncoding: TJclAnsiStrEncoding; procedure SetEncoding(Value: TJclAnsiStrEncoding); property Encoding: TJclAnsiStrEncoding read GetEncoding write SetEncoding; end; IJclAnsiStrFlatContainer = interface(IJclAnsiStrContainer) ['{8A45A4D4-6317-4CDF-8314-C3E5CC6899F4}'] procedure LoadFromStrings(Strings: TJclAnsiStrings); procedure SaveToStrings(Strings: TJclAnsiStrings); procedure AppendToStrings(Strings: TJclAnsiStrings); procedure AppendFromStrings(Strings: TJclAnsiStrings); function GetAsStrings: TJclAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); end; TJclWideStrEncoding = (seUTF16); IJclWideStrContainer = interface(IJclStrContainer) ['{875E1AC4-CA22-46BC-8999-048E5B9BF11D}'] function GetEncoding: TJclWideStrEncoding; procedure SetEncoding(Value: TJclWideStrEncoding); property Encoding: TJclWideStrEncoding read GetEncoding write SetEncoding; end; IJclWideStrFlatContainer = interface(IJclWideStrContainer) ['{5B001B93-CA1C-47A8-98B8-451CCB444930}'] procedure LoadFromStrings(Strings: TJclWideStrings); procedure SaveToStrings(Strings: TJclWideStrings); procedure AppendToStrings(Strings: TJclWideStrings); procedure AppendFromStrings(Strings: TJclWideStrings); function GetAsStrings: TJclWideStrings; function GetAsDelimited(const Separator: WideString = WideLineBreak): WideString; procedure AppendDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrContainer = interface(IJclStrContainer) ['{619BA29F-5E05-464D-B472-1C8453DBC707}'] end; IJclUnicodeStrFlatContainer = interface(IJclUnicodeStrContainer) ['{3343D73E-4ADC-458E-8289-A4B83D1479D1}'] procedure LoadFromStrings(Strings: TJclUnicodeStrings); procedure SaveToStrings(Strings: TJclUnicodeStrings); procedure AppendToStrings(Strings: TJclUnicodeStrings); procedure AppendFromStrings(Strings: TJclUnicodeStrings); function GetAsStrings: TJclUnicodeStrings; function GetAsDelimited(const Separator: UnicodeString = WideLineBreak): UnicodeString; procedure AppendDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); procedure LoadDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); end; {$ENDIF SUPPORTS_UNICODE_STRING} IJclSingleContainer = interface(IJclContainer) ['{22BE88BD-87D1-4B4D-9FAB-F1B6D555C6A9}'] function GetPrecision: Single; procedure SetPrecision(const Value: Single); property Precision: Single read GetPrecision write SetPrecision; end; IJclDoubleContainer = interface(IJclContainer) ['{372B9354-DF6D-4CAA-A5A9-C50E1FEE5525}'] function GetPrecision: Double; procedure SetPrecision(const Value: Double); property Precision: Double read GetPrecision write SetPrecision; end; IJclExtendedContainer = interface(IJclContainer) ['{431A6482-FD5C-45A7-BE53-339A3CF75AC9}'] function GetPrecision: Extended; procedure SetPrecision(const Value: Extended); property Precision: Extended read GetPrecision write SetPrecision; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatContainer = IJclExtendedContainer; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatContainer = IJclDoubleContainer; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatContainer = IJclSingleContainer; {$ENDIF MATH_SINGLE_PRECISION} IJclIntfEqualityComparer = interface ['{5CC2DF51-BE56-4D02-A171-31BAAC097632}'] function GetEqualityCompare: TIntfEqualityCompare; procedure SetEqualityCompare(Value: TIntfEqualityCompare); function ItemsEqual(const A, B: IInterface): Boolean; property EqualityCompare: TIntfEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclAnsiStrEqualityComparer = interface ['{E3DB9016-F0D0-4CE0-B156-4C5DCA47FD3B}'] function GetEqualityCompare: TAnsiStrEqualityCompare; procedure SetEqualityCompare(Value: TAnsiStrEqualityCompare); function ItemsEqual(const A, B: AnsiString): Boolean; property EqualityCompare: TAnsiStrEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclWideStrEqualityComparer = interface ['{2E5696C9-8374-4347-9DC9-B3722F47F5FB}'] function GetEqualityCompare: TWideStrEqualityCompare; procedure SetEqualityCompare(Value: TWideStrEqualityCompare); function ItemsEqual(const A, B: WideString): Boolean; property EqualityCompare: TWideStrEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrEqualityComparer = interface ['{EDFCC1C7-79DB-4F58-BD64-5016B44EEAC0}'] function GetEqualityCompare: TUnicodeStrEqualityCompare; procedure SetEqualityCompare(Value: TUnicodeStrEqualityCompare); function ItemsEqual(const A, B: UnicodeString): Boolean; property EqualityCompare: TUnicodeStrEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrEqualityComparer = IJclAnsiStrEqualityComparer; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrEqualityComparer = IJclWideStrEqualityComparer; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrEqualityComparer = IJclUnicodeStrEqualityComparer; {$ENDIF CONTAINER_UNICODESTR} IJclSingleEqualityComparer = interface ['{4835BC5B-1A87-4864-BFE1-778F3BAF26B1}'] function GetEqualityCompare: TSingleEqualityCompare; procedure SetEqualityCompare(Value: TSingleEqualityCompare); function ItemsEqual(const A, B: Single): Boolean; property EqualityCompare: TSingleEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclDoubleEqualityComparer = interface ['{15F0A9F0-D5DC-4978-8CDB-53B6E510262C}'] function GetEqualityCompare: TDoubleEqualityCompare; procedure SetEqualityCompare(Value: TDoubleEqualityCompare); function ItemsEqual(const A, B: Double): Boolean; property EqualityCompare: TDoubleEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclExtendedEqualityComparer = interface ['{149883D5-4138-4570-8C5C-99F186B7E646}'] function GetEqualityCompare: TExtendedEqualityCompare; procedure SetEqualityCompare(Value: TExtendedEqualityCompare); function ItemsEqual(const A, B: Extended): Boolean; property EqualityCompare: TExtendedEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatEqualityComparer = IJclExtendedEqualityComparer; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatEqualityComparer = IJclDoubleEqualityComparer; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatEqualityComparer = IJclSingleEqualityComparer; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerEqualityComparer = interface ['{AABC35E6-A779-4A44-B748-27BFCB34FDFB}'] function GetEqualityCompare: TIntegerEqualityCompare; procedure SetEqualityCompare(Value: TIntegerEqualityCompare); function ItemsEqual(A, B: Integer): Boolean; property EqualityCompare: TIntegerEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclCardinalEqualityComparer = interface ['{B2DECF81-6ECE-4D9F-80E1-C8C884DB407C}'] function GetEqualityCompare: TCardinalEqualityCompare; procedure SetEqualityCompare(Value: TCardinalEqualityCompare); function ItemsEqual(A, B: Cardinal): Boolean; property EqualityCompare: TCardinalEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclInt64EqualityComparer = interface ['{8B2825E2-0C81-42BA-AC0D-104344CE7E56}'] function GetEqualityCompare: TInt64EqualityCompare; procedure SetEqualityCompare(Value: TInt64EqualityCompare); function ItemsEqual(const A, B: Int64): Boolean; property EqualityCompare: TInt64EqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclPtrEqualityComparer = interface ['{C6B7CBF9-ECD9-4D70-85CC-4E2367A1D806}'] function GetEqualityCompare: TPtrEqualityCompare; procedure SetEqualityCompare(Value: TPtrEqualityCompare); function ItemsEqual(A, B: Pointer): Boolean; property EqualityCompare: TPtrEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; IJclEqualityComparer = interface ['{82C67986-8365-44AB-8D56-7B0CF4F6B918}'] function GetEqualityCompare: TEqualityCompare; procedure SetEqualityCompare(Value: TEqualityCompare); function ItemsEqual(A, B: TObject): Boolean; property EqualityCompare: TEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; {$IFDEF SUPPORTS_GENERICS} IJclEqualityComparer = interface ['{4AF79AD6-D9F4-424B-BEAA-68857F9222B4}'] function GetEqualityCompare: TEqualityCompare; procedure SetEqualityCompare(Value: TEqualityCompare); function ItemsEqual(const A, B: T): Boolean; property EqualityCompare: TEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfComparer = interface ['{EB41B843-184B-420D-B5DA-27D055B4CD55}'] function GetCompare: TIntfCompare; procedure SetCompare(Value: TIntfCompare); function ItemsCompare(const A, B: IInterface): Integer; property Compare: TIntfCompare read GetCompare write SetCompare; end; IJclAnsiStrComparer = interface ['{09063CBB-9226-4734-B2A0-A178C2343176}'] function GetCompare: TAnsiStrCompare; procedure SetCompare(Value: TAnsiStrCompare); function ItemsCompare(const A, B: AnsiString): Integer; property Compare: TAnsiStrCompare read GetCompare write SetCompare; end; IJclWideStrComparer = interface ['{7A24AEDA-25B1-4E73-B2E9-5D74011E4C9C}'] function GetCompare: TWideStrCompare; procedure SetCompare(Value: TWideStrCompare); function ItemsCompare(const A, B: WideString): Integer; property Compare: TWideStrCompare read GetCompare write SetCompare; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrComparer = interface ['{E81E2705-0CA0-4DBD-BECC-5F9AA623A6E4}'] function GetCompare: TUnicodeStrCompare; procedure SetCompare(Value: TUnicodeStrCompare); function ItemsCompare(const A, B: UnicodeString): Integer; property Compare: TUnicodeStrCompare read GetCompare write SetCompare; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrComparer = IJclAnsiStrComparer; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrComparer = IJclWideStrComparer; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrComparer = IJclUnicodeStrComparer; {$ENDIF CONTAINER_UNICODESTR} IJclSingleComparer = interface ['{008225CE-075E-4450-B9DE-9863CB6D347C}'] function GetCompare: TSingleCompare; procedure SetCompare(Value: TSingleCompare); function ItemsCompare(const A, B: Single): Integer; property Compare: TSingleCompare read GetCompare write SetCompare; end; IJclDoubleComparer = interface ['{BC245D7F-7EB9-43D0-81B4-EE215486A5AA}'] function GetCompare: TDoubleCompare; procedure SetCompare(Value: TDoubleCompare); function ItemsCompare(const A, B: Double): Integer; property Compare: TDoubleCompare read GetCompare write SetCompare; end; IJclExtendedComparer = interface ['{92657C66-C18D-4BF8-A538-A3B0140320BB}'] function GetCompare: TExtendedCompare; procedure SetCompare(Value: TExtendedCompare); function ItemsCompare(const A, B: Extended): Integer; property Compare: TExtendedCompare read GetCompare write SetCompare; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatComparer = IJclExtendedComparer; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatComparer = IJclDoubleComparer; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatComparer = IJclSingleComparer; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerComparer = interface ['{362C3A6A-CBC1-4D5F-8652-158913DC9865}'] function GetCompare: TIntegerCompare; procedure SetCompare(Value: TIntegerCompare); function ItemsCompare(A, B: Integer): Integer; property Compare: TIntegerCompare read GetCompare write SetCompare; end; IJclCardinalComparer = interface ['{56E44725-00B9-4530-8CC2-72DCA9171EE0}'] function GetCompare: TCardinalCompare; procedure SetCompare(Value: TCardinalCompare); function ItemsCompare(A, B: Cardinal): Integer; property Compare: TCardinalCompare read GetCompare write SetCompare; end; IJclInt64Comparer = interface ['{87C935BF-3A42-4F1F-A474-9C823939EE1C}'] function GetCompare: TInt64Compare; procedure SetCompare(Value: TInt64Compare); function ItemsCompare(const A, B: Int64): Integer; property Compare: TInt64Compare read GetCompare write SetCompare; end; IJclPtrComparer = interface ['{85557D4C-A036-477E-BA73-B5EEF43A8696}'] function GetCompare: TPtrCompare; procedure SetCompare(Value: TPtrCompare); function ItemsCompare(A, B: Pointer): Integer; property Compare: TPtrCompare read GetCompare write SetCompare; end; IJclComparer = interface ['{7B376028-56DC-4C4A-86A9-1AC19E3EDF75}'] function GetCompare: TCompare; procedure SetCompare(Value: TCompare); function ItemsCompare(A, B: TObject): Integer; property Compare: TCompare read GetCompare write SetCompare; end; {$IFDEF SUPPORTS_GENERICS} IJclComparer = interface ['{830AFC8C-AA06-46F5-AABD-8EB46B2A9986}'] function GetCompare: TCompare; procedure SetCompare(Value: TCompare); function ItemsCompare(const A, B: T): Integer; property Compare: TCompare read GetCompare write SetCompare; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfHashConverter = interface ['{7BAA0791-3B45-4D0F-9CD8-D13B81694786}'] function GetHashConvert: TIntfHashConvert; procedure SetHashConvert(Value: TIntfHashConvert); function Hash(const AInterface: IInterface): Integer; property HashConvert: TIntfHashConvert read GetHashConvert write SetHashConvert; end; IJclAnsiStrHashConverter = interface ['{9841014E-8A31-4C79-8AD5-EB03C4E85533}'] function GetHashConvert: TAnsiStrHashConvert; procedure SetHashConvert(Value: TAnsiStrHashConvert); function Hash(const AString: AnsiString): Integer; property HashConvert: TAnsiStrHashConvert read GetHashConvert write SetHashConvert; end; IJclWideStrHashConverter = interface ['{2584118F-19AE-443E-939B-0DB18BCD0117}'] function GetHashConvert: TWideStrHashConvert; procedure SetHashConvert(Value: TWideStrHashConvert); function Hash(const AString: WideString): Integer; property HashConvert: TWideStrHashConvert read GetHashConvert write SetHashConvert; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrHashConverter = interface ['{08CD8171-DBAF-405F-9802-46D955C8BBE6}'] function GetHashConvert: TUnicodeStrHashConvert; procedure SetHashConvert(Value: TUnicodeStrHashConvert); function Hash(const AString: UnicodeString): Integer; property HashConvert: TUnicodeStrHashConvert read GetHashConvert write SetHashConvert; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrHashConverter = IJclAnsiStrHashConverter; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrHashConverter = IJclWideStrHashConverter; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrHashConverter = IJclUnicodeStrHashConverter; {$ENDIF CONTAINER_UNICODESTR} IJclSingleHashConverter = interface ['{20F0E481-F1D2-48B6-A95D-FBB56AF119F5}'] function GetHashConvert: TSingleHashConvert; procedure SetHashConvert(Value: TSingleHashConvert); function Hash(const AValue: Single): Integer; property HashConvert: TSingleHashConvert read GetHashConvert write SetHashConvert; end; IJclDoubleHashConverter = interface ['{193A2881-535B-4AF4-B0C3-6845A2800F80}'] function GetHashConvert: TDoubleHashConvert; procedure SetHashConvert(Value: TDoubleHashConvert); function Hash(const AValue: Double): Integer; property HashConvert: TDoubleHashConvert read GetHashConvert write SetHashConvert; end; IJclExtendedHashConverter = interface ['{77CECDB9-2774-4FDC-8E5A-A80325626434}'] function GetHashConvert: TExtendedHashConvert; procedure SetHashConvert(Value: TExtendedHashConvert); function Hash(const AValue: Extended): Integer; property HashConvert: TExtendedHashConvert read GetHashConvert write SetHashConvert; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatHashConverter = IJclExtendedHashConverter; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatHashConverter = IJclDoubleHashConverter; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatHashConverter = IJclSingleHashConverter; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerHashConverter = interface ['{92C540B2-C16C-47E4-995A-644BE71878B1}'] function GetHashConvert: TIntegerHashConvert; procedure SetHashConvert(Value: TIntegerHashConvert); function Hash(AValue: Integer): Integer; property HashConvert: TIntegerHashConvert read GetHashConvert write SetHashConvert; end; IJclCardinalHashConverter = interface ['{2DF04C8A-16B8-4712-BC5D-AD35014EC9F7}'] function GetHashConvert: TCardinalHashConvert; procedure SetHashConvert(Value: TCardinalHashConvert); function Hash(AValue: Cardinal): Integer; property HashConvert: TCardinalHashConvert read GetHashConvert write SetHashConvert; end; IJclInt64HashConverter = interface ['{96CF2A71-9185-4E26-B283-457ABC3584E7}'] function GetHashConvert: TInt64HashConvert; procedure SetHashConvert(Value: TInt64HashConvert); function Hash(const AValue: Int64): Integer; property HashConvert: TInt64HashConvert read GetHashConvert write SetHashConvert; end; IJclPtrHashConverter = interface ['{D704CC67-CFED-44E6-9504-65D5E468FCAF}'] function GetHashConvert: TPtrHashConvert; procedure SetHashConvert(Value: TPtrHashConvert); function Hash(Ptr: Pointer): Integer; property HashConvert: TPtrHashConvert read GetHashConvert write SetHashConvert; end; IJclHashConverter = interface ['{2D0DD6F4-162E-41D6-8A34-489E7EACABCD}'] function GetHashConvert: THashConvert; procedure SetHashConvert(Value: THashConvert); function Hash(AObject: TObject): Integer; property HashConvert: THashConvert read GetHashConvert write SetHashConvert; end; {$IFDEF SUPPORTS_GENERICS} IJclHashConverter = interface ['{300AEA0E-7433-4C3E-99A6-E533212ACF42}'] function GetHashConvert: THashConvert; procedure SetHashConvert(Value: THashConvert); function Hash(const AItem: T): Integer; property HashConvert: THashConvert read GetHashConvert write SetHashConvert; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfCloneable = interface ['{BCF77740-FB60-4306-9BD1-448AADE5FF4E}'] function IntfClone: IInterface; end; IJclCloneable = interface ['{D224AE70-2C93-4998-9479-1D513D75F2B2}'] function ObjectClone: TObject; end; TJclAutoPackStrategy = (apsDisabled, apsAgressive, apsProportional, apsIncremental); // parameter signification depends on strategy // - Disabled = unused (arrays are never packed) // - Agressive = unused (arrays are always packed) // - Proportional = ratio of empty slots before the array is packed // number of empty slots is computed by this formula: Capacity div Parameter // - Incremental = amount of empty slots before the array is packed IJclPackable = interface ['{03802D2B-E0AB-4300-A777-0B8A2BD993DF}'] function CalcGrowCapacity(ACapacity, ASize: Integer): Integer; function GetAutoPackParameter: Integer; function GetAutoPackStrategy: TJclAutoPackStrategy; function GetCapacity: Integer; procedure Pack; // reduce used memory by eliminating empty storage area (force) procedure SetAutoPackParameter(Value: Integer); procedure SetAutoPackStrategy(Value: TJclAutoPackStrategy); procedure SetCapacity(Value: Integer); property AutoPackParameter: Integer read GetAutoPackParameter write SetAutoPackParameter; property AutoPackStrategy: TJclAutoPackStrategy read GetAutoPackStrategy write SetAutoPackStrategy; property Capacity: Integer read GetCapacity write SetCapacity; end; TJclAutoGrowStrategy = (agsDisabled, agsAgressive, agsProportional, agsIncremental); // parameter signification depends on strategy // - Disabled = unused (arrays never grow) // - Agressive = unused (arrays always grow by 1 element) // - Proportional = ratio of empty slots to add to the array // number of empty slots is computed by this formula: Capacity div Parameter // - Incremental = amount of empty slots to add to the array IJclGrowable = interface(IJclPackable) ['{C71E8586-5688-444C-9BDD-9969D988123B}'] function CalcPackCapacity(ACapacity, ASize: Integer): Integer; function GetAutoGrowParameter: Integer; function GetAutoGrowStrategy: TJclAutoGrowStrategy; procedure Grow; procedure SetAutoGrowParameter(Value: Integer); procedure SetAutoGrowStrategy(Value: TJclAutoGrowStrategy); property AutoGrowParameter: Integer read GetAutoGrowParameter write SetAutoGrowParameter; property AutoGrowStrategy: TJclAutoGrowStrategy read GetAutoGrowStrategy write SetAutoGrowStrategy; end; IJclObjectOwner = interface ['{5157EA13-924E-4A56-995D-36956441025C}'] function FreeObject(var AObject: TObject): TObject; function GetOwnsObjects: Boolean; property OwnsObjects: Boolean read GetOwnsObjects; end; IJclKeyOwner = interface ['{8BE209E6-2F85-44FD-B0CD-A8363C95349A}'] function FreeKey(var Key: TObject): TObject; function GetOwnsKeys: Boolean; property OwnsKeys: Boolean read GetOwnsKeys; end; IJclValueOwner = interface ['{3BCD98CE-7056-416A-A9E7-AE3AB2A62E54}'] function FreeValue(var Value: TObject): TObject; function GetOwnsValues: Boolean; property OwnsValues: Boolean read GetOwnsValues; end; {$IFDEF SUPPORTS_GENERICS} IJclItemOwner = interface ['{0CC220C1-E705-4B21-9F53-4AD340952165}'] function FreeItem(var AItem: T): T; function GetOwnsItems: Boolean; property OwnsItems: Boolean read GetOwnsItems; end; IJclPairOwner = interface ['{321C1FF7-AA2E-4229-966A-7EC6417EA16D}'] function FreeKey(var Key: TKey): TKey; function FreeValue(var Value: TValue): TValue; function GetOwnsKeys: Boolean; function GetOwnsValues: Boolean; property OwnsKeys: Boolean read GetOwnsKeys; property OwnsValues: Boolean read GetOwnsValues; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfIterator = interface(IJclAbstractIterator) ['{E121A98A-7C43-4587-806B-9189E8B2F106}'] function Add(const AInterface: IInterface): Boolean; procedure Extract; function GetObject: IInterface; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AInterface: IInterface): Boolean; function IteratorEquals(const AIterator: IJclIntfIterator): Boolean; function Next: IInterface; function NextIndex: Integer; function Previous: IInterface; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetObject(const AInterface: IInterface); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: IInterface read GetObject; {$ENDIF SUPPORTS_FOR_IN} end; IJclAnsiStrIterator = interface(IJclAbstractIterator) ['{D5D4B681-F902-49C7-B9E1-73007C9D64F0}'] function Add(const AString: AnsiString): Boolean; procedure Extract; function GetString: AnsiString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: AnsiString): Boolean; function IteratorEquals(const AIterator: IJclAnsiStrIterator): Boolean; function Next: AnsiString; function NextIndex: Integer; function Previous: AnsiString; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetString(const AString: AnsiString); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: AnsiString read GetString; {$ENDIF SUPPORTS_FOR_IN} end; IJclWideStrIterator = interface(IJclAbstractIterator) ['{F03BC7D4-CCDA-4C4A-AF3A-E51FDCDE8ADE}'] function Add(const AString: WideString): Boolean; procedure Extract; function GetString: WideString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: WideString): Boolean; function IteratorEquals(const AIterator: IJclWideStrIterator): Boolean; function Next: WideString; function NextIndex: Integer; function Previous: WideString; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetString(const AString: WideString); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: WideString read GetString; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrIterator = interface(IJclAbstractIterator) ['{B913FFDC-792A-48FB-B58E-763EFDEBA15C}'] function Add(const AString: UnicodeString): Boolean; procedure Extract; function GetString: UnicodeString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: UnicodeString): Boolean; function IteratorEquals(const AIterator: IJclUnicodeStrIterator): Boolean; function Next: UnicodeString; function NextIndex: Integer; function Previous: UnicodeString; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetString(const AString: UnicodeString); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: UnicodeString read GetString; {$ENDIF SUPPORTS_FOR_IN} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrIterator = IJclAnsiStrIterator; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrIterator = IJclWideStrIterator; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrIterator = IJclUnicodeStrIterator; {$ENDIF CONTAINER_UNICODESTR} IJclSingleIterator = interface(IJclAbstractIterator) ['{FD1124F8-CB2B-4AD7-B12D-C05702F4204B}'] function Add(const AValue: Single): Boolean; procedure Extract; function GetValue: Single; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Single): Boolean; function IteratorEquals(const AIterator: IJclSingleIterator): Boolean; function Next: Single; function NextIndex: Integer; function Previous: Single; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(const AValue: Single); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Single read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; IJclDoubleIterator = interface(IJclAbstractIterator) ['{004C154A-281C-4DA7-BF64-F3EE80ACF640}'] function Add(const AValue: Double): Boolean; procedure Extract; function GetValue: Double; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Double): Boolean; function IteratorEquals(const AIterator: IJclDoubleIterator): Boolean; function Next: Double; function NextIndex: Integer; function Previous: Double; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(const AValue: Double); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Double read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; IJclExtendedIterator = interface(IJclAbstractIterator) ['{B89877A5-DED4-4CD9-AB90-C7D062111DE0}'] function Add(const AValue: Extended): Boolean; procedure Extract; function GetValue: Extended; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Extended): Boolean; function IteratorEquals(const AIterator: IJclExtendedIterator): Boolean; function Next: Extended; function NextIndex: Integer; function Previous: Extended; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(const AValue: Extended); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Extended read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatIterator = IJclExtendedIterator; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatIterator = IJclDoubleIterator; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatIterator = IJclSingleIterator; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerIterator = interface(IJclAbstractIterator) ['{1406A991-4574-48A1-83FE-2EDCA03908BE}'] function Add(AValue: Integer): Boolean; procedure Extract; function GetValue: Integer; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AValue: Integer): Boolean; function IteratorEquals(const AIterator: IJclIntegerIterator): Boolean; function Next: Integer; function NextIndex: Integer; function Previous: Integer; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(AValue: Integer); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Integer read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; IJclCardinalIterator = interface(IJclAbstractIterator) ['{72847A34-C8C4-4592-9447-CEB8161E33AD}'] function Add(AValue: Cardinal): Boolean; procedure Extract; function GetValue: Cardinal; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AValue: Cardinal): Boolean; function IteratorEquals(const AIterator: IJclCardinalIterator): Boolean; function Next: Cardinal; function NextIndex: Integer; function Previous: Cardinal; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(AValue: Cardinal); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Cardinal read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; IJclInt64Iterator = interface(IJclAbstractIterator) ['{573E5A51-BF76-43D7-9F93-46305BED20A8}'] function Add(const AValue: Int64): Boolean; procedure Extract; function GetValue: Int64; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Int64): Boolean; function IteratorEquals(const AIterator: IJclInt64Iterator): Boolean; function Next: Int64; function NextIndex: Integer; function Previous: Int64; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetValue(const AValue: Int64); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Int64 read GetValue; {$ENDIF SUPPORTS_FOR_IN} end; IJclPtrIterator = interface(IJclAbstractIterator) ['{62B5501C-07AA-4D00-A85B-713B39912CDF}'] function Add(APtr: Pointer): Boolean; procedure Extract; function GetPointer: Pointer; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(APtr: Pointer): Boolean; function IteratorEquals(const AIterator: IJclPtrIterator): Boolean; function Next: Pointer; function NextIndex: Integer; function Previous: Pointer; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetPointer(APtr: Pointer); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: Pointer read GetPointer; {$ENDIF SUPPORTS_FOR_IN} end; IJclIterator = interface(IJclAbstractIterator) ['{997DF9B7-9AA2-4239-8B94-14DFFD26D790}'] function Add(AObject: TObject): Boolean; procedure Extract; function GetObject: TObject; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AObject: TObject): Boolean; function IteratorEquals(const AIterator: IJclIterator): Boolean; function Next: TObject; function NextIndex: Integer; function Previous: TObject; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetObject(AObject: TObject); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: TObject read GetObject; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF SUPPORTS_GENERICS} IJclIterator = interface(IJclAbstractIterator) ['{6E8547A4-5B5D-4831-8AE3-9C6D04071B11}'] function Add(const AItem: T): Boolean; procedure Extract; function GetItem: T; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AItem: T): Boolean; function IteratorEquals(const AIterator: IJclIterator): Boolean; function Next: T; function NextIndex: Integer; function Previous: T; function PreviousIndex: Integer; procedure Remove; procedure Reset; procedure SetItem(const AItem: T); {$IFDEF SUPPORTS_FOR_IN} function MoveNext: Boolean; property Current: T read GetItem; {$ENDIF SUPPORTS_FOR_IN} end; {$ENDIF SUPPORTS_GENERICS} IJclIntfTreeIterator = interface(IJclIntfIterator) ['{C97379BF-C6A9-4A90-9D7A-152E9BAD314F}'] function AddChild(const AInterface: IInterface): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): IInterface; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AInterface: IInterface): Integer; function InsertChild(Index: Integer; const AInterface: IInterface): Boolean; function Parent: IInterface; procedure SetChild(Index: Integer; const AInterface: IInterface); property Children[Index: Integer]: IInterface read GetChild write SetChild; end; IJclAnsiStrTreeIterator = interface(IJclAnsiStrIterator) ['{66BC5C76-758C-4E72-ABF1-EB02CF851C6D}'] function AddChild(const AString: AnsiString): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): AnsiString; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AString: AnsiString): Integer; function InsertChild(Index: Integer; const AString: AnsiString): Boolean; function Parent: AnsiString; procedure SetChild(Index: Integer; const AString: AnsiString); property Children[Index: Integer]: AnsiString read GetChild write SetChild; end; IJclWideStrTreeIterator = interface(IJclWideStrIterator) ['{B3168A3B-5A90-4ABF-855F-3D2B3AB6EE7F}'] function AddChild(const AString: WideString): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): WideString; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AString: WideString): Integer; function InsertChild(Index: Integer; const AString: WideString): Boolean; function Parent: WideString; procedure SetChild(Index: Integer; const AString: WideString); property Children[Index: Integer]: WideString read GetChild write SetChild; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrTreeIterator = interface(IJclUnicodeStrIterator) ['{0B0A60DE-0403-4EE1-B1F0-10D849924CF8}'] function AddChild(const AString: UnicodeString): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): UnicodeString; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AString: UnicodeString): Integer; function InsertChild(Index: Integer; const AString: UnicodeString): Boolean; function Parent: UnicodeString; procedure SetChild(Index: Integer; const AString: UnicodeString); property Children[Index: Integer]: UnicodeString read GetChild write SetChild; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrTreeIterator = IJclAnsiStrTreeIterator; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrTreeIterator = IJclWideStrTreeIterator; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrTreeIterator = IJclUnicodeStrTreeIterator; {$ENDIF CONTAINER_UNICODESTR} IJclSingleTreeIterator = interface(IJclSingleIterator) ['{17BFDE9D-DBF7-4DC8-AC74-919C717B4726}'] function AddChild(const AValue: Single): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Single; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AValue: Single): Integer; function InsertChild(Index: Integer; const AValue: Single): Boolean; function Parent: Single; procedure SetChild(Index: Integer; const AValue: Single); property Children[Index: Integer]: Single read GetChild write SetChild; end; IJclDoubleTreeIterator = interface(IJclDoubleIterator) ['{EB39B84E-D3C5-496E-A521-B8BF24579252}'] function AddChild(const AValue: Double): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Double; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AValue: Double): Integer; function InsertChild(Index: Integer; const AValue: Double): Boolean; function Parent: Double; procedure SetChild(Index: Integer; const AValue: Double); property Children[Index: Integer]: Double read GetChild write SetChild; end; IJclExtendedTreeIterator = interface(IJclExtendedIterator) ['{1B40A544-FC5D-454C-8E42-CE17B015E65C}'] function AddChild(const AValue: Extended): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Extended; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AValue: Extended): Integer; function InsertChild(Index: Integer; const AValue: Extended): Boolean; function Parent: Extended; procedure SetChild(Index: Integer; const AValue: Extended); property Children[Index: Integer]: Extended read GetChild write SetChild; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatTreeIterator = IJclExtendedTreeIterator; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatTreeIterator = IJclDoubleTreeIterator; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatTreeIterator = IJclSingleTreeIterator; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerTreeIterator = interface(IJclIntegerIterator) ['{88EDC5C5-CA41-41AF-9838-AA19D07E69F5}'] function AddChild(AValue: Integer): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Integer; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(AValue: Integer): Integer; function InsertChild(Index: Integer; AValue: Integer): Boolean; function Parent: Integer; procedure SetChild(Index: Integer; AValue: Integer); property Children[Index: Integer]: Integer read GetChild write SetChild; end; IJclCardinalTreeIterator = interface(IJclCardinalIterator) ['{FDBF493F-F79D-46EB-A59D-7193B6E6A860}'] function AddChild(AValue: Cardinal): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Cardinal; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(AValue: Cardinal): Integer; function InsertChild(Index: Integer; AValue: Cardinal): Boolean; function Parent: Cardinal; procedure SetChild(Index: Integer; AValue: Cardinal); property Children[Index: Integer]: Cardinal read GetChild write SetChild; end; IJclInt64TreeIterator = interface(IJclInt64Iterator) ['{C5A5E504-E19B-43AC-90B9-E4B8984BFA23}'] function AddChild(const AValue: Int64): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Int64; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AValue: Int64): Integer; function InsertChild(Index: Integer; const AValue: Int64): Boolean; function Parent: Int64; procedure SetChild(Index: Integer; const AValue: Int64); property Children[Index: Integer]: Int64 read GetChild write SetChild; end; IJclPtrTreeIterator = interface(IJclPtrIterator) ['{ED4C08E6-60FC-4ED3-BD19-E6605B9BD943}'] function AddChild(APtr: Pointer): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): Pointer; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(APtr: Pointer): Integer; function InsertChild(Index: Integer; APtr: Pointer): Boolean; function Parent: Pointer; procedure SetChild(Index: Integer; APtr: Pointer); property Children[Index: Integer]: Pointer read GetChild write SetChild; end; IJclTreeIterator = interface(IJclIterator) ['{8B4863B0-B6B9-426E-B5B8-7AF71D264237}'] function AddChild(AObject: TObject): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): TObject; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(AObject: TObject): Integer; function InsertChild(Index: Integer; AObject: TObject): Boolean; function Parent: TObject; procedure SetChild(Index: Integer; AObject: TObject); property Children[Index: Integer]: TObject read GetChild write SetChild; end; {$IFDEF SUPPORTS_GENERICS} IJclTreeIterator = interface(IJclIterator) ['{29A06DA4-D93A-40A5-8581-0FE85BC8384B}'] function AddChild(const AItem: T): Boolean; function ChildrenCount: Integer; procedure DeleteChild(Index: Integer); procedure DeleteChildren; procedure ExtractChild(Index: Integer); procedure ExtractChildren; function GetChild(Index: Integer): T; function HasChild(Index: Integer): Boolean; function HasParent: Boolean; function IndexOfChild(const AItem: T): Integer; function InsertChild(Index: Integer; const AItem: T): Boolean; function Parent: T; procedure SetChild(Index: Integer; const AItem: T); property Children[Index: Integer]: T read GetChild write SetChild; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfBinaryTreeIterator = interface(IJclIntfTreeIterator) ['{8BE874B2-0075-4EE0-8F49-665FC894D923}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: IInterface; function Right: IInterface; end; IJclAnsiStrBinaryTreeIterator = interface(IJclAnsiStrTreeIterator) ['{34A4A300-042C-43A9-AC23-8FC1B76BFB25}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: AnsiString; function Right: AnsiString; end; IJclWideStrBinaryTreeIterator = interface(IJclWideStrTreeIterator) ['{17C08EB9-6880-469E-878A-8F5EBFE905B1}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: WideString; function Right: WideString; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrBinaryTreeIterator = interface(IJclUnicodeStrTreeIterator) ['{CA32B126-AD4B-4C33-BC47-52B09FE093BE}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: UnicodeString; function Right: UnicodeString; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrBinaryTreeIterator = IJclAnsiStrBinaryTreeIterator; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrBinaryTreeIterator = IJclWideStrBinaryTreeIterator; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrBinaryTreeIterator = IJclUnicodeStrBinaryTreeIterator; {$ENDIF CONTAINER_UNICODESTR} IJclSingleBinaryTreeIterator = interface(IJclSingleTreeIterator) ['{BC6FFB13-FA1C-4077-8273-F25A3119168B}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Single; function Right: Single; end; IJclDoubleBinaryTreeIterator = interface(IJclDoubleTreeIterator) ['{CE48083C-D60C-4315-BC14-8CE77AC3269E}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Double; function Right: Double; end; IJclExtendedBinaryTreeIterator = interface(IJclExtendedTreeIterator) ['{8A9FAE2A-5EF5-4165-8E8D-51F2102A4580}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Extended; function Right: Extended; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatBinaryTreeIterator = IJclExtendedBinaryTreeIterator; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatBinaryTreeIterator = IJclDoubleBinaryTreeIterator; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatBinaryTreeIterator = IJclSingleBinaryTreeIterator; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerBinaryTreeIterator = interface(IJclIntegerTreeIterator) ['{FE2BF57D-D10D-4B0C-903D-BB61700FBA0A}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Integer; function Right: Integer; end; IJclCardinalBinaryTreeIterator = interface(IJclCardinalTreeIterator) ['{AAA358F5-95A1-480F-8E2A-09028BA6C397}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Cardinal; function Right: Cardinal; end; IJclInt64BinaryTreeIterator = interface(IJclInt64TreeIterator) ['{5605E164-5CDD-40B1-9323-DE1CB584E289}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Int64; function Right: Int64; end; IJclPtrBinaryTreeIterator = interface(IJclPtrTreeIterator) ['{75D3DF0D-C491-43F7-B078-E658197E8051}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: Pointer; function Right: Pointer; end; IJclBinaryTreeIterator = interface(IJclTreeIterator) ['{821DE28D-631C-4F23-A0B2-CC0F35B4C64D}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: TObject; function Right: TObject; end; {$IFDEF SUPPORTS_GENERICS} IJclBinaryTreeIterator = interface(IJclTreeIterator) ['{0CF5B0FC-C644-458C-BF48-2E093DAFEC26}'] function HasLeft: Boolean; function HasRight: Boolean; function Left: T; function Right: T; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfCollection = interface(IJclContainer) ['{8E178463-4575-487A-B4D5-DC2AED3C7ACA}'] function Add(const AInterface: IInterface): Boolean; function AddAll(const ACollection: IJclIntfCollection): Boolean; procedure Clear; function Contains(const AInterface: IInterface): Boolean; function ContainsAll(const ACollection: IJclIntfCollection): Boolean; function CollectionEquals(const ACollection: IJclIntfCollection): Boolean; function Extract(const AInterface: IInterface): Boolean; function ExtractAll(const ACollection: IJclIntfCollection): Boolean; function First: IJclIntfIterator; function IsEmpty: Boolean; function Last: IJclIntfIterator; function Remove(const AInterface: IInterface): Boolean; function RemoveAll(const ACollection: IJclIntfCollection): Boolean; function RetainAll(const ACollection: IJclIntfCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclIntfIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclAnsiStrCollection = interface(IJclAnsiStrFlatContainer) ['{3E3CFC19-E8AF-4DD7-91FA-2DF2895FC7B9}'] function Add(const AString: AnsiString): Boolean; function AddAll(const ACollection: IJclAnsiStrCollection): Boolean; procedure Clear; function Contains(const AString: AnsiString): Boolean; function ContainsAll(const ACollection: IJclAnsiStrCollection): Boolean; function CollectionEquals(const ACollection: IJclAnsiStrCollection): Boolean; function Extract(const AString: AnsiString): Boolean; function ExtractAll(const ACollection: IJclAnsiStrCollection): Boolean; function First: IJclAnsiStrIterator; function IsEmpty: Boolean; function Last: IJclAnsiStrIterator; function Remove(const AString: AnsiString): Boolean; function RemoveAll(const ACollection: IJclAnsiStrCollection): Boolean; function RetainAll(const ACollection: IJclAnsiStrCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclAnsiStrIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclWideStrCollection = interface(IJclWideStrFlatContainer) ['{CDCC0F94-4DD0-4F25-B441-6AE55D5C7466}'] function Add(const AString: WideString): Boolean; function AddAll(const ACollection: IJclWideStrCollection): Boolean; procedure Clear; function Contains(const AString: WideString): Boolean; function ContainsAll(const ACollection: IJclWideStrCollection): Boolean; function CollectionEquals(const ACollection: IJclWideStrCollection): Boolean; function Extract(const AString: WideString): Boolean; function ExtractAll(const ACollection: IJclWideStrCollection): Boolean; function First: IJclWideStrIterator; function IsEmpty: Boolean; function Last: IJclWideStrIterator; function Remove(const AString: WideString): Boolean; function RemoveAll(const ACollection: IJclWideStrCollection): Boolean; function RetainAll(const ACollection: IJclWideStrCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclWideStrIterator; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrCollection = interface(IJclUnicodeStrFlatContainer) ['{82EA7DDE-4EBF-4E0D-A380-CAF8A24C1A0D}'] function Add(const AString: UnicodeString): Boolean; function AddAll(const ACollection: IJclUnicodeStrCollection): Boolean; procedure Clear; function Contains(const AString: UnicodeString): Boolean; function ContainsAll(const ACollection: IJclUnicodeStrCollection): Boolean; function CollectionEquals(const ACollection: IJclUnicodeStrCollection): Boolean; function Extract(const AString: UnicodeString): Boolean; function ExtractAll(const ACollection: IJclUnicodeStrCollection): Boolean; function First: IJclUnicodeStrIterator; function IsEmpty: Boolean; function Last: IJclUnicodeStrIterator; function Remove(const AString: UnicodeString): Boolean; function RemoveAll(const ACollection: IJclUnicodeStrCollection): Boolean; function RetainAll(const ACollection: IJclUnicodeStrCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclUnicodeStrIterator; {$ENDIF SUPPORTS_FOR_IN} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrCollection = IJclAnsiStrCollection; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrCollection = IJclWideStrCollection; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrCollection = IJclUnicodeStrCollection; {$ENDIF CONTAINER_UNICODESTR} IJclSingleCollection = interface(IJclSingleContainer) ['{1D34D474-6588-441E-B2B3-8C021A37ED89}'] function Add(const AValue: Single): Boolean; function AddAll(const ACollection: IJclSingleCollection): Boolean; procedure Clear; function Contains(const AValue: Single): Boolean; function ContainsAll(const ACollection: IJclSingleCollection): Boolean; function CollectionEquals(const ACollection: IJclSingleCollection): Boolean; function Extract(const AValue: Single): Boolean; function ExtractAll(const ACollection: IJclSingleCollection): Boolean; function First: IJclSingleIterator; function IsEmpty: Boolean; function Last: IJclSingleIterator; function Remove(const AValue: Single): Boolean; function RemoveAll(const ACollection: IJclSingleCollection): Boolean; function RetainAll(const ACollection: IJclSingleCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclSingleIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclDoubleCollection = interface(IJclDoubleContainer) ['{E54C7717-C33A-4F1B-860C-4F60F303EAD3}'] function Add(const AValue: Double): Boolean; function AddAll(const ACollection: IJclDoubleCollection): Boolean; procedure Clear; function Contains(const AValue: Double): Boolean; function ContainsAll(const ACollection: IJclDoubleCollection): Boolean; function CollectionEquals(const ACollection: IJclDoubleCollection): Boolean; function Extract(const AValue: Double): Boolean; function ExtractAll(const ACollection: IJclDoubleCollection): Boolean; function First: IJclDoubleIterator; function IsEmpty: Boolean; function Last: IJclDoubleIterator; function Remove(const AValue: Double): Boolean; function RemoveAll(const ACollection: IJclDoubleCollection): Boolean; function RetainAll(const ACollection: IJclDoubleCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclDoubleIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclExtendedCollection = interface(IJclExtendedContainer) ['{2A1341CB-B997-4E3B-B1CA-6D60AE853C55}'] function Add(const AValue: Extended): Boolean; function AddAll(const ACollection: IJclExtendedCollection): Boolean; procedure Clear; function Contains(const AValue: Extended): Boolean; function ContainsAll(const ACollection: IJclExtendedCollection): Boolean; function CollectionEquals(const ACollection: IJclExtendedCollection): Boolean; function Extract(const AValue: Extended): Boolean; function ExtractAll(const ACollection: IJclExtendedCollection): Boolean; function First: IJclExtendedIterator; function IsEmpty: Boolean; function Last: IJclExtendedIterator; function Remove(const AValue: Extended): Boolean; function RemoveAll(const ACollection: IJclExtendedCollection): Boolean; function RetainAll(const ACollection: IJclExtendedCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclExtendedIterator; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatCollection = IJclExtendedCollection; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatCollection = IJclDoubleCollection; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatCollection = IJclSingleCollection; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerCollection = interface(IJclContainer) ['{AF69890D-22D1-4D89-8FFD-5FAD7E0638BA}'] function Add(AValue: Integer): Boolean; function AddAll(const ACollection: IJclIntegerCollection): Boolean; procedure Clear; function Contains(AValue: Integer): Boolean; function ContainsAll(const ACollection: IJclIntegerCollection): Boolean; function CollectionEquals(const ACollection: IJclIntegerCollection): Boolean; function Extract(AValue: Integer): Boolean; function ExtractAll(const ACollection: IJclIntegerCollection): Boolean; function First: IJclIntegerIterator; function IsEmpty: Boolean; function Last: IJclIntegerIterator; function Remove(AValue: Integer): Boolean; function RemoveAll(const ACollection: IJclIntegerCollection): Boolean; function RetainAll(const ACollection: IJclIntegerCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclIntegerIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclCardinalCollection = interface(IJclContainer) ['{CFBD0344-58C8-4FA2-B4D7-D21D77DFBF80}'] function Add(AValue: Cardinal): Boolean; function AddAll(const ACollection: IJclCardinalCollection): Boolean; procedure Clear; function Contains(AValue: Cardinal): Boolean; function ContainsAll(const ACollection: IJclCardinalCollection): Boolean; function CollectionEquals(const ACollection: IJclCardinalCollection): Boolean; function Extract(AValue: Cardinal): Boolean; function ExtractAll(const ACollection: IJclCardinalCollection): Boolean; function First: IJclCardinalIterator; function IsEmpty: Boolean; function Last: IJclCardinalIterator; function Remove(AValue: Cardinal): Boolean; function RemoveAll(const ACollection: IJclCardinalCollection): Boolean; function RetainAll(const ACollection: IJclCardinalCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclCardinalIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclInt64Collection = interface(IJclContainer) ['{93A45BDE-3C4C-48D6-9874-5322914DFDDA}'] function Add(const AValue: Int64): Boolean; function AddAll(const ACollection: IJclInt64Collection): Boolean; procedure Clear; function Contains(const AValue: Int64): Boolean; function ContainsAll(const ACollection: IJclInt64Collection): Boolean; function CollectionEquals(const ACollection: IJclInt64Collection): Boolean; function Extract(const AValue: Int64): Boolean; function ExtractAll(const ACollection: IJclInt64Collection): Boolean; function First: IJclInt64Iterator; function IsEmpty: Boolean; function Last: IJclInt64Iterator; function Remove(const AValue: Int64): Boolean; function RemoveAll(const ACollection: IJclInt64Collection): Boolean; function RetainAll(const ACollection: IJclInt64Collection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclInt64Iterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclPtrCollection = interface(IJclContainer) ['{02E909A7-5B1D-40D4-82EA-A0CD97D5C811}'] function Add(APtr: Pointer): Boolean; function AddAll(const ACollection: IJclPtrCollection): Boolean; procedure Clear; function Contains(APtr: Pointer): Boolean; function ContainsAll(const ACollection: IJclPtrCollection): Boolean; function CollectionEquals(const ACollection: IJclPtrCollection): Boolean; function Extract(APtr: Pointer): Boolean; function ExtractAll(const ACollection: IJclPtrCollection): Boolean; function First: IJclPtrIterator; function IsEmpty: Boolean; function Last: IJclPtrIterator; function Remove(APtr: Pointer): Boolean; function RemoveAll(const ACollection: IJclPtrCollection): Boolean; function RetainAll(const ACollection: IJclPtrCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclPtrIterator; {$ENDIF SUPPORTS_FOR_IN} end; IJclCollection = interface(IJclContainer) ['{58947EF1-CD21-4DD1-AE3D-225C3AAD7EE5}'] function Add(AObject: TObject): Boolean; function AddAll(const ACollection: IJclCollection): Boolean; procedure Clear; function Contains(AObject: TObject): Boolean; function ContainsAll(const ACollection: IJclCollection): Boolean; function CollectionEquals(const ACollection: IJclCollection): Boolean; function Extract(AObject: TObject): Boolean; function ExtractAll(const ACollection: IJclCollection): Boolean; function First: IJclIterator; function IsEmpty: Boolean; function Last: IJclIterator; function Remove(AObject: TObject): Boolean; function RemoveAll(const ACollection: IJclCollection): Boolean; function RetainAll(const ACollection: IJclCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclIterator; {$ENDIF SUPPORTS_FOR_IN} end; {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclCollection = interface(IJclContainer) ['{67EE8AF3-19B0-4DCA-A730-3C9B261B8EC5}'] function Add(const AItem: T): Boolean; function AddAll(const ACollection: IJclCollection): Boolean; procedure Clear; function Contains(const AItem: T): Boolean; function ContainsAll(const ACollection: IJclCollection): Boolean; function CollectionEquals(const ACollection: IJclCollection): Boolean; function Extract(const AItem: T): Boolean; function ExtractAll(const ACollection: IJclCollection): Boolean; function First: IJclIterator; function IsEmpty: Boolean; function Last: IJclIterator; function Remove(const AItem: T): Boolean; function RemoveAll(const ACollection: IJclCollection): Boolean; function RetainAll(const ACollection: IJclCollection): Boolean; function Size: Integer; {$IFDEF SUPPORTS_FOR_IN} function GetEnumerator: IJclIterator; {$ENDIF SUPPORTS_FOR_IN} end; //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} IJclIntfList = interface(IJclIntfCollection) ['{E14EDA4B-1DAA-4013-9E6C-CDCB365C7CF9}'] function Delete(Index: Integer): IInterface; function ExtractIndex(Index: Integer): IInterface; function GetObject(Index: Integer): IInterface; function IndexOf(const AInterface: IInterface): Integer; function Insert(Index: Integer; const AInterface: IInterface): Boolean; function InsertAll(Index: Integer; const ACollection: IJclIntfCollection): Boolean; function LastIndexOf(const AInterface: IInterface): Integer; procedure SetObject(Index: Integer; const AInterface: IInterface); function SubList(First, Count: Integer): IJclIntfList; property Objects[Key: Integer]: IInterface read GetObject write SetObject; default; end; IJclAnsiStrList = interface(IJclAnsiStrCollection) ['{07DD7644-EAC6-4059-99FC-BEB7FBB73186}'] function Delete(Index: Integer): AnsiString; function ExtractIndex(Index: Integer): AnsiString; function GetString(Index: Integer): AnsiString; function IndexOf(const AString: AnsiString): Integer; function Insert(Index: Integer; const AString: AnsiString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclAnsiStrCollection): Boolean; function LastIndexOf(const AString: AnsiString): Integer; procedure SetString(Index: Integer; const AString: AnsiString); function SubList(First, Count: Integer): IJclAnsiStrList; property Strings[Key: Integer]: AnsiString read GetString write SetString; default; end; IJclWideStrList = interface(IJclWideStrCollection) ['{C9955874-6AC0-4CE0-8CC0-606A3F1702C6}'] function Delete(Index: Integer): WideString; function ExtractIndex(Index: Integer): WideString; function GetString(Index: Integer): WideString; function IndexOf(const AString: WideString): Integer; function Insert(Index: Integer; const AString: WideString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclWideStrCollection): Boolean; function LastIndexOf(const AString: WideString): Integer; procedure SetString(Index: Integer; const AString: WideString); function SubList(First, Count: Integer): IJclWideStrList; property Strings[Key: Integer]: WideString read GetString write SetString; default; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrList = interface(IJclUnicodeStrCollection) ['{F4307EB4-D66E-4656-AC56-50883D0F2C83}'] function Delete(Index: Integer): UnicodeString; function ExtractIndex(Index: Integer): UnicodeString; function GetString(Index: Integer): UnicodeString; function IndexOf(const AString: UnicodeString): Integer; function Insert(Index: Integer; const AString: UnicodeString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclUnicodeStrCollection): Boolean; function LastIndexOf(const AString: UnicodeString): Integer; procedure SetString(Index: Integer; const AString: UnicodeString); function SubList(First, Count: Integer): IJclUnicodeStrList; property Strings[Key: Integer]: UnicodeString read GetString write SetString; default; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrList = IJclAnsiStrList; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrList = IJclWideStrList; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrList = IJclUnicodeStrList; {$ENDIF CONTAINER_UNICODESTR} IJclSingleList = interface(IJclSingleCollection) ['{D081324C-70A4-4AAC-BA42-7557F0262826}'] function Delete(Index: Integer): Single; function ExtractIndex(Index: Integer): Single; function GetValue(Index: Integer): Single; function IndexOf(const AValue: Single): Integer; function Insert(Index: Integer; const AValue: Single): Boolean; function InsertAll(Index: Integer; const ACollection: IJclSingleCollection): Boolean; function LastIndexOf(const AValue: Single): Integer; procedure SetValue(Index: Integer; const AValue: Single); function SubList(First, Count: Integer): IJclSingleList; property Values[Key: Integer]: Single read GetValue write SetValue; default; end; IJclDoubleList = interface(IJclDoubleCollection) ['{ECA58515-3903-4312-9486-3214E03F35AB}'] function Delete(Index: Integer): Double; function ExtractIndex(Index: Integer): Double; function GetValue(Index: Integer): Double; function IndexOf(const AValue: Double): Integer; function Insert(Index: Integer; const AValue: Double): Boolean; function InsertAll(Index: Integer; const ACollection: IJclDoubleCollection): Boolean; function LastIndexOf(const AValue: Double): Integer; procedure SetValue(Index: Integer; const AValue: Double); function SubList(First, Count: Integer): IJclDoubleList; property Values[Key: Integer]: Double read GetValue write SetValue; default; end; IJclExtendedList = interface(IJclExtendedCollection) ['{7463F954-F8DF-4B02-A284-FCB98746248E}'] function Delete(Index: Integer): Extended; function ExtractIndex(Index: Integer): Extended; function GetValue(Index: Integer): Extended; function IndexOf(const AValue: Extended): Integer; function Insert(Index: Integer; const AValue: Extended): Boolean; function InsertAll(Index: Integer; const ACollection: IJclExtendedCollection): Boolean; function LastIndexOf(const AValue: Extended): Integer; procedure SetValue(Index: Integer; const AValue: Extended); function SubList(First, Count: Integer): IJclExtendedList; property Values[Key: Integer]: Extended read GetValue write SetValue; default; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatList = IJclExtendedList; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatList = IJclDoubleList; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatList = IJclSingleList; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerList = interface(IJclIntegerCollection) ['{339BE91B-557D-4CE0-A854-1CBD4FE31725}'] function Delete(Index: Integer): Integer; function ExtractIndex(Index: Integer): Integer; function GetValue(Index: Integer): Integer; function IndexOf(AValue: Integer): Integer; function Insert(Index: Integer; AValue: Integer): Boolean; function InsertAll(Index: Integer; const ACollection: IJclIntegerCollection): Boolean; function LastIndexOf(AValue: Integer): Integer; procedure SetValue(Index: Integer; AValue: Integer); function SubList(First, Count: Integer): IJclIntegerList; property Values[Key: Integer]: Integer read GetValue write SetValue; default; end; IJclCardinalList = interface(IJclCardinalCollection) ['{02B09EA8-DE6F-4A18-AA57-C3533E6AC4E3}'] function Delete(Index: Integer): Cardinal; function ExtractIndex(Index: Integer): Cardinal; function GetValue(Index: Integer): Cardinal; function IndexOf(AValue: Cardinal): Integer; function Insert(Index: Integer; AValue: Cardinal): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCardinalCollection): Boolean; function LastIndexOf(AValue: Cardinal): Integer; procedure SetValue(Index: Integer; AValue: Cardinal); function SubList(First, Count: Integer): IJclCardinalList; property Values[Key: Integer]: Cardinal read GetValue write SetValue; default; end; IJclInt64List = interface(IJclInt64Collection) ['{E8D49200-91D3-4BD0-A59B-B93EC7E2074B}'] function Delete(Index: Integer): Int64; function ExtractIndex(Index: Integer): Int64; function GetValue(Index: Integer): Int64; function IndexOf(const AValue: Int64): Integer; function Insert(Index: Integer; const AValue: Int64): Boolean; function InsertAll(Index: Integer; const ACollection: IJclInt64Collection): Boolean; function LastIndexOf(const AValue: Int64): Integer; procedure SetValue(Index: Integer; const AValue: Int64); function SubList(First, Count: Integer): IJclInt64List; property Values[Key: Integer]: Int64 read GetValue write SetValue; default; end; IJclPtrList = interface(IJclPtrCollection) ['{2CF5CF1F-C012-480C-A4CE-38BDAFB15D05}'] function Delete(Index: Integer): Pointer; function ExtractIndex(Index: Integer): Pointer; function GetPointer(Index: Integer): Pointer; function IndexOf(APtr: Pointer): Integer; function Insert(Index: Integer; APtr: Pointer): Boolean; function InsertAll(Index: Integer; const ACollection: IJclPtrCollection): Boolean; function LastIndexOf(APtr: Pointer): Integer; procedure SetPointer(Index: Integer; APtr: Pointer); function SubList(First, Count: Integer): IJclPtrList; property Pointers[Key: Integer]: Pointer read GetPointer write SetPointer; default; end; IJclList = interface(IJclCollection) ['{8ABC70AC-5C06-43EA-AFE0-D066379BCC28}'] function Delete(Index: Integer): TObject; function ExtractIndex(Index: Integer): TObject; function GetObject(Index: Integer): TObject; function IndexOf(AObject: TObject): Integer; function Insert(Index: Integer; AObject: TObject): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCollection): Boolean; function LastIndexOf(AObject: TObject): Integer; procedure SetObject(Index: Integer; AObject: TObject); function SubList(First, Count: Integer): IJclList; property Objects[Key: Integer]: TObject read GetObject write SetObject; default; end; {$IFDEF SUPPORTS_GENERICS} IJclList = interface(IJclCollection) ['{3B4BE3D7-8FF7-4163-91DF-3F73AE6935E7}'] function Delete(Index: Integer): T; function ExtractIndex(Index: Integer): T; function GetItem(Index: Integer): T; function IndexOf(const AItem: T): Integer; function Insert(Index: Integer; const AItem: T): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCollection): Boolean; function LastIndexOf(const AItem: T): Integer; procedure SetItem(Index: Integer; const AItem: T); function SubList(First, Count: Integer): IJclList; property Items[Key: Integer]: T read GetItem write SetItem; default; end; {$ENDIF SUPPORTS_GENERICS} // Pointer functions for sort algorithms TIntfSortProc = procedure(const AList: IJclIntfList; L, R: Integer; AComparator: TIntfCompare); TAnsiStrSortProc = procedure(const AList: IJclAnsiStrList; L, R: Integer; AComparator: TAnsiStrCompare); TWideStrSortProc = procedure(const AList: IJclWideStrList; L, R: Integer; AComparator: TWideStrCompare); {$IFDEF SUPPORTS_UNICODE_STRING} TUnicodeStrSortProc = procedure(const AList: IJclUnicodeStrList; L, R: Integer; AComparator: TUnicodeStrCompare); {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} TStrSortProc = TAnsiStrSortProc; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} TStrSortProc = TWideStrSortProc; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} TStrSortProc = TUnicodeStrSortProc; {$ENDIF CONTAINER_UNICODESTR} TSingleSortProc = procedure(const AList: IJclSingleList; L, R: Integer; AComparator: TSingleCompare); TDoubleSortProc = procedure(const AList: IJclDoubleList; L, R: Integer; AComparator: TDoubleCompare); TExtendedSortProc = procedure(const AList: IJclExtendedList; L, R: Integer; AComparator: TExtendedCompare); TIntegerSortProc = procedure(const AList: IJclIntegerList; L, R: Integer; AComparator: TIntegerCompare); TCardinalSortProc = procedure(const AList: IJclCardinalList; L, R: Integer; AComparator: TCardinalCompare); TInt64SortProc = procedure(const AList: IJclInt64List; L, R: Integer; AComparator: TInt64Compare); TPtrSortProc = procedure(const AList: IJclPtrList; L, R: Integer; AComparator: TPtrCompare); TSortProc = procedure(const AList: IJclList; L, R: Integer; AComparator: TCompare); {$IFDEF SUPPORTS_GENERICS} TSortProc = procedure(const AList: IJclList; L, R: Integer; AComparator: TCompare); {$ENDIF SUPPORTS_GENERICS} IJclIntfArray = interface(IJclIntfList) ['{B055B427-7817-43FC-97D4-AD1845643D63}'] function GetObject(Index: Integer): IInterface; procedure SetObject(Index: Integer; const AInterface: IInterface); property Objects[Index: Integer]: IInterface read GetObject write SetObject; default; end; IJclAnsiStrArray = interface(IJclAnsiStrList) ['{4953EA83-9288-4537-9D10-544D1C992B62}'] function GetString(Index: Integer): AnsiString; procedure SetString(Index: Integer; const AString: AnsiString); property Strings[Index: Integer]: AnsiString read GetString write SetString; default; end; IJclWideStrArray = interface(IJclWideStrList) ['{3CE09F9A-5CB4-4867-80D5-C2313D278D69}'] function GetString(Index: Integer): WideString; procedure SetString(Index: Integer; const AString: WideString); property Strings[Index: Integer]: WideString read GetString write SetString; default; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrArray = interface(IJclUnicodeStrList) ['{24312E5B-B61D-485C-9E57-AC36C93D8159}'] function GetString(Index: Integer): UnicodeString; procedure SetString(Index: Integer; const AString: UnicodeString); property Strings[Index: Integer]: UnicodeString read GetString write SetString; default; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrArray = IJclAnsiStrArray; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrArray = IJclWideStrArray; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrArray = IJclUnicodeStrArray; {$ENDIF CONTAINER_UNICODESTR} IJclSingleArray = interface(IJclSingleList) ['{B96E2A4D-D750-4B65-B975-C619A05A29F6}'] function GetValue(Index: Integer): Single; procedure SetValue(Index: Integer; const AValue: Single); property Values[Index: Integer]: Single read GetValue write SetValue; default; end; IJclDoubleArray = interface(IJclDoubleList) ['{67E66324-9757-4E85-8ECD-53396910FB39}'] function GetValue(Index: Integer): Double; procedure SetValue(Index: Integer; const AValue: Double); property Values[Index: Integer]: Double read GetValue write SetValue; default; end; IJclExtendedArray = interface(IJclExtendedList) ['{D43E8D18-26B3-41A2-8D52-ED7EA2FE1AB7}'] function GetValue(Index: Integer): Extended; procedure SetValue(Index: Integer; const AValue: Extended); property Values[Index: Integer]: Extended read GetValue write SetValue; default; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatArray = IJclExtendedArray; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatArray = IJclDoubleArray; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatArray = IJclSingleArray; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerArray = interface(IJclIntegerList) ['{2B7C8B33-C0BD-4EC3-9764-63866E174781}'] function GetValue(Index: Integer): Integer; procedure SetValue(Index: Integer; AValue: Integer); property Values[Index: Integer]: Integer read GetValue write SetValue; default; end; IJclCardinalArray = interface(IJclCardinalList) ['{C451F2F8-65C6-4C29-99A0-CC9C15356418}'] function GetValue(Index: Integer): Cardinal; procedure SetValue(Index: Integer; AValue: Cardinal); property Values[Index: Integer]: Cardinal read GetValue write SetValue; default; end; IJclInt64Array = interface(IJclInt64List) ['{D947C43D-2D04-442A-A707-39EDE7D96FC9}'] function GetValue(Index: Integer): Int64; procedure SetValue(Index: Integer; const AValue: Int64); property Values[Index: Integer]: Int64 read GetValue write SetValue; default; end; IJclPtrArray = interface(IJclPtrList) ['{D43E8D18-26B3-41A2-8D52-ED7EA2FE1AB7}'] function GetPointer(Index: Integer): Pointer; procedure SetPointer(Index: Integer; APtr: Pointer); property Pointers[Index: Integer]: Pointer read GetPointer write SetPointer; default; end; IJclArray = interface(IJclList) ['{A69F6D35-54B2-4361-852E-097ED75E648A}'] function GetObject(Index: Integer): TObject; procedure SetObject(Index: Integer; AObject: TObject); property Objects[Index: Integer]: TObject read GetObject write SetObject; default; end; {$IFDEF SUPPORTS_GENERICS} IJclArray = interface(IJclList) ['{38810C13-E35E-428A-B84F-D25FB994BE8E}'] function GetItem(Index: Integer): T; procedure SetItem(Index: Integer; const AItem: T); property Items[Index: Integer]: T read GetItem write SetItem; default; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfSet = interface(IJclIntfCollection) ['{E2D28852-9774-49B7-A739-5DBA2B705924}'] procedure Intersect(const ACollection: IJclIntfCollection); procedure Subtract(const ACollection: IJclIntfCollection); procedure Union(const ACollection: IJclIntfCollection); end; IJclAnsiStrSet = interface(IJclAnsiStrCollection) ['{72204D85-2B68-4914-B9F2-09E5180C12E9}'] procedure Intersect(const ACollection: IJclAnsiStrCollection); procedure Subtract(const ACollection: IJclAnsiStrCollection); procedure Union(const ACollection: IJclAnsiStrCollection); end; IJclWideStrSet = interface(IJclWideStrCollection) ['{08009E0A-ABDD-46AB-8CEE-407D4723E17C}'] procedure Intersect(const ACollection: IJclWideStrCollection); procedure Subtract(const ACollection: IJclWideStrCollection); procedure Union(const ACollection: IJclWideStrCollection); end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrSet = interface(IJclUnicodeStrCollection) ['{440E9BCB-341F-40B6-8AED-479B2E98C92A}'] procedure Intersect(const ACollection: IJclUnicodeStrCollection); procedure Subtract(const ACollection: IJclUnicodeStrCollection); procedure Union(const ACollection: IJclUnicodeStrCollection); end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrSet = IJclAnsiStrSet; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrSet = IJclWideStrSet; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrSet = IJclUnicodeStrSet; {$ENDIF CONTAINER_UNICODESTR} IJclSingleSet = interface(IJclSingleCollection) ['{36E34A78-6A29-4503-97D5-4BF53538CEC0}'] procedure Intersect(const ACollection: IJclSingleCollection); procedure Subtract(const ACollection: IJclSingleCollection); procedure Union(const ACollection: IJclSingleCollection); end; IJclDoubleSet = interface(IJclDoubleCollection) ['{4E1E4847-E934-4811-A26C-5FC8E772A623}'] procedure Intersect(const ACollection: IJclDoubleCollection); procedure Subtract(const ACollection: IJclDoubleCollection); procedure Union(const ACollection: IJclDoubleCollection); end; IJclExtendedSet = interface(IJclExtendedCollection) ['{3B9CF52D-1C49-4388-A7B3-9BEE1821FFD4}'] procedure Intersect(const ACollection: IJclExtendedCollection); procedure Subtract(const ACollection: IJclExtendedCollection); procedure Union(const ACollection: IJclExtendedCollection); end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatSet = IJclExtendedSet; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatSet = IJclDoubleSet; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatSet = IJclSingleSet; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerSet = interface(IJclIntegerCollection) ['{5E4D29AF-F508-465B-9008-D11FF82F25FE}'] procedure Intersect(const ACollection: IJclIntegerCollection); procedure Subtract(const ACollection: IJclIntegerCollection); procedure Union(const ACollection: IJclIntegerCollection); end; IJclCardinalSet = interface(IJclCardinalCollection) ['{09858637-CE8F-42E6-97E0-2786CD68387B}'] procedure Intersect(const ACollection: IJclCardinalCollection); procedure Subtract(const ACollection: IJclCardinalCollection); procedure Union(const ACollection: IJclCardinalCollection); end; IJclInt64Set = interface(IJclInt64Collection) ['{ACB3127A-48EE-4F9F-B988-6AE9057780E9}'] procedure Intersect(const ACollection: IJclInt64Collection); procedure Subtract(const ACollection: IJclInt64Collection); procedure Union(const ACollection: IJclInt64Collection); end; IJclPtrSet = interface(IJclPtrCollection) ['{26717C68-4F83-4CCB-973A-7324FBD09632}'] procedure Intersect(const ACollection: IJclPtrCollection); procedure Subtract(const ACollection: IJclPtrCollection); procedure Union(const ACollection: IJclPtrCollection); end; IJclSet = interface(IJclCollection) ['{0B7CDB90-8588-4260-A54C-D87101C669EA}'] procedure Intersect(const ACollection: IJclCollection); procedure Subtract(const ACollection: IJclCollection); procedure Union(const ACollection: IJclCollection); end; {$IFDEF SUPPORTS_GENERICS} IJclSet = interface(IJclCollection) ['{0B7CDB90-8588-4260-A54C-D87101C669EA}'] procedure Intersect(const ACollection: IJclCollection); procedure Subtract(const ACollection: IJclCollection); procedure Union(const ACollection: IJclCollection); end; {$ENDIF SUPPORTS_GENERICS} TJclTraverseOrder = (toPreOrder, toOrder, toPostOrder); IJclIntfTree = interface(IJclIntfCollection) ['{5A21688F-113D-41B4-A17C-54BDB0BD6559}'] function GetRoot: IJclIntfTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclIntfTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclAnsiStrTree = interface(IJclAnsiStrCollection) ['{1E1896C0-0497-47DF-83AF-A9422084636C}'] function GetRoot: IJclAnsiStrTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclAnsiStrTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclWideStrTree = interface(IJclWideStrCollection) ['{E325615A-7A20-4788-87FA-9051002CCD91}'] function GetRoot: IJclWideStrTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclWideStrTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrTree = interface(IJclUnicodeStrCollection) ['{A378BC36-1FB1-4330-A335-037DD370E81B}'] function GetRoot: IJclUnicodeStrTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclUnicodeStrTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrTree = IJclAnsiStrTree; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrTree = IJclWideStrTree; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrTree = IJclUnicodeStrTree; {$ENDIF CONTAINER_UNICODESTR} IJclSingleTree = interface(IJclSingleCollection) ['{A90A51BC-EBD7-40D3-B0A0-C9987E7A83D0}'] function GetRoot: IJclSingleTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclSingleTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclDoubleTree = interface(IJclDoubleCollection) ['{69DA85B1-A0DD-407B-B5CF-5EB7C6D4B82D}'] function GetRoot: IJclDoubleTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclDoubleTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclExtendedTree = interface(IJclExtendedCollection) ['{9ACCCAFD-B617-43DC-AAF9-916BE324A17E}'] function GetRoot: IJclExtendedTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclExtendedTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatTree = IJclExtendedTree; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatTree = IJclDoubleTree; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatTree = IJclSingleTree; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerTree = interface(IJclIntegerCollection) ['{40A6F934-E5F3-4C74-AC02-227035C8C3C6}'] function GetRoot: IJclIntegerTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclIntegerTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclCardinalTree = interface(IJclCardinalCollection) ['{6C76C668-50C8-42A2-B72B-79BF102E270D}'] function GetRoot: IJclCardinalTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclCardinalTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclInt64Tree = interface(IJclInt64Collection) ['{1925B973-8B75-4A79-A993-DF2598FF19BE}'] function GetRoot: IJclInt64TreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclInt64TreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclPtrTree = interface(IJclPtrCollection) ['{2C1ACA3E-3F23-4E3C-984D-151CF9776E14}'] function GetRoot: IJclPtrTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclPtrTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; IJclTree = interface(IJclCollection) ['{B0C658CC-FEF5-4178-A4C5-442C0DEDE207}'] function GetRoot: IJclTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; {$IFDEF SUPPORTS_GENERICS} IJclTree = interface(IJclCollection) ['{3F963AB5-5A75-41F9-A21B-7E7FB541A459}'] function GetRoot: IJclTreeIterator; function GetTraverseOrder: TJclTraverseOrder; procedure SetTraverseOrder(Value: TJclTraverseOrder); property Root: IJclTreeIterator read GetRoot; property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfIntfMap = interface(IJclContainer) ['{01D05399-4A05-4F3E-92F4-0C236BE77019}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: IInterface): IInterface; function GetValue(const Key: IInterface): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfIntfMap): Boolean; procedure PutAll(const AMap: IJclIntfIntfMap); procedure PutValue(const Key, Value: IInterface); function Remove(const Key: IInterface): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: IInterface]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; (*IJclMultiIntfIntfMap = interface(IJclIntfIntfMap) ['{497775A5-D3F1-49FC-A641-15CC9E77F3D0}'] function GetValues(const Key: IInterface): IJclIntfIterator; function Count(const Key: IInterface): Integer; end;*) IJclAnsiStrIntfMap = interface(IJclAnsiStrContainer) ['{A4788A96-281A-4924-AA24-03776DDAAD8A}'] procedure Clear; function ContainsKey(const Key: AnsiString): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: AnsiString): IInterface; function GetValue(const Key: AnsiString): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): AnsiString; function KeySet: IJclAnsiStrSet; function MapEquals(const AMap: IJclAnsiStrIntfMap): Boolean; procedure PutAll(const AMap: IJclAnsiStrIntfMap); procedure PutValue(const Key: AnsiString; const Value: IInterface); function Remove(const Key: AnsiString): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: AnsiString]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclWideStrIntfMap = interface(IJclWideStrContainer) ['{C959AB76-9CF0-4C2C-A2C6-8A1846563FAF}'] procedure Clear; function ContainsKey(const Key: WideString): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: WideString): IInterface; function GetValue(const Key: WideString): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): WideString; function KeySet: IJclWideStrSet; function MapEquals(const AMap: IJclWideStrIntfMap): Boolean; procedure PutAll(const AMap: IJclWideStrIntfMap); procedure PutValue(const Key: WideString; const Value: IInterface); function Remove(const Key: WideString): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: WideString]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrIntfMap = interface(IJclUnicodeStrContainer) ['{C83D4F5E-8E66-41E9-83F6-338B44F24BE6}'] procedure Clear; function ContainsKey(const Key: UnicodeString): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: UnicodeString): IInterface; function GetValue(const Key: UnicodeString): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): UnicodeString; function KeySet: IJclUnicodeStrSet; function MapEquals(const AMap: IJclUnicodeStrIntfMap): Boolean; procedure PutAll(const AMap: IJclUnicodeStrIntfMap); procedure PutValue(const Key: UnicodeString; const Value: IInterface); function Remove(const Key: UnicodeString): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: UnicodeString]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrIntfMap = IJclAnsiStrIntfMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrIntfMap = IJclWideStrIntfMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrIntfMap = IJclUnicodeStrIntfMap; {$ENDIF CONTAINER_UNICODESTR} IJclIntfAnsiStrMap = interface(IJclAnsiStrContainer) ['{B10E324A-1D98-42FF-B9B4-7F99044591B2}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: AnsiString): Boolean; function Extract(const Key: IInterface): AnsiString; function GetValue(const Key: IInterface): AnsiString; function IsEmpty: Boolean; function KeyOfValue(const Value: AnsiString): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfAnsiStrMap): Boolean; procedure PutAll(const AMap: IJclIntfAnsiStrMap); procedure PutValue(const Key: IInterface; const Value: AnsiString); function Remove(const Key: IInterface): AnsiString; function Size: Integer; function Values: IJclAnsiStrCollection; property Items[const Key: IInterface]: AnsiString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfWideStrMap = interface(IJclWideStrContainer) ['{D9FD7887-B840-4636-8A8F-E586663E332C}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: WideString): Boolean; function Extract(const Key: IInterface): WideString; function GetValue(const Key: IInterface): WideString; function IsEmpty: Boolean; function KeyOfValue(const Value: WideString): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfWideStrMap): Boolean; procedure PutAll(const AMap: IJclIntfWideStrMap); procedure PutValue(const Key: IInterface; const Value: WideString); function Remove(const Key: IInterface): WideString; function Size: Integer; function Values: IJclWideStrCollection; property Items[const Key: IInterface]: WideString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclIntfUnicodeStrMap = interface(IJclUnicodeStrContainer) ['{40F8B873-B763-4A3C-8EC4-31DB3404BF73}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: UnicodeString): Boolean; function Extract(const Key: IInterface): UnicodeString; function GetValue(const Key: IInterface): UnicodeString; function IsEmpty: Boolean; function KeyOfValue(const Value: UnicodeString): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfUnicodeStrMap): Boolean; procedure PutAll(const AMap: IJclIntfUnicodeStrMap); procedure PutValue(const Key: IInterface; const Value: UnicodeString); function Remove(const Key: IInterface): UnicodeString; function Size: Integer; function Values: IJclUnicodeStrCollection; property Items[const Key: IInterface]: UnicodeString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclIntfStrMap = IJclIntfAnsiStrMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclIntfStrMap = IJclIntfWideStrMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclIntfStrMap = IJclIntfUnicodeStrMap; {$ENDIF CONTAINER_UNICODESTR} IJclAnsiStrAnsiStrMap = interface(IJclAnsiStrContainer) ['{A4788A96-281A-4924-AA24-03776DDAAD8A}'] procedure Clear; function ContainsKey(const Key: AnsiString): Boolean; function ContainsValue(const Value: AnsiString): Boolean; function Extract(const Key: AnsiString): AnsiString; function GetValue(const Key: AnsiString): AnsiString; function IsEmpty: Boolean; function KeyOfValue(const Value: AnsiString): AnsiString; function KeySet: IJclAnsiStrSet; function MapEquals(const AMap: IJclAnsiStrAnsiStrMap): Boolean; procedure PutAll(const AMap: IJclAnsiStrAnsiStrMap); procedure PutValue(const Key, Value: AnsiString); function Remove(const Key: AnsiString): AnsiString; function Size: Integer; function Values: IJclAnsiStrCollection; property Items[const Key: AnsiString]: AnsiString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclWideStrWideStrMap = interface(IJclWideStrContainer) ['{8E8D2735-C4FB-4F00-8802-B2102BCE3644}'] procedure Clear; function ContainsKey(const Key: WideString): Boolean; function ContainsValue(const Value: WideString): Boolean; function Extract(const Key: WideString): WideString; function GetValue(const Key: WideString): WideString; function IsEmpty: Boolean; function KeyOfValue(const Value: WideString): WideString; function KeySet: IJclWideStrSet; function MapEquals(const AMap: IJclWideStrWideStrMap): Boolean; procedure PutAll(const AMap: IJclWideStrWideStrMap); procedure PutValue(const Key, Value: WideString); function Remove(const Key: WideString): WideString; function Size: Integer; function Values: IJclWideStrCollection; property Items[const Key: WideString]: WideString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrUnicodeStrMap = interface(IJclUnicodeStrContainer) ['{557E1CBD-06AC-41C2-BAED-253709CBD0AE}'] procedure Clear; function ContainsKey(const Key: UnicodeString): Boolean; function ContainsValue(const Value: UnicodeString): Boolean; function Extract(const Key: UnicodeString): UnicodeString; function GetValue(const Key: UnicodeString): UnicodeString; function IsEmpty: Boolean; function KeyOfValue(const Value: UnicodeString): UnicodeString; function KeySet: IJclUnicodeStrSet; function MapEquals(const AMap: IJclUnicodeStrUnicodeStrMap): Boolean; procedure PutAll(const AMap: IJclUnicodeStrUnicodeStrMap); procedure PutValue(const Key, Value: UnicodeString); function Remove(const Key: UnicodeString): UnicodeString; function Size: Integer; function Values: IJclUnicodeStrCollection; property Items[const Key: UnicodeString]: UnicodeString read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrStrMap = IJclAnsiStrAnsiStrMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrStrMap = IJclWideStrWideStrMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrStrMap = IJclUnicodeStrUnicodeStrMap; {$ENDIF CONTAINER_UNICODESTR} IJclSingleIntfMap = interface(IJclSingleContainer) ['{5F5E9E8B-E648-450B-B6C0-0EC65CC2D0BA}'] procedure Clear; function ContainsKey(const Key: Single): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: Single): IInterface; function GetValue(const Key: Single): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Single; function KeySet: IJclSingleSet; function MapEquals(const AMap: IJclSingleIntfMap): Boolean; procedure PutAll(const AMap: IJclSingleIntfMap); procedure PutValue(const Key: Single; const Value: IInterface); function Remove(const Key: Single): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: Single]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfSingleMap = interface(IJclSingleContainer) ['{234D1618-FB0E-46F5-A70D-5106163A90F7}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: Single): Boolean; function Extract(const Key: IInterface): Single; function GetValue(const Key: IInterface): Single; function IsEmpty: Boolean; function KeyOfValue(const Value: Single): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfSingleMap): Boolean; procedure PutAll(const AMap: IJclIntfSingleMap); procedure PutValue(const Key: IInterface; const Value: Single); function Remove(const Key: IInterface): Single; function Size: Integer; function Values: IJclSingleCollection; property Items[const Key: IInterface]: Single read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclSingleSingleMap = interface(IJclSingleContainer) ['{AEB0008F-F3CF-4055-A7F3-A330D312F03F}'] procedure Clear; function ContainsKey(const Key: Single): Boolean; function ContainsValue(const Value: Single): Boolean; function Extract(const Key: Single): Single; function GetValue(const Key: Single): Single; function IsEmpty: Boolean; function KeyOfValue(const Value: Single): Single; function KeySet: IJclSingleSet; function MapEquals(const AMap: IJclSingleSingleMap): Boolean; procedure PutAll(const AMap: IJclSingleSingleMap); procedure PutValue(const Key, Value: Single); function Remove(const Key: Single): Single; function Size: Integer; function Values: IJclSingleCollection; property Items[const Key: Single]: Single read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclDoubleIntfMap = interface(IJclDoubleContainer) ['{08968FFB-36C6-4FBA-BC09-3DCA2B5D7A50}'] procedure Clear; function ContainsKey(const Key: Double): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: Double): IInterface; function GetValue(const Key: Double): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Double; function KeySet: IJclDoubleSet; function MapEquals(const AMap: IJclDoubleIntfMap): Boolean; procedure PutAll(const AMap: IJclDoubleIntfMap); procedure PutValue(const Key: Double; const Value: IInterface); function Remove(const Key: Double): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: Double]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfDoubleMap = interface(IJclDoubleContainer) ['{B23DAF6A-6DC5-4DDD-835C-CD4633DDA010}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: Double): Boolean; function Extract(const Key: IInterface): Double; function GetValue(const Key: IInterface): Double; function IsEmpty: Boolean; function KeyOfValue(const Value: Double): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfDoubleMap): Boolean; procedure PutAll(const AMap: IJclIntfDoubleMap); procedure PutValue(const Key: IInterface; const Value: Double); function Remove(const Key: IInterface): Double; function Size: Integer; function Values: IJclDoubleCollection; property Items[const Key: IInterface]: Double read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclDoubleDoubleMap = interface(IJclDoubleContainer) ['{329A03B8-0B6B-4FE3-87C5-4B63447A5FFD}'] procedure Clear; function ContainsKey(const Key: Double): Boolean; function ContainsValue(const Value: Double): Boolean; function Extract(const Key: Double): Double; function GetValue(const Key: Double): Double; function IsEmpty: Boolean; function KeyOfValue(const Value: Double): Double; function KeySet: IJclDoubleSet; function MapEquals(const AMap: IJclDoubleDoubleMap): Boolean; procedure PutAll(const AMap: IJclDoubleDoubleMap); procedure PutValue(const Key, Value: Double); function Remove(const Key: Double): Double; function Size: Integer; function Values: IJclDoubleCollection; property Items[const Key: Double]: Double read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclExtendedIntfMap = interface(IJclExtendedContainer) ['{7C0731E0-C9AB-4378-B1B0-8CE3DD60AD41}'] procedure Clear; function ContainsKey(const Key: Extended): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: Extended): IInterface; function GetValue(const Key: Extended): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Extended; function KeySet: IJclExtendedSet; function MapEquals(const AMap: IJclExtendedIntfMap): Boolean; procedure PutAll(const AMap: IJclExtendedIntfMap); procedure PutValue(const Key: Extended; const Value: IInterface); function Remove(const Key: Extended): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: Extended]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfExtendedMap = interface(IJclExtendedContainer) ['{479FCE5A-2D8A-44EE-96BC-E8DA3187DBD8}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: Extended): Boolean; function Extract(const Key: IInterface): Extended; function GetValue(const Key: IInterface): Extended; function IsEmpty: Boolean; function KeyOfValue(const Value: Extended): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfExtendedMap): Boolean; procedure PutAll(const AMap: IJclIntfExtendedMap); procedure PutValue(const Key: IInterface; const Value: Extended); function Remove(const Key: IInterface): Extended; function Size: Integer; function Values: IJclExtendedCollection; property Items[const Key: IInterface]: Extended read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclExtendedExtendedMap = interface(IJclExtendedContainer) ['{962C2B09-8CF5-44E8-A21A-4A7DAFB72A11}'] procedure Clear; function ContainsKey(const Key: Extended): Boolean; function ContainsValue(const Value: Extended): Boolean; function Extract(const Key: Extended): Extended; function GetValue(const Key: Extended): Extended; function IsEmpty: Boolean; function KeyOfValue(const Value: Extended): Extended; function KeySet: IJclExtendedSet; function MapEquals(const AMap: IJclExtendedExtendedMap): Boolean; procedure PutAll(const AMap: IJclExtendedExtendedMap); procedure PutValue(const Key, Value: Extended); function Remove(const Key: Extended): Extended; function Size: Integer; function Values: IJclExtendedCollection; property Items[const Key: Extended]: Extended read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatIntfMap = IJclExtendedIntfMap; IJclIntfFloatMap = IJclIntfExtendedMap; IJclFloatFloatMap = IJclExtendedExtendedMap; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatIntfMap = IJclDoubleIntfMap; IJclIntfFloatMap = IJclIntfDoubleMap; IJclFloatFloatMap = IJclDoubleDoubleMap; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatIntfMap = IJclSingleIntfMap; IJclIntfFloatMap = IJclIntfSingleMap; IJclFloatFloatMap = IJclSingleSingleMap; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerIntfMap = interface(IJclContainer) ['{E535FE65-AC88-49D3-BEF2-FB30D92C2FA6}'] procedure Clear; function ContainsKey(Key: Integer): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(Key: Integer): IInterface; function GetValue(Key: Integer): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Integer; function KeySet: IJclIntegerSet; function MapEquals(const AMap: IJclIntegerIntfMap): Boolean; procedure PutAll(const AMap: IJclIntegerIntfMap); procedure PutValue(Key: Integer; const Value: IInterface); function Remove(Key: Integer): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[Key: Integer]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfIntegerMap = interface(IJclContainer) ['{E01DA012-BEE0-4259-8E30-0A7A1A87BED0}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(Value: Integer): Boolean; function Extract(const Key: IInterface): Integer; function GetValue(const Key: IInterface): Integer; function IsEmpty: Boolean; function KeyOfValue(Value: Integer): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfIntegerMap): Boolean; procedure PutAll(const AMap: IJclIntfIntegerMap); procedure PutValue(const Key: IInterface; Value: Integer); function Remove(const Key: IInterface): Integer; function Size: Integer; function Values: IJclIntegerCollection; property Items[const Key: IInterface]: Integer read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntegerIntegerMap = interface(IJclContainer) ['{23A46BC0-DF8D-4BD2-89D2-4DACF1EC73A1}'] procedure Clear; function ContainsKey(Key: Integer): Boolean; function ContainsValue(Value: Integer): Boolean; function Extract(Key: Integer): Integer; function GetValue(Key: Integer): Integer; function IsEmpty: Boolean; function KeyOfValue(Value: Integer): Integer; function KeySet: IJclIntegerSet; function MapEquals(const AMap: IJclIntegerIntegerMap): Boolean; procedure PutAll(const AMap: IJclIntegerIntegerMap); procedure PutValue(Key, Value: Integer); function Remove(Key: Integer): Integer; function Size: Integer; function Values: IJclIntegerCollection; property Items[Key: Integer]: Integer read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclCardinalIntfMap = interface(IJclContainer) ['{80D39FB1-0D10-49CE-8AF3-1CD98A1D4F6C}'] procedure Clear; function ContainsKey(Key: Cardinal): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(Key: Cardinal): IInterface; function GetValue(Key: Cardinal): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Cardinal; function KeySet: IJclCardinalSet; function MapEquals(const AMap: IJclCardinalIntfMap): Boolean; procedure PutAll(const AMap: IJclCardinalIntfMap); procedure PutValue(Key: Cardinal; const Value: IInterface); function Remove(Key: Cardinal): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[Key: Cardinal]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfCardinalMap = interface(IJclContainer) ['{E1A724AB-6BDA-45F0-AE21-5E7E789A751B}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(Value: Cardinal): Boolean; function Extract(const Key: IInterface): Cardinal; function GetValue(const Key: IInterface): Cardinal; function IsEmpty: Boolean; function KeyOfValue(Value: Cardinal): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfCardinalMap): Boolean; procedure PutAll(const AMap: IJclIntfCardinalMap); procedure PutValue(const Key: IInterface; Value: Cardinal); function Remove(const Key: IInterface): Cardinal; function Size: Integer; function Values: IJclCardinalCollection; property Items[const Key: IInterface]: Cardinal read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclCardinalCardinalMap = interface(IJclContainer) ['{1CD3F54C-F92F-4AF4-82B2-0829C08AA83B}'] procedure Clear; function ContainsKey(Key: Cardinal): Boolean; function ContainsValue(Value: Cardinal): Boolean; function Extract(Key: Cardinal): Cardinal; function GetValue(Key: Cardinal): Cardinal; function IsEmpty: Boolean; function KeyOfValue(Value: Cardinal): Cardinal; function KeySet: IJclCardinalSet; function MapEquals(const AMap: IJclCardinalCardinalMap): Boolean; procedure PutAll(const AMap: IJclCardinalCardinalMap); procedure PutValue(Key, Value: Cardinal); function Remove(Key: Cardinal): Cardinal; function Size: Integer; function Values: IJclCardinalCollection; property Items[Key: Cardinal]: Cardinal read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclInt64IntfMap = interface(IJclContainer) ['{B64FB2D1-8D45-4367-B950-98D3D05AC6A0}'] procedure Clear; function ContainsKey(const Key: Int64): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(const Key: Int64): IInterface; function GetValue(const Key: Int64): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Int64; function KeySet: IJclInt64Set; function MapEquals(const AMap: IJclInt64IntfMap): Boolean; procedure PutAll(const AMap: IJclInt64IntfMap); procedure PutValue(const Key: Int64; const Value: IInterface); function Remove(const Key: Int64): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[const Key: Int64]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfInt64Map = interface(IJclContainer) ['{9886BEE3-D15B-45D2-A3FB-4D3A0ADEC8AC}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(const Value: Int64): Boolean; function Extract(const Key: IInterface): Int64; function GetValue(const Key: IInterface): Int64; function IsEmpty: Boolean; function KeyOfValue(const Value: Int64): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfInt64Map): Boolean; procedure PutAll(const AMap: IJclIntfInt64Map); procedure PutValue(const Key: IInterface; const Value: Int64); function Remove(const Key: IInterface): Int64; function Size: Integer; function Values: IJclInt64Collection; property Items[const Key: IInterface]: Int64 read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclInt64Int64Map = interface(IJclContainer) ['{EF2A2726-408A-4984-9971-DDC1B6EFC9F5}'] procedure Clear; function ContainsKey(const Key: Int64): Boolean; function ContainsValue(const Value: Int64): Boolean; function Extract(const Key: Int64): Int64; function GetValue(const Key: Int64): Int64; function IsEmpty: Boolean; function KeyOfValue(const Value: Int64): Int64; function KeySet: IJclInt64Set; function MapEquals(const AMap: IJclInt64Int64Map): Boolean; procedure PutAll(const AMap: IJclInt64Int64Map); procedure PutValue(const Key, Value: Int64); function Remove(const Key: Int64): Int64; function Size: Integer; function Values: IJclInt64Collection; property Items[const Key: Int64]: Int64 read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclPtrIntfMap = interface(IJclContainer) ['{B7C48542-39A0-453F-8F03-8C8CFAB0DCCF}'] procedure Clear; function ContainsKey(Key: Pointer): Boolean; function ContainsValue(const Value: IInterface): Boolean; function Extract(Key: Pointer): IInterface; function GetValue(Key: Pointer): IInterface; function IsEmpty: Boolean; function KeyOfValue(const Value: IInterface): Pointer; function KeySet: IJclPtrSet; function MapEquals(const AMap: IJclPtrIntfMap): Boolean; procedure PutAll(const AMap: IJclPtrIntfMap); procedure PutValue(Key: Pointer; const Value: IInterface); function Remove(Key: Pointer): IInterface; function Size: Integer; function Values: IJclIntfCollection; property Items[Key: Pointer]: IInterface read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfPtrMap = interface(IJclContainer) ['{DA51D823-58DB-4D7C-9B8E-07E0FD560B57}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(Value: Pointer): Boolean; function Extract(const Key: IInterface): Pointer; function GetValue(const Key: IInterface): Pointer; function IsEmpty: Boolean; function KeyOfValue(Value: Pointer): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfPtrMap): Boolean; procedure PutAll(const AMap: IJclIntfPtrMap); procedure PutValue(const Key: IInterface; Value: Pointer); function Remove(const Key: IInterface): Pointer; function Size: Integer; function Values: IJclPtrCollection; property Items[const Key: IInterface]: Pointer read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclPtrPtrMap = interface(IJclContainer) ['{1200CB0F-A766-443F-9030-5A804C11B798}'] procedure Clear; function ContainsKey(Key: Pointer): Boolean; function ContainsValue(Value: Pointer): Boolean; function Extract(Key: Pointer): Pointer; function GetValue(Key: Pointer): Pointer; function IsEmpty: Boolean; function KeyOfValue(Value: Pointer): Pointer; function KeySet: IJclPtrSet; function MapEquals(const AMap: IJclPtrPtrMap): Boolean; procedure PutAll(const AMap: IJclPtrPtrMap); procedure PutValue(Key, Value: Pointer); function Remove(Key: Pointer): Pointer; function Size: Integer; function Values: IJclPtrCollection; property Items[Key: Pointer]: Pointer read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclIntfMap = interface(IJclContainer) ['{C70570C6-EDDB-47B4-9003-C637B486731D}'] procedure Clear; function ContainsKey(const Key: IInterface): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: IInterface): TObject; function GetValue(const Key: IInterface): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): IInterface; function KeySet: IJclIntfSet; function MapEquals(const AMap: IJclIntfMap): Boolean; procedure PutAll(const AMap: IJclIntfMap); procedure PutValue(const Key: IInterface; Value: TObject); function Remove(const Key: IInterface): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: IInterface]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclAnsiStrMap = interface(IJclAnsiStrContainer) ['{A7D0A882-6952-496D-A258-23D47DDCCBC4}'] procedure Clear; function ContainsKey(const Key: AnsiString): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: AnsiString): TObject; function GetValue(const Key: AnsiString): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): AnsiString; function KeySet: IJclAnsiStrSet; function MapEquals(const AMap: IJclAnsiStrMap): Boolean; procedure PutAll(const AMap: IJclAnsiStrMap); procedure PutValue(const Key: AnsiString; Value: TObject); function Remove(const Key: AnsiString): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: AnsiString]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclWideStrMap = interface(IJclWideStrContainer) ['{ACE8E6B4-5A56-4753-A2C6-BAE195A56B63}'] procedure Clear; function ContainsKey(const Key: WideString): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: WideString): TObject; function GetValue(const Key: WideString): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): WideString; function KeySet: IJclWideStrSet; function MapEquals(const AMap: IJclWideStrMap): Boolean; procedure PutAll(const AMap: IJclWideStrMap); procedure PutValue(const Key: WideString; Value: TObject); function Remove(const Key: WideString): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: WideString]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrMap = interface(IJclUnicodeStrContainer) ['{4328E033-9B92-40C6-873D-A6982CFC2B95}'] procedure Clear; function ContainsKey(const Key: UnicodeString): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: UnicodeString): TObject; function GetValue(const Key: UnicodeString): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): UnicodeString; function KeySet: IJclUnicodeStrSet; function MapEquals(const AMap: IJclUnicodeStrMap): Boolean; procedure PutAll(const AMap: IJclUnicodeStrMap); procedure PutValue(const Key: UnicodeString; Value: TObject); function Remove(const Key: UnicodeString): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: UnicodeString]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrMap = IJclAnsiStrMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrMap = IJclWideStrMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrMap = IJclUnicodeStrMap; {$ENDIF CONTAINER_UNICODESTR} IJclSingleMap = interface(IJclSingleContainer) ['{C501920A-F252-4F94-B142-1F05AE06C3D2}'] procedure Clear; function ContainsKey(const Key: Single): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: Single): TObject; function GetValue(const Key: Single): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Single; function KeySet: IJclSingleSet; function MapEquals(const AMap: IJclSingleMap): Boolean; procedure PutAll(const AMap: IJclSingleMap); procedure PutValue(const Key: Single; Value: TObject); function Remove(const Key: Single): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: Single]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclDoubleMap = interface(IJclDoubleContainer) ['{B1B994AC-49C9-418B-814B-43BAD706F355}'] procedure Clear; function ContainsKey(const Key: Double): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: Double): TObject; function GetValue(const Key: Double): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Double; function KeySet: IJclDoubleSet; function MapEquals(const AMap: IJclDoubleMap): Boolean; procedure PutAll(const AMap: IJclDoubleMap); procedure PutValue(const Key: Double; Value: TObject); function Remove(const Key: Double): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: Double]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclExtendedMap = interface(IJclExtendedContainer) ['{3BCC8C87-A186-45E8-9B37-0B8E85120434}'] procedure Clear; function ContainsKey(const Key: Extended): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: Extended): TObject; function GetValue(const Key: Extended): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Extended; function KeySet: IJclExtendedSet; function MapEquals(const AMap: IJclExtendedMap): Boolean; procedure PutAll(const AMap: IJclExtendedMap); procedure PutValue(const Key: Extended; Value: TObject); function Remove(const Key: Extended): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: Extended]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatMap = IJclExtendedMap; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatMap = IJclDoubleMap; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatMap = IJclSingleMap; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerMap = interface(IJclContainer) ['{D6FA5D64-A4AF-4419-9981-56BA79BF8770}'] procedure Clear; function ContainsKey(Key: Integer): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(Key: Integer): TObject; function GetValue(Key: Integer): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Integer; function KeySet: IJclIntegerSet; function MapEquals(const AMap: IJclIntegerMap): Boolean; procedure PutAll(const AMap: IJclIntegerMap); procedure PutValue(Key: Integer; Value: TObject); function Remove(Key: Integer): TObject; function Size: Integer; function Values: IJclCollection; property Items[Key: Integer]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclCardinalMap = interface(IJclContainer) ['{A2F92F4F-11CB-4DB2-932F-F10A14237126}'] procedure Clear; function ContainsKey(Key: Cardinal): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(Key: Cardinal): TObject; function GetValue(Key: Cardinal): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Cardinal; function KeySet: IJclCardinalSet; function MapEquals(const AMap: IJclCardinalMap): Boolean; procedure PutAll(const AMap: IJclCardinalMap); procedure PutValue(Key: Cardinal; Value: TObject); function Remove(Key: Cardinal): TObject; function Size: Integer; function Values: IJclCollection; property Items[Key: Cardinal]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclInt64Map = interface(IJclContainer) ['{4C720CE0-7A7C-41D5-BFC1-8D58A47E648F}'] procedure Clear; function ContainsKey(const Key: Int64): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(const Key: Int64): TObject; function GetValue(const Key: Int64): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Int64; function KeySet: IJclInt64Set; function MapEquals(const AMap: IJclInt64Map): Boolean; procedure PutAll(const AMap: IJclInt64Map); procedure PutValue(const Key: Int64; Value: TObject); function Remove(const Key: Int64): TObject; function Size: Integer; function Values: IJclCollection; property Items[const Key: Int64]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclPtrMap = interface(IJclContainer) ['{2FE029A9-026C-487D-8204-AD3A28BD2FA2}'] procedure Clear; function ContainsKey(Key: Pointer): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(Key: Pointer): TObject; function GetValue(Key: Pointer): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): Pointer; function KeySet: IJclPtrSet; function MapEquals(const AMap: IJclPtrMap): Boolean; procedure PutAll(const AMap: IJclPtrMap); procedure PutValue(Key: Pointer; Value: TObject); function Remove(Key: Pointer): TObject; function Size: Integer; function Values: IJclCollection; property Items[Key: Pointer]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; IJclMap = interface(IJclContainer) ['{A7D0A882-6952-496D-A258-23D47DDCCBC4}'] procedure Clear; function ContainsKey(Key: TObject): Boolean; function ContainsValue(Value: TObject): Boolean; function Extract(Key: TObject): TObject; function GetValue(Key: TObject): TObject; function IsEmpty: Boolean; function KeyOfValue(Value: TObject): TObject; function KeySet: IJclSet; function MapEquals(const AMap: IJclMap): Boolean; procedure PutAll(const AMap: IJclMap); procedure PutValue(Key, Value: TObject); function Remove(Key: TObject): TObject; function Size: Integer; function Values: IJclCollection; property Items[Key: TObject]: TObject read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$IFDEF SUPPORTS_GENERICS} IHashable = interface function GetHashCode: Integer; end; IJclMap = interface(IJclContainer) ['{22624C43-4828-4A1E-BDD4-4A7FE59AE135}'] procedure Clear; function ContainsKey(const Key: TKey): Boolean; function ContainsValue(const Value: TValue): Boolean; function Extract(const Key: TKey): TValue; function GetValue(const Key: TKey): TValue; function IsEmpty: Boolean; function KeyOfValue(const Value: TValue): TKey; function KeySet: IJclSet; function MapEquals(const AMap: IJclMap): Boolean; procedure PutAll(const AMap: IJclMap); procedure PutValue(const Key: TKey; const Value: TValue); function Remove(const Key: TKey): TValue; function Size: Integer; function Values: IJclCollection; property Items[const Key: TKey]: TValue read GetValue write PutValue; {$IFNDEF BUGGY_DEFAULT_INDEXED_PROP} default; {$ENDIF ~BUGGY_DEFAULT_INDEXED_PROP} end; {$ENDIF SUPPORTS_GENERICS} IJclIntfQueue = interface(IJclContainer) ['{B88756FE-5553-4106-957E-3E33120BFA99}'] procedure Clear; function Contains(const AInterface: IInterface): Boolean; function Dequeue: IInterface; function Empty: Boolean; function Enqueue(const AInterface: IInterface): Boolean; function Peek: IInterface; function Size: Integer; end; IJclAnsiStrQueue = interface(IJclAnsiStrContainer) ['{5BA0ED9A-5AF3-4F79-9D80-34FA7FF15D1F}'] procedure Clear; function Contains(const AString: AnsiString): Boolean; function Dequeue: AnsiString; function Empty: Boolean; function Enqueue(const AString: AnsiString): Boolean; function Peek: AnsiString; function Size: Integer; end; IJclWideStrQueue = interface(IJclWideStrContainer) ['{058BBFB7-E9B9-44B5-B676-D5B5B9A79BEF}'] procedure Clear; function Contains(const AString: WideString): Boolean; function Dequeue: WideString; function Empty: Boolean; function Enqueue(const AString: WideString): Boolean; function Peek: WideString; function Size: Integer; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrQueue = interface(IJclUnicodeStrContainer) ['{94A09E52-424A-486E-846B-9C2C52DC3A8F}'] procedure Clear; function Contains(const AString: UnicodeString): Boolean; function Dequeue: UnicodeString; function Empty: Boolean; function Enqueue(const AString: UnicodeString): Boolean; function Peek: UnicodeString; function Size: Integer; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrQueue = IJclAnsiStrQueue; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrQueue = IJclWideStrQueue; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrQueue = IJclUnicodeStrQueue; {$ENDIF CONTAINER_UNICODESTR} IJclSingleQueue = interface(IJclSingleContainer) ['{67D74314-9967-4C99-8A48-6E0ADD73EC29}'] procedure Clear; function Contains(const AValue: Single): Boolean; function Dequeue: Single; function Empty: Boolean; function Enqueue(const AValue: Single): Boolean; function Peek: Single; function Size: Integer; end; IJclDoubleQueue = interface(IJclDoubleContainer) ['{FA1B6D25-3456-4963-87DC-5A2E53B2963F}'] procedure Clear; function Contains(const AValue: Double): Boolean; function Dequeue: Double; function Empty: Boolean; function Enqueue(const AValue: Double): Boolean; function Peek: Double; function Size: Integer; end; IJclExtendedQueue = interface(IJclExtendedContainer) ['{76F349C0-7681-4BE8-9E94-280C962780D8}'] procedure Clear; function Contains(const AValue: Extended): Boolean; function Dequeue: Extended; function Empty: Boolean; function Enqueue(const AValue: Extended): Boolean; function Peek: Extended; function Size: Integer; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatQueue = IJclExtendedQueue; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatQueue = IJclDoubleQueue; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatQueue = IJclSingleQueue; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerQueue = interface(IJclContainer) ['{4C4E174E-5D19-44CE-A248-B5589A9B68DF}'] procedure Clear; function Contains(AValue: Integer): Boolean; function Dequeue: Integer; function Empty: Boolean; function Enqueue(AValue: Integer): Boolean; function Peek: Integer; function Size: Integer; end; IJclCardinalQueue = interface(IJclContainer) ['{CC1D4358-E259-4FB0-BA83-5180A0F8A6C0}'] procedure Clear; function Contains(AValue: Cardinal): Boolean; function Dequeue: Cardinal; function Empty: Boolean; function Enqueue(AValue: Cardinal): Boolean; function Peek: Cardinal; function Size: Integer; end; IJclInt64Queue = interface(IJclContainer) ['{96B620BB-9A90-43D5-82A7-2D818A11C8E1}'] procedure Clear; function Contains(const AValue: Int64): Boolean; function Dequeue: Int64; function Empty: Boolean; function Enqueue(const AValue: Int64): Boolean; function Peek: Int64; function Size: Integer; end; IJclPtrQueue = interface(IJclContainer) ['{1052DD37-3035-4C44-A793-54AC4B9C0B29}'] procedure Clear; function Contains(APtr: Pointer): Boolean; function Dequeue: Pointer; function Empty: Boolean; function Enqueue(APtr: Pointer): Boolean; function Peek: Pointer; function Size: Integer; end; IJclQueue = interface(IJclContainer) ['{7D0F9DE4-71EA-46EF-B879-88BCFD5D9610}'] procedure Clear; function Contains(AObject: TObject): Boolean; function Dequeue: TObject; function Empty: Boolean; function Enqueue(AObject: TObject): Boolean; function Peek: TObject; function Size: Integer; end; {$IFDEF SUPPORTS_GENERICS} IJclQueue = interface(IJclContainer) ['{16AB909F-2194-46CF-BD89-B4207AC0CAB8}'] procedure Clear; function Contains(const AItem: T): Boolean; function Dequeue: T; function Empty: Boolean; function Enqueue(const AItem: T): Boolean; function Peek: T; function Size: Integer; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfIntfSortedMap = interface(IJclIntfIntfMap) ['{265A6EB2-4BB3-459F-8813-360FD32A4971}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfIntfSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfIntfSortedMap; function TailMap(const FromKey: IInterface): IJclIntfIntfSortedMap; end; IJclAnsiStrIntfSortedMap = interface(IJclAnsiStrIntfMap) ['{706D1C91-5416-4FDC-B6B1-F4C1E8CFCD38}'] function FirstKey: AnsiString; function HeadMap(const ToKey: AnsiString): IJclAnsiStrIntfSortedMap; function LastKey: AnsiString; function SubMap(const FromKey, ToKey: AnsiString): IJclAnsiStrIntfSortedMap; function TailMap(const FromKey: AnsiString): IJclAnsiStrIntfSortedMap; end; IJclWideStrIntfSortedMap = interface(IJclWideStrIntfMap) ['{299FDCFD-2DB7-4D64-BF18-EE3668316430}'] function FirstKey: WideString; function HeadMap(const ToKey: WideString): IJclWideStrIntfSortedMap; function LastKey: WideString; function SubMap(const FromKey, ToKey: WideString): IJclWideStrIntfSortedMap; function TailMap(const FromKey: WideString): IJclWideStrIntfSortedMap; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrIntfSortedMap = interface(IJclUnicodeStrIntfMap) ['{25FDE916-730D-449A-BA29-852D8A0470B6}'] function FirstKey: UnicodeString; function HeadMap(const ToKey: UnicodeString): IJclUnicodeStrIntfSortedMap; function LastKey: UnicodeString; function SubMap(const FromKey, ToKey: UnicodeString): IJclUnicodeStrIntfSortedMap; function TailMap(const FromKey: UnicodeString): IJclUnicodeStrIntfSortedMap; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrIntfSortedMap = IJclAnsiStrIntfSortedMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrIntfSortedMap = IJclWideStrIntfSortedMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrIntfSortedMap = IJclUnicodeStrIntfSortedMap; {$ENDIF CONTAINER_UNICODESTR} IJclIntfAnsiStrSortedMap = interface(IJclIntfAnsiStrMap) ['{96E6AC5E-8C40-4795-9C8A-CFD098B58680}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfAnsiStrSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfAnsiStrSortedMap; function TailMap(const FromKey: IInterface): IJclIntfAnsiStrSortedMap; end; IJclIntfWideStrSortedMap = interface(IJclIntfWideStrMap) ['{FBE3AD2E-2781-4DC0-9E80-027027380E21}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfWideStrSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfWideStrSortedMap; function TailMap(const FromKey: IInterface): IJclIntfWideStrSortedMap; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclIntfUnicodeStrSortedMap = interface(IJclIntfUnicodeStrMap) ['{B0B0CB9B-268B-40D2-94A8-0B8B5BE2E1AC}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfUnicodeStrSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfUnicodeStrSortedMap; function TailMap(const FromKey: IInterface): IJclIntfUnicodeStrSortedMap; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclIntfStrSortedMap = IJclIntfAnsiStrSortedMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclIntfStrSortedMap = IJclIntfWideStrSortedMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclIntfStrSortedMap = IJclIntfUnicodeStrSortedMap; {$ENDIF CONTAINER_UNICODESTR} IJclAnsiStrAnsiStrSortedMap = interface(IJclAnsiStrAnsiStrMap) ['{4F457799-5D03-413D-A46C-067DC4200CC3}'] function FirstKey: AnsiString; function HeadMap(const ToKey: AnsiString): IJclAnsiStrAnsiStrSortedMap; function LastKey: AnsiString; function SubMap(const FromKey, ToKey: AnsiString): IJclAnsiStrAnsiStrSortedMap; function TailMap(const FromKey: AnsiString): IJclAnsiStrAnsiStrSortedMap; end; IJclWideStrWideStrSortedMap = interface(IJclWideStrWideStrMap) ['{3B0757B2-2290-4AFA-880D-F9BA600E501E}'] function FirstKey: WideString; function HeadMap(const ToKey: WideString): IJclWideStrWideStrSortedMap; function LastKey: WideString; function SubMap(const FromKey, ToKey: WideString): IJclWideStrWideStrSortedMap; function TailMap(const FromKey: WideString): IJclWideStrWideStrSortedMap; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrUnicodeStrSortedMap = interface(IJclUnicodeStrUnicodeStrMap) ['{D8EACC5D-B31E-47A8-9CC9-32B15A79CACA}'] function FirstKey: UnicodeString; function HeadMap(const ToKey: UnicodeString): IJclUnicodeStrUnicodeStrSortedMap; function LastKey: UnicodeString; function SubMap(const FromKey, ToKey: UnicodeString): IJclUnicodeStrUnicodeStrSortedMap; function TailMap(const FromKey: UnicodeString): IJclUnicodeStrUnicodeStrSortedMap; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrStrSortedMap = IJclAnsiStrAnsiStrSortedMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrStrSortedMap = IJclWideStrWideStrSortedMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrStrSortedMap = IJclUnicodeStrUnicodeStrSortedMap; {$ENDIF CONTAINER_UNICODESTR} IJclSingleIntfSortedMap = interface(IJclSingleIntfMap) ['{83D57068-7B8E-453E-B35B-2AB4B594A7A9}'] function FirstKey: Single; function HeadMap(const ToKey: Single): IJclSingleIntfSortedMap; function LastKey: Single; function SubMap(const FromKey, ToKey: Single): IJclSingleIntfSortedMap; function TailMap(const FromKey: Single): IJclSingleIntfSortedMap; end; IJclIntfSingleSortedMap = interface(IJclIntfSingleMap) ['{B07FA192-3466-4F2A-BBF0-2DC0100B08A8}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfSingleSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfSingleSortedMap; function TailMap(const FromKey: IInterface): IJclIntfSingleSortedMap; end; IJclSingleSingleSortedMap = interface(IJclSingleSingleMap) ['{7C6EA0B4-959D-44D5-915F-99DFC1753B00}'] function FirstKey: Single; function HeadMap(const ToKey: Single): IJclSingleSingleSortedMap; function LastKey: Single; function SubMap(const FromKey, ToKey: Single): IJclSingleSingleSortedMap; function TailMap(const FromKey: Single): IJclSingleSingleSortedMap; end; IJclDoubleIntfSortedMap = interface(IJclDoubleIntfMap) ['{F36C5F4F-4F8C-4943-AA35-41623D3C21E9}'] function FirstKey: Double; function HeadMap(const ToKey: Double): IJclDoubleIntfSortedMap; function LastKey: Double; function SubMap(const FromKey, ToKey: Double): IJclDoubleIntfSortedMap; function TailMap(const FromKey: Double): IJclDoubleIntfSortedMap; end; IJclIntfDoubleSortedMap = interface(IJclIntfDoubleMap) ['{0F16ADAE-F499-4857-B5EA-6F3CC9009DBA}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfDoubleSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfDoubleSortedMap; function TailMap(const FromKey: IInterface): IJclIntfDoubleSortedMap; end; IJclDoubleDoubleSortedMap = interface(IJclDoubleDoubleMap) ['{855C858B-74CF-4338-872B-AF88A02DB537}'] function FirstKey: Double; function HeadMap(const ToKey: Double): IJclDoubleDoubleSortedMap; function LastKey: Double; function SubMap(const FromKey, ToKey: Double): IJclDoubleDoubleSortedMap; function TailMap(const FromKey: Double): IJclDoubleDoubleSortedMap; end; IJclExtendedIntfSortedMap = interface(IJclExtendedIntfMap) ['{A30B8835-A319-4776-9A11-D1EEF60B9C26}'] function FirstKey: Extended; function HeadMap(const ToKey: Extended): IJclExtendedIntfSortedMap; function LastKey: Extended; function SubMap(const FromKey, ToKey: Extended): IJclExtendedIntfSortedMap; function TailMap(const FromKey: Extended): IJclExtendedIntfSortedMap; end; IJclIntfExtendedSortedMap = interface(IJclIntfExtendedMap) ['{3493D6C4-3075-48B6-8E99-CB0000D3978C}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfExtendedSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfExtendedSortedMap; function TailMap(const FromKey: IInterface): IJclIntfExtendedSortedMap; end; IJclExtendedExtendedSortedMap = interface(IJclExtendedExtendedMap) ['{8CAA505C-D9BB-47E7-92EC-6043DC4AF42C}'] function FirstKey: Extended; function HeadMap(const ToKey: Extended): IJclExtendedExtendedSortedMap; function LastKey: Extended; function SubMap(const FromKey, ToKey: Extended): IJclExtendedExtendedSortedMap; function TailMap(const FromKey: Extended): IJclExtendedExtendedSortedMap; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatIntfSortedMap = IJclExtendedIntfSortedMap; IJclIntfFloatSortedMap = IJclIntfExtendedSortedMap; IJclFloatFloatSortedMap = IJclExtendedExtendedSortedMap; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatIntfSortedMap = IJclDoubleIntfSortedMap; IJclIntfFloatSortedMap = IJclIntfDoubleSortedMap; IJclFloatFloatSortedMap = IJclDoubleDoubleSortedMap; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatIntfSortedMap = IJclSingleIntfSortedMap; IJclIntfFloatSortedMap = IJclIntfSingleSortedMap; IJclFloatFloatSortedMap = IJclSingleSingleSortedMap; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerIntfSortedMap = interface(IJclIntegerIntfMap) ['{8B22802C-61F2-4DA5-B1E9-DBB7840E7996}'] function FirstKey: Integer; function HeadMap(ToKey: Integer): IJclIntegerIntfSortedMap; function LastKey: Integer; function SubMap(FromKey, ToKey: Integer): IJclIntegerIntfSortedMap; function TailMap(FromKey: Integer): IJclIntegerIntfSortedMap; end; IJclIntfIntegerSortedMap = interface(IJclIntfIntegerMap) ['{8D3C9B7E-772D-409B-A58C-0CABFAFDEFF0}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfIntegerSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfIntegerSortedMap; function TailMap(const FromKey: IInterface): IJclIntfIntegerSortedMap; end; IJclIntegerIntegerSortedMap = interface(IJclIntegerIntegerMap) ['{8A8BA17A-F468-469C-AF99-77D64C802F7A}'] function FirstKey: Integer; function HeadMap(ToKey: Integer): IJclIntegerIntegerSortedMap; function LastKey: Integer; function SubMap(FromKey, ToKey: Integer): IJclIntegerIntegerSortedMap; function TailMap(FromKey: Integer): IJclIntegerIntegerSortedMap; end; IJclCardinalIntfSortedMap = interface(IJclCardinalIntfMap) ['{BAE97425-4F2E-461B-88DD-F83D27657AFA}'] function FirstKey: Cardinal; function HeadMap(ToKey: Cardinal): IJclCardinalIntfSortedMap; function LastKey: Cardinal; function SubMap(FromKey, ToKey: Cardinal): IJclCardinalIntfSortedMap; function TailMap(FromKey: Cardinal): IJclCardinalIntfSortedMap; end; IJclIntfCardinalSortedMap = interface(IJclIntfCardinalMap) ['{BC66BACF-23AE-48C4-9573-EDC3B5110BE7}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfCardinalSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfCardinalSortedMap; function TailMap(const FromKey: IInterface): IJclIntfCardinalSortedMap; end; IJclCardinalCardinalSortedMap = interface(IJclCardinalCardinalMap) ['{182ACDA4-7D74-4D29-BB5C-4C8189DA774E}'] function FirstKey: Cardinal; function HeadMap(ToKey: Cardinal): IJclCardinalCardinalSortedMap; function LastKey: Cardinal; function SubMap(FromKey, ToKey: Cardinal): IJclCardinalCardinalSortedMap; function TailMap(FromKey: Cardinal): IJclCardinalCardinalSortedMap; end; IJclInt64IntfSortedMap = interface(IJclInt64IntfMap) ['{24391756-FB02-4901-81E3-A37738B73DAD}'] function FirstKey: Int64; function HeadMap(const ToKey: Int64): IJclInt64IntfSortedMap; function LastKey: Int64; function SubMap(const FromKey, ToKey: Int64): IJclInt64IntfSortedMap; function TailMap(const FromKey: Int64): IJclInt64IntfSortedMap; end; IJclIntfInt64SortedMap = interface(IJclIntfInt64Map) ['{6E2AB647-59CC-4609-82E8-6AE75AED80CA}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfInt64SortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfInt64SortedMap; function TailMap(const FromKey: IInterface): IJclIntfInt64SortedMap; end; IJclInt64Int64SortedMap = interface(IJclInt64Int64Map) ['{168581D2-9DD3-46D0-934E-EA0CCE5E3C0C}'] function FirstKey: Int64; function HeadMap(const ToKey: Int64): IJclInt64Int64SortedMap; function LastKey: Int64; function SubMap(const FromKey, ToKey: Int64): IJclInt64Int64SortedMap; function TailMap(const FromKey: Int64): IJclInt64Int64SortedMap; end; IJclPtrIntfSortedMap = interface(IJclPtrIntfMap) ['{6D7B8042-3CBC-4C8F-98B5-69AFAA104532}'] function FirstKey: Pointer; function HeadMap(ToKey: Pointer): IJclPtrIntfSortedMap; function LastKey: Pointer; function SubMap(FromKey, ToKey: Pointer): IJclPtrIntfSortedMap; function TailMap(FromKey: Pointer): IJclPtrIntfSortedMap; end; IJclIntfPtrSortedMap = interface(IJclIntfPtrMap) ['{B054BDA2-536F-4C16-B6BB-BB64FA0818B3}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfPtrSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfPtrSortedMap; function TailMap(const FromKey: IInterface): IJclIntfPtrSortedMap; end; IJclPtrPtrSortedMap = interface(IJclPtrPtrMap) ['{F1FAE922-0212-41D0-BB4E-76A8AB2CAB86}'] function FirstKey: Pointer; function HeadMap(ToKey: Pointer): IJclPtrPtrSortedMap; function LastKey: Pointer; function SubMap(FromKey, ToKey: Pointer): IJclPtrPtrSortedMap; function TailMap(FromKey: Pointer): IJclPtrPtrSortedMap; end; IJclIntfSortedMap = interface(IJclIntfMap) ['{3CED1477-B958-4109-9BDA-7C84B9E063B2}'] function FirstKey: IInterface; function HeadMap(const ToKey: IInterface): IJclIntfSortedMap; function LastKey: IInterface; function SubMap(const FromKey, ToKey: IInterface): IJclIntfSortedMap; function TailMap(const FromKey: IInterface): IJclIntfSortedMap; end; IJclAnsiStrSortedMap = interface(IJclAnsiStrMap) ['{573F98E3-EBCD-4F28-8F35-96A7366CBF47}'] function FirstKey: AnsiString; function HeadMap(const ToKey: AnsiString): IJclAnsiStrSortedMap; function LastKey: AnsiString; function SubMap(const FromKey, ToKey: AnsiString): IJclAnsiStrSortedMap; function TailMap(const FromKey: AnsiString): IJclAnsiStrSortedMap; end; IJclWideStrSortedMap = interface(IJclWideStrMap) ['{B3021EFC-DE25-4B4B-A896-ACE823CD5C01}'] function FirstKey: WideString; function HeadMap(const ToKey: WideString): IJclWideStrSortedMap; function LastKey: WideString; function SubMap(const FromKey, ToKey: WideString): IJclWideStrSortedMap; function TailMap(const FromKey: WideString): IJclWideStrSortedMap; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrSortedMap = interface(IJclUnicodeStrMap) ['{5510B8FC-3439-4211-8D1F-5EDD9A56D3E3}'] function FirstKey: UnicodeString; function HeadMap(const ToKey: UnicodeString): IJclUnicodeStrSortedMap; function LastKey: UnicodeString; function SubMap(const FromKey, ToKey: UnicodeString): IJclUnicodeStrSortedMap; function TailMap(const FromKey: UnicodeString): IJclUnicodeStrSortedMap; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrSortedMap = IJclAnsiStrSortedMap; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrSortedMap = IJclWideStrSortedMap; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrSortedMap = IJclUnicodeStrSortedMap; {$ENDIF CONTAINER_UNICODESTR} IJclSingleSortedMap = interface(IJclSingleMap) ['{8C1A12BE-A7F2-4351-90B7-25DB0AAF5F94}'] function FirstKey: Single; function HeadMap(const ToKey: Single): IJclSingleSortedMap; function LastKey: Single; function SubMap(const FromKey, ToKey: Single): IJclSingleSortedMap; function TailMap(const FromKey: Single): IJclSingleSortedMap; end; IJclDoubleSortedMap = interface(IJclDoubleMap) ['{8018D66B-AA54-4016-84FC-3E780FFCC38B}'] function FirstKey: Double; function HeadMap(const ToKey: Double): IJclDoubleSortedMap; function LastKey: Double; function SubMap(const FromKey, ToKey: Double): IJclDoubleSortedMap; function TailMap(const FromKey: Double): IJclDoubleSortedMap; end; IJclExtendedSortedMap = interface(IJclExtendedMap) ['{2B82C65A-B3EF-477D-BEC0-3D8620A226B1}'] function FirstKey: Extended; function HeadMap(const ToKey: Extended): IJclExtendedSortedMap; function LastKey: Extended; function SubMap(const FromKey, ToKey: Extended): IJclExtendedSortedMap; function TailMap(const FromKey: Extended): IJclExtendedSortedMap; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatSortedMap = IJclExtendedSortedMap; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatSortedMap = IJclDoubleSortedMap; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatSortedMap = IJclSingleSortedMap; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerSortedMap = interface(IJclIntegerMap) ['{DD7B4C5E-6D51-44CC-9328-B38396A7E1C9}'] function FirstKey: Integer; function HeadMap(ToKey: Integer): IJclIntegerSortedMap; function LastKey: Integer; function SubMap(FromKey, ToKey: Integer): IJclIntegerSortedMap; function TailMap(FromKey: Integer): IJclIntegerSortedMap; end; IJclCardinalSortedMap = interface(IJclCardinalMap) ['{4AEAF81F-D72E-4499-B10E-3D017F39915E}'] function FirstKey: Cardinal; function HeadMap(ToKey: Cardinal): IJclCardinalSortedMap; function LastKey: Cardinal; function SubMap(FromKey, ToKey: Cardinal): IJclCardinalSortedMap; function TailMap(FromKey: Cardinal): IJclCardinalSortedMap; end; IJclInt64SortedMap = interface(IJclInt64Map) ['{06C03F90-7DE9-4043-AA56-AAE071D8BD50}'] function FirstKey: Int64; function HeadMap(const ToKey: Int64): IJclInt64SortedMap; function LastKey: Int64; function SubMap(const FromKey, ToKey: Int64): IJclInt64SortedMap; function TailMap(const FromKey: Int64): IJclInt64SortedMap; end; IJclPtrSortedMap = interface(IJclPtrMap) ['{578918DB-6A4A-4A9D-B44E-AE3E8FF70818}'] function FirstKey: Pointer; function HeadMap(ToKey: Pointer): IJclPtrSortedMap; function LastKey: Pointer; function SubMap(FromKey, ToKey: Pointer): IJclPtrSortedMap; function TailMap(FromKey: Pointer): IJclPtrSortedMap; end; IJclSortedMap = interface(IJclMap) ['{F317A70F-7851-49C2-9DCF-092D8F4D4F98}'] function FirstKey: TObject; function HeadMap(ToKey: TObject): IJclSortedMap; function LastKey: TObject; function SubMap(FromKey, ToKey: TObject): IJclSortedMap; function TailMap(FromKey: TObject): IJclSortedMap; end; {$IFDEF SUPPORTS_GENERICS} IJclSortedMap = interface(IJclMap) ['{C62B75C4-891B-442E-A5D6-9954E75A5C0C}'] function FirstKey: TKey; function HeadMap(const ToKey: TKey): IJclSortedMap; function LastKey: TKey; function SubMap(const FromKey, ToKey: TKey): IJclSortedMap; function TailMap(const FromKey: TKey): IJclSortedMap; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfSortedSet = interface(IJclIntfSet) ['{159BE5A7-7349-42FF-BE55-9CA1B9DBA991}'] function HeadSet(const Finish: IInterface): IJclIntfSortedSet; function SubSet(const Start, Finish: IInterface): IJclIntfSortedSet; function TailSet(const Start: IInterface): IJclIntfSortedSet; end; IJclAnsiStrSortedSet = interface(IJclAnsiStrSet) ['{03198146-F967-4310-868B-7AD3D52D5CBE}'] function HeadSet(const Finish: AnsiString): IJclAnsiStrSortedSet; function SubSet(const Start, Finish: AnsiString): IJclAnsiStrSortedSet; function TailSet(const Start: AnsiString): IJclAnsiStrSortedSet; end; IJclWideStrSortedSet = interface(IJclWideStrSet) ['{ED9567E2-C1D3-4C00-A1D4-90D5C7E27C2D}'] function HeadSet(const Finish: WideString): IJclWideStrSortedSet; function SubSet(const Start, Finish: WideString): IJclWideStrSortedSet; function TailSet(const Start: WideString): IJclWideStrSortedSet; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrSortedSet = interface(IJclUnicodeStrSet) ['{172BCD6F-D23C-4014-9C8C-A77A27D6E881}'] function HeadSet(const Finish: UnicodeString): IJclUnicodeStrSortedSet; function SubSet(const Start, Finish: UnicodeString): IJclUnicodeStrSortedSet; function TailSet(const Start: UnicodeString): IJclUnicodeStrSortedSet; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrSortedSet = IJclAnsiStrSortedSet; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrSortedSet = IJclWideStrSortedSet; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrSortedSet = IJclUnicodeStrSortedSet; {$ENDIF CONTAINER_UNICODESTR} IJclSingleSortedSet = interface(IJclSingleSet) ['{65EDA801-9E04-4119-BF9E-D7DD4AF82144}'] function HeadSet(const Finish: Single): IJclSingleSortedSet; function SubSet(const Start, Finish: Single): IJclSingleSortedSet; function TailSet(const Start: Single): IJclSingleSortedSet; end; IJclDoubleSortedSet = interface(IJclDoubleSet) ['{DA0E689F-BAFE-4BCE-85E4-C38E780BC84C}'] function HeadSet(const Finish: Double): IJclDoubleSortedSet; function SubSet(const Start, Finish: Double): IJclDoubleSortedSet; function TailSet(const Start: Double): IJclDoubleSortedSet; end; IJclExtendedSortedSet = interface(IJclExtendedSet) ['{A9875ED3-81A4-43A3-86BB-3429F51B278B}'] function HeadSet(const Finish: Extended): IJclExtendedSortedSet; function SubSet(const Start, Finish: Extended): IJclExtendedSortedSet; function TailSet(const Start: Extended): IJclExtendedSortedSet; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatSortedSet = IJclExtendedSortedSet; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatSortedSet = IJclDoubleSortedSet; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatSortedSet = IJclSingleSortedSet; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerSortedSet = interface(IJclIntegerSet) ['{E086C54B-4FA3-426D-AC4E-FF8E8CA3D663}'] function HeadSet(Finish: Integer): IJclIntegerSortedSet; function SubSet(Start, Finish: Integer): IJclIntegerSortedSet; function TailSet(Start: Integer): IJclIntegerSortedSet; end; IJclCardinalSortedSet = interface(IJclCardinalSet) ['{2D7995C6-A784-48B6-87E9-55D394A72362}'] function HeadSet(Finish: Cardinal): IJclCardinalSortedSet; function SubSet(Start, Finish: Cardinal): IJclCardinalSortedSet; function TailSet(Start: Cardinal): IJclCardinalSortedSet; end; IJclInt64SortedSet = interface(IJclInt64Set) ['{4C1C3FCA-6169-4A2F-B044-91AC2AA2E954}'] function HeadSet(const Finish: Int64): IJclInt64SortedSet; function SubSet(const Start, Finish: Int64): IJclInt64SortedSet; function TailSet(const Start: Int64): IJclInt64SortedSet; end; IJclPtrSortedSet = interface(IJclPtrSet) ['{F3A3183C-0820-425C-9446-E0838F0ADAD8}'] function HeadSet(Finish: Pointer): IJclPtrSortedSet; function SubSet(Start, Finish: Pointer): IJclPtrSortedSet; function TailSet(Start: Pointer): IJclPtrSortedSet; end; IJclSortedSet = interface(IJclSet) ['{A3D23E76-ADE9-446C-9B97-F49FCE895D9F}'] function HeadSet(Finish: TObject): IJclSortedSet; function SubSet(Start, Finish: TObject): IJclSortedSet; function TailSet(Start: TObject): IJclSortedSet; end; {$IFDEF SUPPORTS_GENERICS} IJclSortedSet = interface(IJclSet) ['{30F836E3-2FB1-427E-A499-DFAE201633C8}'] function HeadSet(const Finish: T): IJclSortedSet; function SubSet(const Start, Finish: T): IJclSortedSet; function TailSet(const Start: T): IJclSortedSet; end; {$ENDIF SUPPORTS_GENERICS} IJclIntfStack = interface(IJclContainer) ['{CA1DC7A1-8D8F-4A5D-81D1-0FE32E9A4E84}'] procedure Clear; function Contains(const AInterface: IInterface): Boolean; function Empty: Boolean; function Peek: IInterface; function Pop: IInterface; function Push(const AInterface: IInterface): Boolean; function Size: Integer; end; IJclAnsiStrStack = interface(IJclAnsiStrContainer) ['{649BB74C-D7BE-40D9-9F4E-32DDC3F13F3B}'] procedure Clear; function Contains(const AString: AnsiString): Boolean; function Empty: Boolean; function Peek: AnsiString; function Pop: AnsiString; function Push(const AString: AnsiString): Boolean; function Size: Integer; end; IJclWideStrStack = interface(IJclWideStrContainer) ['{B2C3B165-33F1-4B7D-A2EC-0B19D12CE33C}'] procedure Clear; function Contains(const AString: WideString): Boolean; function Empty: Boolean; function Peek: WideString; function Pop: WideString; function Push(const AString: WideString): Boolean; function Size: Integer; end; {$IFDEF SUPPORTS_UNICODE_STRING} IJclUnicodeStrStack = interface(IJclUnicodeStrContainer) ['{BC046C3D-E3D2-42BA-A96D-054834A70404}'] procedure Clear; function Contains(const AString: UnicodeString): Boolean; function Empty: Boolean; function Peek: UnicodeString; function Pop: UnicodeString; function Push(const AString: UnicodeString): Boolean; function Size: Integer; end; {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} IJclStrStack = IJclAnsiStrStack; {$ENDIF CONTAINER_ANSISTR} {$IFDEF CONTAINER_WIDESTR} IJclStrStack = IJclWideStrStack; {$ENDIF CONTAINER_WIDESTR} {$IFDEF CONTAINER_UNICODESTR} IJclStrStack = IJclUnicodeStrStack; {$ENDIF CONTAINER_UNICODESTR} IJclSingleStack = interface(IJclSingleContainer) ['{8DCE45C8-B5B3-43AB-BA08-DAD531CEB9CF}'] procedure Clear; function Contains(const AValue: Single): Boolean; function Empty: Boolean; function Peek: Single; function Pop: Single; function Push(const AValue: Single): Boolean; function Size: Integer; end; IJclDoubleStack = interface(IJclDoubleContainer) ['{46DF2701-16F0-453C-B938-F04E9C1CEBF8}'] procedure Clear; function Contains(const AValue: Double): Boolean; function Empty: Boolean; function Peek: Double; function Pop: Double; function Push(const AValue: Double): Boolean; function Size: Integer; end; IJclExtendedStack = interface(IJclExtendedContainer) ['{A2A30585-F561-4757-ABE1-CA511AE72CC5}'] procedure Clear; function Contains(const AValue: Extended): Boolean; function Empty: Boolean; function Peek: Extended; function Pop: Extended; function Push(const AValue: Extended): Boolean; function Size: Integer; end; {$IFDEF MATH_EXTENDED_PRECISION} IJclFloatStack = IJclExtendedStack; {$ENDIF MATH_EXTENDED_PRECISION} {$IFDEF MATH_DOUBLE_PRECISION} IJclFloatStack = IJclDoubleStack; {$ENDIF MATH_DOUBLE_PRECISION} {$IFDEF MATH_SINGLE_PRECISION} IJclFloatStack = IJclSingleStack; {$ENDIF MATH_SINGLE_PRECISION} IJclIntegerStack = interface(IJclContainer) ['{9190BF0E-5B0C-4D6C-A107-20A933C9B56A}'] procedure Clear; function Contains(AValue: Integer): Boolean; function Empty: Boolean; function Peek: Integer; function Pop: Integer; function Push(AValue: Integer): Boolean; function Size: Integer; end; IJclCardinalStack = interface(IJclContainer) ['{94F9EDB3-602B-49CE-9990-0AFDAC556F83}'] procedure Clear; function Contains(AValue: Cardinal): Boolean; function Empty: Boolean; function Peek: Cardinal; function Pop: Cardinal; function Push(AValue: Cardinal): Boolean; function Size: Integer; end; IJclInt64Stack = interface(IJclContainer) ['{D689EB8F-2746-40E9-AD1B-7E656475FC64}'] procedure Clear; function Contains(const AValue: Int64): Boolean; function Empty: Boolean; function Peek: Int64; function Pop: Int64; function Push(const AValue: Int64): Boolean; function Size: Integer; end; IJclPtrStack = interface(IJclContainer) ['{AD11D06C-E0E1-4EDE-AA2F-BC8BDD972B73}'] procedure Clear; function Contains(APtr: Pointer): Boolean; function Empty: Boolean; function Peek: Pointer; function Pop: Pointer; function Push(APtr: Pointer): Boolean; function Size: Integer; end; IJclStack = interface(IJclContainer) ['{E07E0BD8-A831-41B9-B9A0-7199BD4873B9}'] procedure Clear; function Contains(AObject: TObject): Boolean; function Empty: Boolean; function Peek: TObject; function Pop: TObject; function Push(AObject: TObject): Boolean; function Size: Integer; end; {$IFDEF SUPPORTS_GENERICS} IJclStack = interface(IJclContainer) ['{2F08EAC9-270D-496E-BE10-5E975918A5F2}'] procedure Clear; function Contains(const AItem: T): Boolean; function Empty: Boolean; function Peek: T; function Pop: T; function Push(const AItem: T): Boolean; function Size: Integer; end; {$ENDIF SUPPORTS_GENERICS} // Exceptions EJclContainerError = class(EJclError); EJclOutOfBoundsError = class(EJclContainerError) public // RsEOutOfBounds constructor Create; end; EJclNoSuchElementError = class(EJclContainerError) public // RsEValueNotFound constructor Create(const Value: string); end; EJclDuplicateElementError = class(EJclContainerError) public // RsEDuplicateElement constructor Create; end; EJclIllegalArgumentError = class(EJclContainerError) end; EJclNoCollectionError = class(EJclIllegalArgumentError) public // RsENoCollection constructor Create; end; EJclIllegalQueueCapacityError = class(EJclIllegalArgumentError) public // RsEIllegalQueueCapacity constructor Create; end; EJclOperationNotSupportedError = class(EJclContainerError) public // RsEOperationNotSupported constructor Create; end; EJclNoEqualityComparerError = class(EJclContainerError) public // RsENoEqualityComparer constructor Create; end; EJclNoComparerError = class(EJclContainerError) public // RsENoComparer constructor Create; end; EJclNoHashConverterError = class(EJclContainerError) public // RsENoHashConverter constructor Create; end; EJclIllegalStateOperationError = class(EJclContainerError) public // RsEIllegalStateOperation constructor Create; end; EJclAssignError = class(EJclContainerError) public // RsEAssignError constructor Create; end; EJclReadOnlyError = class(EJclContainerError) public // RsEReadOnlyError constructor Create; end; {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL: https://jcl.svn.sourceforge.net/svnroot/jcl/tags/JCL-2.1-Build3536/jcl/source/common/JclContainerIntf.pas $'; Revision: '$Revision: 2940 $'; Date: '$Date: 2009-08-10 19:54:31 +0200 (lun., 10 août 2009) $'; LogPath: 'JCL\source\common'; Extra: ''; Data: nil ); {$ENDIF UNITVERSIONING} implementation uses SysUtils, JclResources; //=== { EJclOutOfBoundsError } =============================================== constructor EJclOutOfBoundsError.Create; begin inherited CreateRes(@RsEOutOfBounds); end; //=== { EJclNoSuchElementError } ============================================= constructor EJclNoSuchElementError.Create(const Value: string); begin inherited CreateResFmt(@RsEValueNotFound, [Value]); end; //=== { EJclDuplicateElementError } ========================================== constructor EJclDuplicateElementError.Create; begin inherited CreateRes(@RsEDuplicateElement); end; //=== { EJclIllegalQueueCapacityError } ====================================== constructor EJclIllegalQueueCapacityError.Create; begin inherited CreateRes(@RsEIllegalQueueCapacity); end; //=== { EJclNoCollectionError } ============================================== constructor EJclNoCollectionError.Create; begin inherited CreateRes(@RsENoCollection); end; //=== { EJclOperationNotSupportedError } ===================================== constructor EJclOperationNotSupportedError.Create; begin inherited CreateRes(@RsEOperationNotSupported); end; //=== { EJclIllegalStateOperationError } ===================================== constructor EJclIllegalStateOperationError.Create; begin inherited CreateRes(@RsEIllegalStateOperation); end; //=== { EJclNoComparerError } ================================================ constructor EJclNoComparerError.Create; begin inherited CreateRes(@RsENoComparer); end; //=== { EJclNoEqualityComparerError } ======================================== constructor EJclNoEqualityComparerError.Create; begin inherited CreateRes(@RsENoEqualityComparer); end; //=== { EJclNoHashConverterError } =========================================== constructor EJclNoHashConverterError.Create; begin inherited CreateRes(@RsENoHashConverter); end; //=== { EJclAssignError } ==================================================== constructor EJclAssignError.Create; begin inherited CreateRes(@RsEAssignError); end; //=== { EJclReadOnlyError } ================================================== constructor EJclReadOnlyError.Create; begin inherited CreateRes(@RsEReadOnlyError); end; {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); finalization UnregisterUnitVersion(HInstance); {$ENDIF UNITVERSIONING} end.