Difference between revisions of "Unit UltiboClasses"
Line 117: | Line 117: | ||
---- | ---- | ||
− | '' | + | |
+ | '''TThreadEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TThreadEx = class(TThread)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TThread with Before and After Execution methods | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure Execution; virtual;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>procedure AfterExecution; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure BeforeExecution; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Execute; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure TerminateAndWaitFor;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TTimerEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TTimerEx = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TTimer/TFPTimer equivalent for Ultibo specific timers | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FInterval:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FEnabled:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWorker:Boolean;</code> | ||
+ | | If True then use a Worker thread for the timer event | ||
+ | |- | ||
+ | | <code>FOnTimer:TNotifyEvent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FTimerHandle:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetEnabled(Value:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure Timer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure StartTimer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure StopTimer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Interval:Integer read FInterval write FInterval;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Enabled:Boolean read FEnabled write SetEnabled;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Worker:Boolean read FWorker write FWorker;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property OnTimer:TNotifyEvent read FOnTimer write FOnTimer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TObjList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TObjList = class(TList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TList with Auto Free of List Objects | ||
+ | List which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>procedure DestroyListObjects;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TThreadObjList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TThreadObjList = class(TThreadList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TThreadList with Auto Free of List Objects | ||
+ | Thread Safe List which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>procedure DestroyListObjects;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TListObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TListObject = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with .Prev/.Next with Properties for use in Lists | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FPrev:TListObject;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FNext:TListObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Prev:TListObject read FPrev write FPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Next:TListObject read FNext write FNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedList = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A List of TListObjects with automatic .Prev/.Next Links | ||
+ | Linked List which does not Free nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFirst:TListObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:TListObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Link(AValue:TListObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEx(APrev,AValue:TListObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Unlink(AValue:TListObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Count:Integer read GetCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property First:TListObject read FFirst;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Last:TListObject read FLast;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Add(AValue:TListObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:TListObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Insert(APrev,AValue:TListObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedObjList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedObjList = class(TLinkedList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TLinkedList with Auto Free of List Objects | ||
+ | Linked List which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TThreadLinkedObjList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TThreadLinkedObjList = class(TLinkedList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TLinkedList with Auto Free of List Objects | ||
+ | Thread Safe Linked List which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TRTLCriticalSection;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure LockList; </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure UnlockList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TTreeObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TTreeObject = class(TListObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with Prev/Next/Parent/FirstChild for use in Trees | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FParent:TTreeObject;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FFirstChild:TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLastChild:TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Parent:TTreeObject read FParent write FParent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FirstChild:TTreeObject read FFirstChild write FFirstChild;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LastChild:TTreeObject read FLastChild write FLastChild;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedTree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedTree = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A Tree of TTreeObjects with automatic Prev/Next etc Links | ||
+ | Linked Tree which does not Free nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFirst:TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Link(AValue,AParent:TTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEx(APrev,AValue,AParent:TTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Unlink(AValue:TTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Count:Integer read GetCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Root:TTreeObject read FFirst;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property First:TTreeObject read FFirst;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Last:TTreeObject read FLast;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Add(AValue,AParent:TTreeObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:TTreeObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Insert(APrev,AValue,AParent:TTreeObject):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Move(AValue,AParent:TTreeObject); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FirstChild(AParent:TTreeObject):TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LastChild(AParent:TTreeObject):TTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedObjTree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedObjTree = class(TLinkedTree)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TLinkedTree with Auto Free of Tree Objects | ||
+ | Linked Tree which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearListItems(AParent:TTreeObject);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TBtreeObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TBtreeObject = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with Left/Right/Parent for use in B-Trees | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FBlank:Boolean;</code> | ||
+ | | style="width: 50%;"|Object is the blank key (1 per node) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FPrev:TBtreeObject;</code> | ||
+ | | Prev object in Linked List (Sorted) | ||
+ | |- | ||
+ | | <code>FNext:TBtreeObject;</code> | ||
+ | | Next object in Linked List (Sorted) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLeft:TBtreeObject;</code> | ||
+ | | Left sibling in B-Tree (Lower) | ||
+ | |- | ||
+ | | <code>FRight:TBtreeObject;</code> | ||
+ | | Right sibling in B-Tree (Higher) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FChild:TBtreeObject;</code> | ||
+ | | Child object in B-Tree (Lower) | ||
+ | |- | ||
+ | | <code>FParent:TBtreeObject;</code> | ||
+ | | Parent object in B-Tree (Higher) | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Blank:Boolean read FBlank write FBlank;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Prev:TBtreeObject read FPrev write FPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Next:TBtreeObject read FNext write FNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Left:TBtreeObject read FLeft write FLeft;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Right:TBtreeObject read FRight write FRight;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Child:TBtreeObject read FChild write FChild;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Parent:TBtreeObject read FParent write FParent;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Clear;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedBtree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedBtree = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A B-Tree of TBtreeObjects with automatic Left/Right etc Links | ||
+ | Linked B-Tree which does not Free nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|Note: Search/Find should be implemented by descendants. Compare must always be implemented by descendants. Blank keys are not included in the linked list. Blank key always compares as higher than anything. Linked list allows easy traversal in either direction. Also allows implementation of the rebalance function. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetOrder(AOrder:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PropogateDrop(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PropogateDropOld(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PropogateDropOldOld(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PropogateMerge(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PropogateSplit(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FOrder:LongWord;</code> | ||
+ | | Order N of B-Tree (N - 1 Keys per Node) | ||
+ | |- | ||
+ | | <code>FMedian:LongWord;</code> | ||
+ | | Ceil(N / 2) (Median - 1 Keys as Minimum) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSwapLeft:Boolean;</code> | ||
+ | | If True then Remove will Swap with Left not Right | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FRoot:TBtreeObject;</code> | ||
+ | | Root Node of B-Tree | ||
+ | |- | ||
+ | | <code>FFirst:TBtreeObject;</code> | ||
+ | | First object in Linked List (Sorted) | ||
+ | |- | ||
+ | | <code>FLast:TBtreeObject;</code> | ||
+ | | Last object in Linked List (Sorted) | ||
+ | |- | ||
+ | | <code>FFirstBlank:TBtreeObject;</code> | ||
+ | | First blank key in Linked List (Not Sorted) | ||
+ | |- | ||
+ | | <code>FLastBlank:TBtreeObject;</code> | ||
+ | | Last blank key in Linked List (Not Sorted) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCount(AEntry:TBtreeObject):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDepth(AEntry:TBtreeObject):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetEnd(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetStart(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBlank(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMedian(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDrop(AEntry:TBtreeObject; var ALeft:Boolean):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMerge(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBorrow(AEntry:TBtreeObject):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTarget(ADrop:TBtreeObject; ALeft:Boolean):TBtreeObject; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SetParent(AEntry,AParent:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetLefthand(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRighthand(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetLeftmost(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRightmost(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSuccessor(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPredecessor(AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPosition(AStart,AEntry:TBtreeObject):TBtreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Push(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Split(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Swap(AEntry,ASwap:TBtreeObject; ALeft:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Drop(AEntry,ADrop,ATarget:TBtreeObject; ALeft:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DropOld(AEntry,ADrop:TBtreeObject; ALeft:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DropOldOld(AEntry,ADrop:TBtreeObject; ALeft:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DropOldOldOld(AEntry,ADrop:TBtreeObject; ALeft:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Merge(AEntry,AMerge:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Borrow(AEntry,ABorrow:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Link(AEntry,ANext:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Unlink(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LinkBlank(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkBlank(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Attach(AParent,AEntry,ARight:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Detach(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PushNode(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node pus | ||
+ | |- | ||
+ | | <code>function SplitNode(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node split | ||
+ | |- | ||
+ | | <code>function DropNode(AEntry,ADrop,ATarget:TBtreeObject; ALeft:Boolean):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node drop | ||
+ | |- | ||
+ | | <code>function DropNodeOld(AEntry,ADrop:TBtreeObject; ALeft:Boolean):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node drop | ||
+ | |- | ||
+ | | <code>function MergeNode(AEntry,AMerge:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node merge | ||
+ | |- | ||
+ | | <code>function BorrowEntry(AEntry,ABorrow:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor entry borrow | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SwapEntry(AEntry,ASwap:TBtreeObject;ALeft:Boolean):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor entry swap | ||
+ | |- | ||
+ | | <code>function SetParentEntry(AEntry,AParent:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor entry parent | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateBlank:TBtreeObject; virtual;</code> | ||
+ | | Allows descendants to monitor node creation | ||
+ | |- | ||
+ | | <code>function DeleteBlank(ABlank:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node deletion | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AttachBlank(ABlank:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node modification | ||
+ | |- | ||
+ | | <code>function DetachBlank(ABlank:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node modification | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AttachEntry(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node modification | ||
+ | |- | ||
+ | | <code>function DetachEntry(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to monitor node modification | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RequirePush(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to modify balancing behaviour | ||
+ | |- | ||
+ | | <code>function RequireSplit(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to modify balancing behaviour | ||
+ | |- | ||
+ | | <code>function RequireDrop(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to modify balancing behaviour | ||
+ | |- | ||
+ | | <code>function RequireMerge(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to modify balancing behaviour | ||
+ | |- | ||
+ | | <code>function RequireBorrow(AEntry:TBtreeObject):Boolean; virtual;</code> | ||
+ | | Allows descendants to modify balancing behaviour | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Compare(AEntry1,AEntry2:TBtreeObject):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Order:LongWord read FOrder write SetOrder;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Median:LongWord read FMedian;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SwapLeft:Boolean read FSwapLeft;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Root:TBtreeObject read FRoot;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property First:TBtreeObject read FFirst;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Last:TBtreeObject read FLast;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Add(AParent,AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Insert(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveOld(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveOldOld(AEntry:TBtreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Clear;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Empty;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Rebuild;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedObjBtree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedObjBtree = class(TLinkedBtree)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: TLinkedBtree with Auto Free of B-Tree Objects | ||
+ | Linked B-Tree which Frees all nodes on Destroy | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearBtree;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure EmptyBtree;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashListObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashListObject = class(TListObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with KeyPrev/KeyNext/KeyHash for use in HashLists | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FKeyPrev:THashListObject;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FKeyNext:THashListObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FKeyHash:LongWord;</code> | ||
+ | | Publish in descendants if required | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetKeyHash(AKeyHash:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property KeyList:THashLinkedList read FKeyList write FKeyList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyPrev:THashListObject read FKeyPrev write FKeyPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyNext:THashListObject read FKeyNext write FKeyNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashLinkedList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashLinkedList = class(TLinkedList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A List of THashListObjects with automatic hash buckets | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyLink(AValue:THashListObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(AValue:THashListObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function KeyFirst(AKeyHash:LongWord):THashListObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Add(AValue:TListObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:TListObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Insert(APrev,AValue:TListObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashLinkedObjList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashLinkedObjList = class(THashLinkedList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: THashLinkedList with Auto Free of List Objects | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashTreeObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashTreeObject = class(TTreeObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with KeyPrev/KeyNext/KeyHash for use in HashTrees | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyTree:THashLinkedTree;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyPrev:THashTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyNext:THashTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FKeyHash:LongWord; {Publish in descendants if required}</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetKeyHash(AKeyHash:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyLink(AValue:THashTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(AValue:THashTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function KeyFirst(AKeyHash:LongWord):THashTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property KeyTree:THashLinkedTree read FKeyTree write FKeyTree;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyPrev:THashTreeObject read FKeyPrev write FKeyPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyNext:THashTreeObject read FKeyNext write FKeyNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashLinkedTree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashLinkedTree = class(TLinkedTree)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A Tree of THashTreeObjects with automatic hash buckets | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyLink(AValue,AParent:THashTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(AValue,AParent:THashTreeObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function KeyFirst(AParent:THashTreeObject; AKeyHash:LongWord):THashTreeObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Add(AValue,AParent:TTreeObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:TTreeObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Insert(APrev,AValue,AParent:TTreeObject):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Move(AValue,AParent:TTreeObject); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashLinkedObjTree''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashLinkedObjTree = class(THashLinkedTree)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: THashLinkedTree with Auto Free of List Objects | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearListItems(AParent:THashTreeObject);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStringObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStringObject = class(TListObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with Prev/Next/Value/Hash for use in StringLists | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FValue:String;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FData:TObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FHash:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetValue(const AValue:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Value:String read FValue write SetValue;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Data:TObject read FData write FData;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Hash:LongWord read FHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedStringList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedStringList = class(TStrings)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A List of TStringObjects with automatic Prev/Next Links | ||
+ | Mostly identical methods to TStringList with addition of First/Last/Next/Prev | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|Note: Currently does not implement Sorting or Duplicate handling | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public''' (Public destructor for FPC RTL)</div> | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFirst:TStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:TStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSorted:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FUpdating:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDuplicates:TDuplicates;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FOnChange:TNotifyEvent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FOnChanging:TNotifyEvent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure QuickSort(L,R:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSorted(Value:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetItem(AIndex:Integer):TStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Link(AValue:TStringObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEx(APrev,AValue:TStringObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Unlink(AValue:TStringObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Changed; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Changing; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Get(Index:Integer):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetObject(Index:Integer):TObject; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Put(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure PutObject(Index:Integer; AObject:TObject); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetUpdateState(Updating:Boolean); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Add(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Index:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Exchange(Index1,Index2:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Find(const S:String; var Index:Integer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Insert(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Sort; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property First:TStringObject read FFirst;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Last:TStringObject read FLast;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Duplicates:TDuplicates read FDuplicates write FDuplicates;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Sorted:Boolean read FSorted write SetSorted;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property OnChange:TNotifyEvent read FOnChange write FOnChange;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property OnChanging:TNotifyEvent read FOnChanging write FOnChanging;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStringBlock''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStringBlock = class(TListObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Block object for TLinkedStringListEx | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | Pointer to Allocated Memory Block | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | Size of Allocated Memory Block | ||
+ | |- | ||
+ | | <code>Start:LongWord;</code> | ||
+ | | Index of First Item in this Block | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | Current Items in this Block | ||
+ | |- | ||
+ | | <code>Capacity:LongWord;</code> | ||
+ | | Total Capacity of this Block | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStringObjectEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStringObjectEx = class(TStringObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TStringObject for use with StringListEx | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FBlock:TStringBlock;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Block:TStringBlock read FBlock write FBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TLinkedStringListEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TLinkedStringListEx = class(TLinkedStringList)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TLinkedStringList with block list for entry Indexing | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public''' (Public destructor for FPC RTL)</div> | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FRecent:TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FBlocks:TLinkedObjList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FCapacity:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetBlock(Index:Integer):TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddBlock(Block:TStringBlock; Index:Integer):TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteBlock(Block:TStringBlock):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UpdateBlocks(Block:TStringBlock):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetItem(Block:TStringBlock; Index:Integer):TStringObjectEx;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddItem(Block:TStringBlock; Index:Integer; Item:TStringObjectEx):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteItem(Block:TStringBlock; Index:Integer; Item:TStringObjectEx):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function IndexOfItem(Block:TStringBlock; Item:TStringObjectEx):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>function Get(Index:Integer):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCapacity:Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetObject(Index:Integer):TObject; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Put(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure PutObject(Index:Integer; AObject:TObject); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Add(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Index:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Exchange(Index1,Index2:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Insert(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashStringObject''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashStringObject = class(TStringObjectEx)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A TObject with Prev/Next/Hash for use in HashStringLists | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FList:THashLinkedStringList;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FKeyPrev:THashStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyNext:THashStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetHash(AHash:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetValue(const AValue:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property List:THashLinkedStringList read FList write FList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyPrev:THashStringObject read FKeyPrev write FKeyPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyNext:THashStringObject read FKeyNext write FKeyNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THashLinkedStringList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THashLinkedStringList = class(TLinkedStringListEx)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A List of TStringObjects with automatic hash buckets | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AKeyBits:Byte);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public''' (Public destructor for FPC RTL)</div> | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyLink(AValue:THashStringObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(AValue:THashStringObject):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function KeyFirst(AKeyHash:LongWord):THashStringObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Add(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Index:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Insert(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TIntegerList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIntegerList = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Same as a TStringList but for Integer values | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FItems:TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetItem(Idx:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetItem(Idx,Value:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Items[Idx:Integer]:Integer read GetItem write SetItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Count:Integer read GetCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Add(AValue:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Idx:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(AValue:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TDateTimeList''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TDateTimeList = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Same as a TStringList but for TDateTime values | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FItems:TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetItem(Idx:Integer):TdateTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetItem(Idx:Integer; Value:TDateTime);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Items[Idx:Integer]:TDateTime read GetItem write SetItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Count:Integer read GetCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Add(AValue:TDateTime):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Remove(AValue:TDateTime):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Idx:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(AValue:TDateTime):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TMemoryBlock''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TMemoryBlock = class(TListObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Block object for TMemoryStreamEx | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Memory:Pointer;</code> | ||
+ | | Pointer to Allocated Memory Block | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | Size of Allocated Memory Block | ||
+ | |- | ||
+ | | <code>Start:LongWord;</code> | ||
+ | | Start of Allocated Memory Block in the Stream | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TMemoryStreamEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TMemoryStreamEx = class(TStream)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A memory stream which does not Realloc on expand | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FRecent:TMemoryBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FBlocks:TLinkedObjList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSize:LongInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPosition:LongInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCapacity:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RoundSize(ASize:LongInt):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBlock(AOffset:LongWord):TMemoryBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadBlock(ABlock:TMemoryBlock; ABuffer:Pointer; AOffset,ACount:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteBlock(ABlock:TMemoryBlock; ABuffer:Pointer; AOffset,ACount:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetCapacity(ACapacity:LongWord);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetSize(ASize:LongInt); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Read(var ABuffer; ACount:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(const ABuffer; ACount:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Seek(AOffset:LongInt; AOrigin:Word):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SaveToStream(AStream:TStream);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure LoadFromStream(AStream:TStream);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SaveToFile(const AFileName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure LoadFromFile(const AFileName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStreamEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStreamEx = class(TStream)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A 64bit capable Stream class | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>function GetPositionEx:Int64;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>procedure SetPositionEx(const Pos:Int64);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSizeEx:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetSizeEx(const NewSize:Int64); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property PositionEx:Int64 read GetPositionEx write SetPositionEx;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SizeEx:Int64 read GetSizeEx write SetSizeEx;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekEx(const Offset:Int64; Origin:Word):Int64; virtual; abstract;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''THandleStreamEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>THandleStreamEx = class(TStreamEx)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A 64bit capable Handle Stream class | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(AHandle:Integer);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FHandle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetSize(NewSize:LongInt); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSizeEx(const NewSize:Int64); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Read(var Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(const Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Seek(Offset:LongInt; Origin:Word):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekEx(const Offset:Int64; Origin:Word):Int64; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Handle:Integer read FHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TFileStreamEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TFileStreamEx = class(THandleStreamEx)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A 64bit capable File Stream class | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(const FileName:String;Mode:Word);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStringItemEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStringItemEx = class(TObject)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A String item with Hash for use in TStringListEx | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FValue:String;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FData:TObject;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FHash:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetValue(const AValue:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Value:String read FValue write SetValue;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Data:TObject read FData write FData;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Hash:LongWord read FHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''TStringListEx''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TStringListEx = class(TStrings)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A String List class that does not use realloc to grow | ||
+ | Mostly identical methods to TStringList with addition of block list | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|Note: Currently does not implement Sorting or Duplicate handling | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public''' (Public destructor for FPC RTL)</div> | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FRecent:TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FBlocks:TLinkedObjList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FCount:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCapacity:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSorted:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FUpdating:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDuplicates:TDuplicates;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FOnChange:TNotifyEvent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FOnChanging:TNotifyEvent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure QuickSort(L,R:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSorted(Value:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetBlock(Index:Integer):TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddBlock(Block:TStringBlock; Index:Integer):TStringBlock;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteBlock(Block:TStringBlock):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UpdateBlocks(Block:TStringBlock):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetItem(Block:TStringBlock; Index:Integer):TStringItemEx;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddItem(Block:TStringBlock; Index:Integer; Item:TStringItemEx):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteItem(Block:TStringBlock; Index:Integer; Item:TStringItemEx):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Changed; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Changing; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Get(Index:Integer):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCapacity:Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCount:Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetObject(Index:Integer):TObject; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Put(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure PutObject(Index:Integer; AObject:TObject); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetUpdateState(Updating:Boolean); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Add(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Clear; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Delete(Index:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Exchange(Index1,Index2:Integer); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Find(const S:String; var Index:Integer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IndexOf(const S:String):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Insert(Index:Integer; const S:String); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure Sort; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Duplicates:TDuplicates read FDuplicates write FDuplicates;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Sorted:Boolean read FSorted write SetSorted;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property OnChange:TNotifyEvent read FOnChange write FOnChange;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property OnChanging:TNotifyEvent read FOnChanging write FOnChanging;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 05:16, 14 June 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo classes unit
To be documented
Constants
*_Error
btree_*
*_Hash*
*_Delta
Type definitions
None defined
Class definitions
TThreadEx
TThreadEx = class(TThread)
TTimerEx
TTimerEx = class(TObject)
TObjList
TObjList = class(TList)
TThreadObjList
TThreadObjList = class(TThreadList)
TListObject
TListObject = class(TObject)
TLinkedList
TLinkedList = class(TObject)
TLinkedObjList
TLinkedObjList = class(TLinkedList)
TThreadLinkedObjList
TThreadLinkedObjList = class(TLinkedList)
TTreeObject
TTreeObject = class(TListObject)
TLinkedTree
TLinkedTree = class(TObject)
TLinkedObjTree
TLinkedObjTree = class(TLinkedTree)
TBtreeObject
TBtreeObject = class(TObject)
TLinkedBtree
TLinkedBtree = class(TObject)
TLinkedObjBtree
TLinkedObjBtree = class(TLinkedBtree)
THashListObject
THashListObject = class(TListObject)
THashLinkedList
THashLinkedList = class(TLinkedList)
THashLinkedObjList
THashLinkedObjList = class(THashLinkedList)
THashTreeObject
THashTreeObject = class(TTreeObject)
THashLinkedTree
THashLinkedTree = class(TLinkedTree)
THashLinkedObjTree
THashLinkedObjTree = class(THashLinkedTree)
TStringObject
TStringObject = class(TListObject)
TLinkedStringList
TLinkedStringList = class(TStrings)
TStringBlock
TStringBlock = class(TListObject)
TStringObjectEx
TStringObjectEx = class(TStringObject)
TLinkedStringListEx
TLinkedStringListEx = class(TLinkedStringList)
THashStringObject
THashStringObject = class(TStringObjectEx)
THashLinkedStringList
THashLinkedStringList = class(TLinkedStringListEx)
TIntegerList
TIntegerList = class(TObject)
TDateTimeList
TDateTimeList = class(TObject)
TMemoryBlock
TMemoryBlock = class(TListObject)
TMemoryStreamEx
TMemoryStreamEx = class(TStream)
TStreamEx
TStreamEx = class(TStream)
THandleStreamEx
THandleStreamEx = class(TStreamEx)
TFileStreamEx
TFileStreamEx = class(THandleStreamEx)
TStringItemEx
TStringItemEx = class(TObject)
TStringListEx
TStringListEx = class(TStrings)
Public variables
None defined
Function declarations
TThreadEx
TTimerEx
TObjList
TThreadObjList
TLinkedList
function TLinkedList.Link(AValue:TListObject):Boolean;
function TLinkedList.LinkEx(APrev,AValue:TListObject):Boolean;
function TLinkedList.Unlink(AValue:TListObject):Boolean;
function TLinkedList.Add(AValue:TListObject):Boolean;
function TLinkedList.Remove(AValue:TListObject):Boolean;
function TLinkedList.Insert(APrev,AValue:TListObject):Boolean;
TLinkedObjList
TThreadLinkedObjList
TLinkedTree
function TLinkedTree.Link(AValue,AParent:TTreeObject):Boolean;
function TLinkedTree.LinkEx(APrev,AValue,AParent:TTreeObject):Boolean;
function TLinkedTree.Add(AValue,AParent:TTreeObject):Boolean;
function TLinkedTree.Remove(AValue:TTreeObject):Boolean;
function TLinkedTree.Insert(APrev,AValue,AParent:TTreeObject):Boolean;
function TLinkedTree.FirstChild(AParent:TTreeObject):TTreeObject;
function TLinkedTree.LastChild(AParent:TTreeObject):TTreeObject;
TLinkedObjTree
procedure TLinkedObjTree.ClearListItems(AParent:TTreeObject);
TBtreeObject
TLinkedBtree
procedure TLinkedBtree.SetOrder(AOrder:LongWord);
function TLinkedBtree.PropogateDrop(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.PropogateMerge(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.PropogateSplit(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.GetCount(AEntry:TBtreeObject):LongWord;
function TLinkedBtree.GetDepth(AEntry:TBtreeObject):LongWord;
function TLinkedBtree.GetEnd(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetStart(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetBlank(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetMedian(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetDrop(AEntry:TBtreeObject; var ALeft:Boolean):TBtreeObject;
function TLinkedBtree.GetMerge(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetBorrow(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetTarget(ADrop:TBtreeObject; ALeft:Boolean):TBtreeObject;
function TLinkedBtree.SetParent(AEntry,AParent:TBtreeObject):Boolean;
function TLinkedBtree.GetLefthand(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetRighthand(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetLeftmost(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetRightmost(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetSuccessor(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetPredecessor(AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.GetPosition(AStart,AEntry:TBtreeObject):TBtreeObject;
function TLinkedBtree.Push(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Split(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Swap(AEntry,ASwap:TBtreeObject; ALeft:Boolean):Boolean;
function TLinkedBtree.Drop(AEntry,ADrop,ATarget:TBtreeObject; ALeft:Boolean):Boolean;
function TLinkedBtree.Merge(AEntry,AMerge:TBtreeObject):Boolean;
function TLinkedBtree.Borrow(AEntry,ABorrow:TBtreeObject):Boolean;
function TLinkedBtree.Link(AEntry,ANext:TBtreeObject):Boolean;
function TLinkedBtree.Unlink(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.LinkBlank(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.UnlinkBlank(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Attach(AParent,AEntry,ARight:TBtreeObject):Boolean;
function TLinkedBtree.Detach(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.PushNode(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.SplitNode(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.DropNode(AEntry,ADrop,ATarget:TBtreeObject; ALeft:Boolean):Boolean;
function TLinkedBtree.MergeNode(AEntry,AMerge:TBtreeObject):Boolean;
function TLinkedBtree.BorrowEntry(AEntry,ABorrow:TBtreeObject):Boolean;
function TLinkedBtree.SwapEntry(AEntry,ASwap:TBtreeObject; ALeft:Boolean):Boolean;
function TLinkedBtree.SetParentEntry(AEntry,AParent:TBtreeObject):Boolean;
function TLinkedBtree.CreateBlank:TBtreeObject;
function TLinkedBtree.DeleteBlank(ABlank:TBtreeObject):Boolean;
function TLinkedBtree.AttachBlank(ABlank:TBtreeObject):Boolean;
function TLinkedBtree.DetachBlank(ABlank:TBtreeObject):Boolean;
function TLinkedBtree.AttachEntry(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.DetachEntry(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.RequirePush(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.RequireSplit(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.RequireDrop(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.RequireMerge(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.RequireBorrow(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Compare(AEntry1,AEntry2:TBtreeObject):Integer;
function TLinkedBtree.Add(AParent,AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Insert(AEntry:TBtreeObject):Boolean;
function TLinkedBtree.Remove(AEntry:TBtreeObject):Boolean;
procedure TLinkedBtree.Empty;
procedure TLinkedBtree.Rebuild;
TLinkedObjBtree
procedure TLinkedObjBtree.ClearBtree;
procedure TLinkedObjBtree.EmptyBtree;
THashListObject
THashLinkedList
function THashLinkedList.KeyLink(AValue:THashListObject):Boolean;
function THashLinkedList.KeyUnlink(AValue:THashListObject):Boolean;
function THashLinkedList.KeyFirst(AKeyHash:LongWord):THashListObject;
function THashLinkedList.Add(AValue:TListObject):Boolean;
function THashLinkedList.Remove(AValue:TListObject):Boolean;
function THashLinkedList.Insert(APrev,AValue:TListObject):Boolean;
THashLinkedObjList
THashTreeObject
function THashTreeObject.KeyLink(AValue:THashTreeObject):Boolean;
function THashTreeObject.KeyUnlink(AValue:THashTreeObject):Boolean;
function THashTreeObject.KeyFirst(AKeyHash:LongWord):THashTreeObject;
THashLinkedTree
function THashLinkedTree.KeyLink(AValue,AParent:THashTreeObject):Boolean;
function THashLinkedTree.KeyUnlink(AValue,AParent:THashTreeObject):Boolean;
function THashLinkedTree.KeyFirst(AParent:THashTreeObject; AKeyHash:LongWord):THashTreeObject;
function THashLinkedTree.Add(AValue,AParent:TTreeObject):Boolean;
function THashLinkedTree.Remove(AValue:TTreeObject):Boolean;
function THashLinkedTree.Insert(APrev,AValue,AParent:TTreeObject):Boolean;
THashLinkedObjTree
procedure THashLinkedObjTree.ClearListItems(AParent:THashTreeObject);
TStringObject
TLinkedStringList
function TLinkedStringList.GetItem(AIndex:Integer):TStringObject;
function TLinkedStringList.Link(AValue:TStringObject):Boolean;
function TLinkedStringList.LinkEx(APrev,AValue:TStringObject):Boolean;
function TLinkedStringList.Unlink(AValue:TStringObject):Boolean;
procedure TLinkedStringList.Put(Index:Integer;const S:String);
procedure TLinkedStringList.PutObject(Index:Integer; AObject:TObject);
procedure TLinkedStringList.SetUpdateState(Updating:Boolean);
function TLinkedStringList.IndexOf(const S:String):Integer;
procedure TLinkedStringList.Insert(Index:Integer; const S:String);
TStringBlock
TLinkedStringListEx
function TLinkedStringListEx.GetBlock(Index:Integer):TStringBlock;
function TLinkedStringListEx.AddBlock(Block:TStringBlock; Index:Integer):TStringBlock;
function TLinkedStringListEx.DeleteBlock(Block:TStringBlock):Boolean;
function TLinkedStringListEx.UpdateBlocks(Block:TStringBlock):Boolean;
function TLinkedStringListEx.GetItem(Block:TStringBlock; Index:Integer):TStringObjectEx;
function TLinkedStringListEx.AddItem(Block:TStringBlock; Index:Integer; Item:TStringObjectEx):Boolean;
function TLinkedStringListEx.DeleteItem(Block:TStringBlock;Index:Integer; Item:TStringObjectEx):Boolean;
function TLinkedStringListEx.IndexOfItem(Block:TStringBlock; Item:TStringObjectEx):Integer;
function TLinkedStringListEx.GetObject(Index:Integer):TObject;
procedure TLinkedStringListEx.Put(Index:Integer;const S:String);
procedure TLinkedStringListEx.PutObject(Index:Integer; AObject:TObject);
procedure TLinkedStringListEx.Exchange(Index1,Index2:Integer);
function TLinkedStringListEx.IndexOf(const S:String):Integer;
procedure TLinkedStringListEx.Insert(Index:Integer; const S:String);
THashStringObject
THashLinkedStringList
function THashLinkedStringList.KeyLink(AValue:THashStringObject):Boolean;
function THashLinkedStringList.KeyUnlink(AValue:THashStringObject):Boolean;
function THashLinkedStringList.KeyFirst(AKeyHash:LongWord):THashStringObject;
function THashLinkedStringList.IndexOf(const S:String):Integer;
procedure THashLinkedStringList.Insert(Index:Integer; const S:String);
TIntegerList
TDateTimeList
procedure TDateTimeList.SetItem(Idx:Integer; Value:TDateTime);
TMemoryBlock
TMemoryStreamEx
function TMemoryStreamEx.GetBlock(AOffset:LongWord):TMemoryBlock;
function TMemoryStreamEx.ReadBlock(ABlock:TMemoryBlock; ABuffer:Pointer; AOffset,ACount:LongWord):LongWord;
function TMemoryStreamEx.WriteBlock(ABlock:TMemoryBlock; ABuffer:Pointer; AOffset,ACount:LongWord):LongWord;
function TMemoryStreamEx.Read(var ABuffer; ACount:LongInt):LongInt;
function TMemoryStreamEx.Write(const ABuffer; ACount:LongInt):LongInt;
function TMemoryStreamEx.Seek(AOffset:LongInt; AOrigin:Word):LongInt;
procedure TMemoryStreamEx.SaveToFile(const AFileName:String);
procedure TMemoryStreamEx.LoadFromFile(const AFileName:String);
TStreamEx
THandleStreamEx
function THandleStreamEx.Read(var Buffer; Count:Longint):Longint;
function THandleStreamEx.Write(const Buffer; Count:Longint):Longint;
function THandleStreamEx.Seek(Offset:Longint; Origin:Word):Longint;
function THandleStreamEx.SeekEx(const Offset:Int64; Origin:Word):Int64;
TFileStreamEx
constructor TFileStreamEx.Create(const FileName:String; Mode:Word);
TStringItemEx
TStringListEx
function TStringListEx.AddBlock(Block:TStringBlock; Index:Integer):TStringBlock;
function TStringListEx.DeleteBlock(Block:TStringBlock):Boolean;
function TStringListEx.UpdateBlocks(Block:TStringBlock):Boolean;
function TStringListEx.GetItem(Block:TStringBlock; Index:Integer):TStringItemEx;
function TStringListEx.AddItem(Block:TStringBlock; Index:Integer; Item:TStringItemEx):Boolean;
function TStringListEx.DeleteItem(Block:TStringBlock; Index:Integer; Item:TStringItemEx):Boolean;
procedure TStringListEx.PutObject(Index:Integer; AObject:TObject);
function TStringListEx.IndexOf(const S:String):Integer;
procedure TStringListEx.Insert(Index:Integer; const S:String);
Return to Unit Reference