mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-20 21:39:26 +01:00
* New node pruning methods
This commit is contained in:
parent
2a44ffe51b
commit
7488f1e3f8
@ -420,6 +420,9 @@ interface
|
|||||||
{$ifdef DEBUG_NODE_XML}
|
{$ifdef DEBUG_NODE_XML}
|
||||||
procedure XMLPrintNodeData(var T: Text); override;
|
procedure XMLPrintNodeData(var T: Text); override;
|
||||||
{$endif DEBUG_NODE_XML}
|
{$endif DEBUG_NODE_XML}
|
||||||
|
{ Marks the current node for deletion and sets 'left' to nil.
|
||||||
|
Returns what 'left' was previously set to }
|
||||||
|
function PruneKeepLeft: TNode; {$ifdef USEINLINE}inline;{$endif USEINLINE}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//pbinarynode = ^tbinarynode;
|
//pbinarynode = ^tbinarynode;
|
||||||
@ -442,6 +445,9 @@ interface
|
|||||||
procedure XMLPrintNodeData(var T: Text); override;
|
procedure XMLPrintNodeData(var T: Text); override;
|
||||||
{$endif DEBUG_NODE_XML}
|
{$endif DEBUG_NODE_XML}
|
||||||
procedure printnodelist(var t:text);
|
procedure printnodelist(var t:text);
|
||||||
|
{ Marks the current node for deletion and sets 'right' to nil.
|
||||||
|
Returns what 'right' was previously set to }
|
||||||
|
function PruneKeepRight: TNode; {$IFDEF USEINLINE}inline;{$endif USEINLINE}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//ptertiarynode = ^ttertiarynode;
|
//ptertiarynode = ^ttertiarynode;
|
||||||
@ -461,6 +467,9 @@ interface
|
|||||||
{$ifdef DEBUG_NODE_XML}
|
{$ifdef DEBUG_NODE_XML}
|
||||||
procedure XMLPrintNodeData(var T: Text); override;
|
procedure XMLPrintNodeData(var T: Text); override;
|
||||||
{$endif DEBUG_NODE_XML}
|
{$endif DEBUG_NODE_XML}
|
||||||
|
{ Marks the current node for deletion and sets 'third' to nil.
|
||||||
|
Returns what 'third' was previously set to }
|
||||||
|
function PruneKeepThird: TNode; {$IFDEF USEINLINE}inline;{$endif USEINLINE}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
tbinopnode = class(tbinarynode)
|
tbinopnode = class(tbinarynode)
|
||||||
@ -1137,6 +1146,16 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ Marks the current node for deletion and sets 'left' to nil.
|
||||||
|
Returns what 'left' was previously set to }
|
||||||
|
function tunarynode.PruneKeepLeft: TNode; {$IFDEF USEINLINE}inline;{$endif USEINLINE}
|
||||||
|
begin
|
||||||
|
Result := left;
|
||||||
|
left := nil;
|
||||||
|
Include(flags, nf_do_not_execute);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TBINARYNODE
|
TBINARYNODE
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -1281,6 +1300,16 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ Marks the current node for deletion and sets 'right' to nil.
|
||||||
|
Returns what 'right' was previously set to }
|
||||||
|
function tbinarynode.PruneKeepRight: TNode; {$IFDEF USEINLINE}inline;{$endif USEINLINE}
|
||||||
|
begin
|
||||||
|
Result := right;
|
||||||
|
right := nil;
|
||||||
|
Include(flags, nf_do_not_execute);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TTERTIARYNODE
|
TTERTIARYNODE
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -1386,6 +1415,16 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ Marks the current node for deletion and sets 'third' to nil.
|
||||||
|
Returns what 'third' was previously set to }
|
||||||
|
function ttertiarynode.PruneKeepThird: TNode; {$IFDEF USEINLINE}inline;{$endif USEINLINE}
|
||||||
|
begin
|
||||||
|
Result := third;
|
||||||
|
third := nil;
|
||||||
|
Include(flags, nf_do_not_execute);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TBINOPNODE
|
TBINOPNODE
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user