patch1
This commit is contained in:
parent
20a343f501
commit
c92fd3b638
|
|
@ -7,6 +7,7 @@ public
|
|||
function Append(data: any): boolean;
|
||||
function Insert(data: any): boolean;
|
||||
function InsertAfter(data: any; pos_data: any);
|
||||
function InsertBefore(data: any; pos_data: any);
|
||||
function Get(name: string; index: integer);
|
||||
function GetElements(include_removed: boolean): array of tslobj;
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ private
|
|||
bucket_: array of LinkList;
|
||||
child_: array of string;
|
||||
current_index_: integer;
|
||||
min_index_; integer;
|
||||
min_index_: integer;
|
||||
max_index_: integer;
|
||||
end;
|
||||
|
||||
|
|
@ -28,6 +29,7 @@ public
|
|||
function Add(data: any);
|
||||
function Delete(data: any): boolean;
|
||||
function InsertAfter(data: any; pos_data: any): boolean;
|
||||
function InsertBefore(data: any; pos_data: any): boolean;
|
||||
function Name(): string;
|
||||
function Size(): integer;
|
||||
function First(): Node;
|
||||
|
|
@ -194,10 +196,20 @@ begin
|
|||
end
|
||||
end;
|
||||
|
||||
function TSOfficeContainer.InsertBefore(data: any; pos_data: any);
|
||||
begin
|
||||
for i:=0 to current_index_ do
|
||||
begin
|
||||
obj := bucket_[i];
|
||||
if ifObj(obj) then
|
||||
if obj.InsertBefore(data, pos_data) then break;
|
||||
end
|
||||
end;
|
||||
|
||||
function TSOfficeContainer.GetElements(include_removed: boolean = true): array of tslobj;
|
||||
begin
|
||||
arr := array();
|
||||
for i:=min_index_ to current_index_ do
|
||||
pf := function(arr, i)
|
||||
begin
|
||||
obj := bucket_[i];
|
||||
if ifObj(obj) then
|
||||
|
|
@ -211,6 +223,10 @@ begin
|
|||
end
|
||||
end
|
||||
end
|
||||
for i:=0 to current_index_ do
|
||||
##pf(arr, i);
|
||||
for i:=min_index_ to -1 do
|
||||
##pf(arr, i);
|
||||
return arr;
|
||||
end;
|
||||
|
||||
|
|
@ -329,6 +345,28 @@ begin
|
|||
return false;
|
||||
end;
|
||||
|
||||
function LinkList.InsertBefore(data: any; pos_data: any): boolean;
|
||||
begin
|
||||
node := {self.}First();
|
||||
prev := nil;
|
||||
while ifObj(node) do
|
||||
begin
|
||||
if node.data = pos_data then
|
||||
begin
|
||||
new_node := new Node();
|
||||
new_node.data := data;
|
||||
new_node.next := node;
|
||||
if ifnil(prev) then head_.next := new_node;
|
||||
else prev.next := new_node;
|
||||
size_++;
|
||||
return true;
|
||||
end
|
||||
prev := node;
|
||||
node := node.next;
|
||||
end
|
||||
return false;
|
||||
end;
|
||||
|
||||
function LinkList.Delete(data: any): boolean;
|
||||
begin
|
||||
node := {self.}First();
|
||||
|
|
|
|||
Loading…
Reference in New Issue