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