Units
Class Hierarchy
Classes, Interfaces, Objects and Records
Types
Variables
Constants
Functions and Procedures
Identifiers
Generics.Collections
type TCustomAVLTreeMap<TKey,TValue,TInfo> = class(TObject)
TKeyCollection = class(TTreeEnumerable<TKeyEnumerator,TPKeyEnumerator,TKey,PKey,PNode,TTree>)
TKeyEnumerator = class(TAVLTreeEnumerator<TKey,PNode,TTree>)
TNodeCollection = class(TTreeEnumerable<TNodeEnumerator,TPNodeEnumerator,PNode,PPNode,PNode,TTree>)
TNodeEnumerator = class(TAVLTreeEnumerator<PNode,PNode,TTree>)
TPairEnumerator = class(TAVLTreeEnumerator<TTreePair,PNode,TTree>)
TPKeyEnumerator = class(TAVLTreeEnumerator<PKey,PNode,TTree>)
TPNodeEnumerator = class(TAVLTreeEnumerator<PPNode,PNode,TTree>)
TPValueEnumerator = class(TAVLTreeEnumerator<PValue,PNode,TTree>)
TTree = class(TCustomAVLTreeMap<TKey,TValue,TInfo>)
TValueCollection = class(TTreeEnumerable<TValueEnumerator,TPValueEnumerator,TValue,PValue,PNode,TTree>)
TValueEnumerator = class(TAVLTreeEnumerator<TValue,PNode,TTree>)
PKey = ˆTKey;
PNode = ˆTNode;
PPNode = ˆPNode;
PValue = ˆTValue;
TNode = TAVLTreeNode< TKey, TValue, TInfo, TTree>;
TTreePair = TPair<TKey, TValue>;
var FDuplicates: TDuplicates;
FComparer: IComparer<TKey>;
FCount: SizeInt;
FRoot: PNode;
FKeys: TEnumerable<TKey>;
FValues: TEnumerable<TValue>;
FOnNodeNotify: TNodeNotifyEvent<PNode>;
FOnKeyNotify: TCollectionNotifyEvent<TKey>;
FOnValueNotify: TCollectionNotifyEvent<TValue>;
FNodes: TNodeCollection;
procedure NodeAdded(ANode: PNode); virtual;
procedure DeletingNode(ANode: PNode; AOrigin: boolean); virtual;
function DoRemove(ANode: PNode; ACollectionNotification: TCollectionNotification; ADispose: boolean): TValue;
procedure DisposeAllNodes(ANode: PNode); overload;
function Compare(constref ALeft, ARight: TKey): Integer; inline;
function FindPredecessor(ANode: PNode): PNode;
function FindInsertNode(ANode: PNode; out AInsertNode: PNode): Integer;
procedure RotateRightRight(ANode: PNode); virtual;
procedure RotateLeftLeft(ANode: PNode); virtual;
procedure RotateRightLeft(ANode: PNode); virtual;
procedure RotateLeftRight(ANode: PNode); virtual;
procedure KeyNotify(constref AKey: TKey; ACollectionNotification: TCollectionNotification); inline;
procedure ValueNotify(constref AValue: TValue; ACollectionNotification: TCollectionNotification); inline;
procedure NodeNotify(ANode: PNode; ACollectionNotification: TCollectionNotification; ADispose: boolean); inline;
procedure SetValue(var AValue: TValue; constref ANewValue: TValue);
procedure WriteStr(AStream: TStream; const AText: string);
function GetNodeCollection: TNodeCollection;
procedure InternalAdd(ANode, AParent: PNode); overload;
function InternalAdd(ANode: PNode; ADispisable: boolean): PNode; overload;
procedure InternalDelete(ANode: PNode);
function GetKeys: TKeyCollection;
function GetValues: TValueCollection;
constructor Create; virtual; overload;
constructor Create(const AComparer: IComparer<TKey>); virtual; overload;
function NewNode: PNode;
function NewNodeArray(ACount: SizeInt): PNode; overload;
procedure NewNodeArray(out AArray: TArray<PNode>; ACount: SizeInt); overload;
procedure DisposeNode(ANode: PNode);
procedure DisposeNodeArray(ANode: PNode; ACount: SizeInt); overload;
procedure DisposeNodeArray(var AArray: TArray<PNode>); overload;
destructor Destroy; override;
function AddNode(ANode: PNode): boolean; overload; inline;
function Add(constref APair: TTreePair): PNode; overload; inline;
function Add(constref AKey: TKey; constref AValue: TValue): PNode; overload; inline;
function Remove(constref AKey: TKey; ADisposeNode: boolean = true): boolean;
function ExtractPair(constref AKey: TKey; ADisposeNode: boolean = true): TTreePair; overload;
function ExtractPair(constref ANode: PNode; ADispose: boolean = true): TTreePair; overload;
function ExtractNode(constref AKey: TKey; ADisposeNode: boolean): PNode; overload;
function ExtractNode(ANode: PNode; ADispose: boolean): PNode; overload;
procedure Delete(ANode: PNode; ADispose: boolean = true); inline;
function GetEnumerator: TPairEnumerator;
procedure Clear(ADisposeNodes: Boolean = true); virtual;
function FindLowest: PNode;
function FindHighest: PNode;
function Find(constref AKey: TKey): PNode;
function ContainsKey(constref AKey: TKey; out ANode: PNode): boolean; overload; inline;
function ContainsKey(constref AKey: TKey): boolean; overload; inline;
procedure ConsistencyCheck; virtual;
procedure WriteTreeNode(AStream: TStream; ANode: PNode);
procedure WriteReportToStream(AStream: TStream);
function NodeToReportStr(ANode: PNode): string; virtual;
function ReportAsString: string;
property Nodes: TNodeCollection read GetNodeCollection;
property Count: SizeInt read FCount;
property Root: PNode read FRoot;
property Keys: TKeyCollection read GetKeys;
property Values: TValueCollection read GetValues;
property Duplicates: TDuplicates read FDuplicates write FDuplicates;
property OnNodeNotify: TNodeNotifyEvent<PNode> read FOnNodeNotify write FOnNodeNotify;
property OnKeyNotify: TCollectionNotifyEvent<TKey> read FOnKeyNotify write FOnKeyNotify;
property OnValueNotify: TCollectionNotifyEvent<TValue> read FOnValueNotify write FOnValueNotify;
for reporting