codetools: h2p: inserting auto generated nodes in front of current

git-svn-id: trunk@14675 -
This commit is contained in:
mattias 2008-03-28 09:56:00 +00:00
parent 2c7cc21649
commit 58a80bb376

View File

@ -141,6 +141,7 @@ type
property NodeCount: integer read FNodeCount; property NodeCount: integer read FNodeCount;
procedure DeleteNode(ANode: TH2PBaseNode); procedure DeleteNode(ANode: TH2PBaseNode);
procedure AddNodeAsLastChild(ParentNode, ANode: TH2PBaseNode); procedure AddNodeAsLastChild(ParentNode, ANode: TH2PBaseNode);
procedure AddNodeAsPreLastChild(ParentNode, ANode: TH2PBaseNode);
procedure AddNodeInFrontOf(NextBrotherNode, ANode: TH2PBaseNode); procedure AddNodeInFrontOf(NextBrotherNode, ANode: TH2PBaseNode);
procedure MoveChildsInFront(ANode: TH2PBaseNode); procedure MoveChildsInFront(ANode: TH2PBaseNode);
function ContainsNode(ANode: TH2PBaseNode): boolean; function ContainsNode(ANode: TH2PBaseNode): boolean;
@ -257,7 +258,8 @@ type
function CreateH2PNode(const PascalName, CName: string; CNode: TCodeTreeNode; function CreateH2PNode(const PascalName, CName: string; CNode: TCodeTreeNode;
PascalDesc: TCodeTreeNodeDesc; const PascalCode: string; PascalDesc: TCodeTreeNodeDesc; const PascalCode: string;
ParentNode: TH2PNode = nil; IsGlobal: boolean = true): TH2PNode; ParentNode: TH2PNode = nil; IsGlobal: boolean = true;
InsertAsPreLast: boolean = false): TH2PNode;
function CreateAutoGeneratedH2PNode(var PascalName: string; CNode: TCodeTreeNode; function CreateAutoGeneratedH2PNode(var PascalName: string; CNode: TCodeTreeNode;
PascalDesc: TCodeTreeNodeDesc; const PascalCode: string; PascalDesc: TCodeTreeNodeDesc; const PascalCode: string;
ParentNode: TH2PNode = nil; IsGlobal: boolean = true): TH2PNode; ParentNode: TH2PNode = nil; IsGlobal: boolean = true): TH2PNode;
@ -2151,7 +2153,7 @@ end;
function TH2PasTool.CreateH2PNode(const PascalName, CName: string; function TH2PasTool.CreateH2PNode(const PascalName, CName: string;
CNode: TCodeTreeNode; PascalDesc: TCodeTreeNodeDesc; CNode: TCodeTreeNode; PascalDesc: TCodeTreeNodeDesc;
const PascalCode: string; const PascalCode: string;
ParentNode: TH2PNode; IsGlobal: boolean): TH2PNode; ParentNode: TH2PNode; IsGlobal: boolean; InsertAsPreLast: boolean): TH2PNode;
begin begin
Result:=TH2PNode.Create; Result:=TH2PNode.Create;
Result.PascalName:=PascalName; Result.PascalName:=PascalName;
@ -2159,6 +2161,9 @@ begin
Result.CNode:=CNode; Result.CNode:=CNode;
Result.PascalDesc:=PascalDesc; Result.PascalDesc:=PascalDesc;
Result.PascalCode:=PascalCode; Result.PascalCode:=PascalCode;
if InsertAsPreLast then
Tree.AddNodeAsPreLastChild(ParentNode,Result)
else
Tree.AddNodeAsLastChild(ParentNode,Result); Tree.AddNodeAsLastChild(ParentNode,Result);
if IsGlobal then begin if IsGlobal then begin
if PascalName<>'' then if PascalName<>'' then
@ -2178,7 +2183,7 @@ function TH2PasTool.CreateAutoGeneratedH2PNode(var PascalName: string;
begin begin
Node:=FindH2PNodeWithPascalName(TestName); Node:=FindH2PNodeWithPascalName(TestName);
if (Node=nil) then begin if (Node=nil) then begin
Node:=CreateH2PNode(TestName,'',CNode,PascalDesc,PascalCode); Node:=CreateH2PNode(TestName,'',CNode,PascalDesc,PascalCode,nil,true,true);
Result:=true; Result:=true;
end else if ((Node.CNode=CNode) and (Node.PascalDesc=PascalDesc) end else if ((Node.CNode=CNode) and (Node.PascalDesc=PascalDesc)
and (Node.PascalCode=PascalCode) and (Node.PascalCode=PascalCode)
@ -2749,6 +2754,16 @@ begin
inc(FNodeCount); inc(FNodeCount);
end; end;
procedure TH2PTree.AddNodeAsPreLastChild(ParentNode, ANode: TH2PBaseNode);
begin
if (ParentNode=nil) and (LastRoot<>nil) then
AddNodeInFrontOf(LastRoot,ANode)
else if (ParentNode<>nil) and (ParentNode.FirstChild<>nil) then
AddNodeInFrontOf(ParentNode.LastChild,ANode)
else
AddNodeAsLastChild(ParentNode,ANode);
end;
procedure TH2PTree.AddNodeInFrontOf(NextBrotherNode, ANode: TH2PBaseNode); procedure TH2PTree.AddNodeInFrontOf(NextBrotherNode, ANode: TH2PBaseNode);
begin begin
ANode.Parent:=NextBrotherNode.Parent; ANode.Parent:=NextBrotherNode.Parent;