C-Breeze
C Compiler Infrastructure

[ Project home page]

ReturnDismantle Class Reference

#include <dismantle.h>

Inheritance diagram for ReturnDismantle:

Changer List of all members.

Public Types

enum  Order { Preorder, Postorder, Both }
enum  Depth { Subtree, NodeOnly }

Public Member Functions

 ReturnDismantle (void)
virtual Nodeat_proc (procNode *, Order)
virtual Nodeat_return (returnNode *, Order)
Accessors
Methods to get and set fields in the class.

Order order () const
 Return the order in which Nodes of an AST should be visited.
Depth depth () const
 Return which Nodes of an AST should be visited.
bool delete_old () const
 Return whether this Changer deletes Nodes which are removed from the AST by "at_" methods.
"at_" methods
These methods define the functions that should be performed when different classes of Nodes are encountered in the AST. The most specific "at_" method that matches a given Node's class will be called.

virtual Nodeat_node (Node *the_node, Order ord)
virtual Nodeat_unit (unitNode *the_unit, Order ord)
virtual Nodeat_def (defNode *the_def, Order ord)
virtual Nodeat_decl (declNode *the_decl, Order ord)
virtual Nodeat_subdecl (subdeclNode *the_subdecl, Order ord)
virtual Nodeat_type (typeNode *the_type, Order ord)
virtual Nodeat_prim (primNode *the_prim, Order ord)
virtual Nodeat_tdef (tdefNode *the_tdef, Order ord)
virtual Nodeat_ptr (ptrNode *the_ptr, Order ord)
virtual Nodeat_array (arrayNode *the_array, Order ord)
virtual Nodeat_func (funcNode *the_func, Order ord)
virtual Nodeat_sue (sueNode *the_sue, Order ord)
virtual Nodeat_struct (structNode *the_struct, Order ord)
virtual Nodeat_union (unionNode *the_union, Order ord)
virtual Nodeat_enum (enumNode *the_enum, Order ord)
virtual Nodeat_suespec (suespecNode *the_suespec, Order ord)
virtual Nodeat_expr (exprNode *the_expr, Order ord)
virtual Nodeat_index (indexNode *the_index, Order ord)
virtual Nodeat_const (constNode *the_const, Order ord)
virtual Nodeat_id (idNode *the_id, Order ord)
virtual Nodeat_binary (binaryNode *the_binary, Order ord)
virtual Nodeat_unary (unaryNode *the_unary, Order ord)
virtual Nodeat_cast (castNode *the_cast, Order ord)
virtual Nodeat_comma (commaNode *the_comma, Order ord)
virtual Nodeat_ternary (ternaryNode *the_ternary, Order ord)
virtual Nodeat_call (callNode *the_call, Order ord)
virtual Nodeat_initializer (initializerNode *the_initializer, Order ord)
virtual Nodeat_stmt (stmtNode *the_stmt, Order ord)
virtual Nodeat_block (blockNode *the_block, Order ord)
virtual Nodeat_basicblock (basicblockNode *the_basicblock, Order ord)
virtual Nodeat_exprstmt (exprstmtNode *the_exprstmt, Order ord)
virtual Nodeat_target (targetNode *the_target, Order ord)
virtual Nodeat_label (labelNode *the_label, Order ord)
virtual Nodeat_case (caseNode *the_case, Order ord)
virtual Nodeat_selection (selectionNode *the_selection, Order ord)
virtual Nodeat_if (ifNode *the_if, Order ord)
virtual Nodeat_switch (switchNode *the_switch, Order ord)
virtual Nodeat_loop (loopNode *the_loop, Order ord)
virtual Nodeat_while (whileNode *the_while, Order ord)
virtual Nodeat_do (doNode *the_do, Order ord)
virtual Nodeat_for (forNode *the_for, Order ord)
virtual Nodeat_jump (jumpNode *the_jump, Order ord)
virtual Nodeat_goto (gotoNode *the_goto, Order ord)
virtual Nodeat_continue (continueNode *the_continue, Order ord)
virtual Nodeat_break (breakNode *the_break, Order ord)
virtual Nodeat_attrib (attribNode *the_attrib, Order ord)
virtual Nodeat_operand (operandNode *the_oper, Order ord)
virtual Nodeat_conditiongoto (conditiongotoNode *the_condgoto, Order ord)
virtual Nodeat_threeAddr (threeAddrNode *the_3addr, Order ord)
virtual Nodeat_text (textNode *the_text, Order ord)

Member Enumeration Documentation

enum Changer::Depth [inherited]
 

Enumeration values:
Subtree 
NodeOnly 

Definition at line 148 of file changer.h.

enum Changer::Order [inherited]
 

Enumeration values:
Preorder 
Postorder 
Both 

Definition at line 147 of file changer.h.


Constructor & Destructor Documentation

ReturnDismantle::ReturnDismantle void   ) 
 


Member Function Documentation

virtual Node* Changer::at_array arrayNode the_array,
Order  ord
[inline, virtual, inherited]
 

Definition at line 253 of file changer.h.

References Changer::at_type().

virtual Node* Changer::at_attrib attribNode the_attrib,
Order  ord
[inline, virtual, inherited]
 

Definition at line 364 of file changer.h.

References Changer::at_stmt().

virtual Node* Changer::at_basicblock basicblockNode the_basicblock,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in constantFoldingChanger.

Definition at line 313 of file changer.h.

References Changer::at_block().

virtual Node* Changer::at_binary binaryNode the_binary,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in SelectionDismantle, ArrowDismantle, and ExpressionDismantle.

Definition at line 286 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_block blockNode the_block,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in StaticToGlobalDismantle, and InitializerDismantle.

Definition at line 310 of file changer.h.

References Changer::at_stmt().

Referenced by Changer::at_basicblock().

virtual Node* Changer::at_break breakNode the_break,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in BreakContinueChanger.

Definition at line 358 of file changer.h.

References Changer::at_jump().

virtual Node* Changer::at_call callNode the_call,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in ExpressionDismantle.

Definition at line 301 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_case caseNode the_case,
Order  ord
[inline, virtual, inherited]
 

Definition at line 325 of file changer.h.

References Changer::at_target().

virtual Node* Changer::at_cast castNode the_cast,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in ExpressionDismantle.

Definition at line 292 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_comma commaNode the_comma,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in ExpressionDismantle.

Definition at line 295 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_conditiongoto conditiongotoNode the_condgoto,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in constantPropChanger, constantFoldingChanger, and constantsChanger.

Definition at line 370 of file changer.h.

References Changer::at_goto().

virtual Node* Changer::at_const constNode the_const,
Order  ord
[inline, virtual, inherited]
 

Definition at line 280 of file changer.h.

References Changer::at_index().

virtual Node* Changer::at_continue continueNode the_continue,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in BreakContinueChanger.

Definition at line 355 of file changer.h.

References Changer::at_jump().

virtual Node* Changer::at_decl declNode the_decl,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in StaticToGlobalDismantle, InitializerDismantle, FlattenDismantle, and ref_clone_changer.

Definition at line 232 of file changer.h.

References Changer::at_def().

Referenced by Changer::at_subdecl().

virtual Node* Changer::at_def defNode the_def,
Order  ord
[inline, virtual, inherited]
 

Definition at line 229 of file changer.h.

References Changer::at_node().

Referenced by Changer::at_decl(), and Changer::at_proc().

virtual Node* Changer::at_do doNode the_do,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in LoopDismantle.

Definition at line 343 of file changer.h.

References Changer::at_loop().

virtual Node* Changer::at_enum enumNode the_enum,
Order  ord
[inline, virtual, inherited]
 

Definition at line 268 of file changer.h.

References Changer::at_sue().

virtual Node* Changer::at_expr exprNode the_expr,
Order  ord
[inline, virtual, inherited]
 

Definition at line 274 of file changer.h.

References Changer::at_node().

Referenced by Changer::at_binary(), Changer::at_call(), Changer::at_cast(), Changer::at_comma(), Changer::at_index(), Changer::at_initializer(), Changer::at_operand(), Changer::at_ternary(), and Changer::at_unary().

virtual Node* Changer::at_exprstmt exprstmtNode the_exprstmt,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in SelectionDismantle, ExpressionDismantle, and FlattenDismantle.

Definition at line 316 of file changer.h.

References Changer::at_stmt().

virtual Node* Changer::at_for forNode the_for,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in LoopDismantle.

Definition at line 346 of file changer.h.

References Changer::at_loop().

virtual Node* Changer::at_func funcNode the_func,
Order  ord
[inline, virtual, inherited]
 

Definition at line 256 of file changer.h.

References Changer::at_type().

virtual Node* Changer::at_goto gotoNode the_goto,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in FlattenDismantle.

Definition at line 352 of file changer.h.

References Changer::at_jump().

Referenced by Changer::at_conditiongoto().

virtual Node* Changer::at_id idNode the_id,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in UnusedDeclarationCleanupChanger, and constantsChanger.

Definition at line 283 of file changer.h.

References Changer::at_index().

virtual Node* Changer::at_if ifNode the_if,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in SelectionDismantle.

Definition at line 331 of file changer.h.

References Changer::at_selection().

virtual Node* Changer::at_index indexNode the_index,
Order  ord
[inline, virtual, inherited]
 

Definition at line 277 of file changer.h.

References Changer::at_expr().

Referenced by Changer::at_const(), and Changer::at_id().

virtual Node* Changer::at_initializer initializerNode the_initializer,
Order  ord
[inline, virtual, inherited]
 

Definition at line 304 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_jump jumpNode the_jump,
Order  ord
[inline, virtual, inherited]
 

Definition at line 349 of file changer.h.

References Changer::at_stmt().

Referenced by Changer::at_break(), Changer::at_continue(), Changer::at_goto(), and Changer::at_return().

virtual Node* Changer::at_label labelNode the_label,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in LabelDismantle, FlattenDismantle, and ref_clone_changer.

Definition at line 322 of file changer.h.

References Changer::at_target().

virtual Node* Changer::at_loop loopNode the_loop,
Order  ord
[inline, virtual, inherited]
 

Definition at line 337 of file changer.h.

References Changer::at_stmt().

Referenced by Changer::at_do(), Changer::at_for(), and Changer::at_while().

virtual Node* Changer::at_node Node the_node,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in ref_clone_changer.

Definition at line 223 of file changer.h.

Referenced by Changer::at_def(), Changer::at_expr(), Changer::at_stmt(), Changer::at_text(), Changer::at_type(), and Changer::at_unit().

virtual Node* Changer::at_operand operandNode the_oper,
Order  ord
[inline, virtual, inherited]
 

Definition at line 367 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_prim primNode the_prim,
Order  ord
[inline, virtual, inherited]
 

Definition at line 244 of file changer.h.

References Changer::at_type().

virtual Node* ReturnDismantle::at_proc procNode ,
Order 
[virtual]
 

Reimplemented from Changer.

virtual Node* Changer::at_ptr ptrNode the_ptr,
Order  ord
[inline, virtual, inherited]
 

Definition at line 250 of file changer.h.

References Changer::at_type().

virtual Node* ReturnDismantle::at_return returnNode ,
Order 
[virtual]
 

Reimplemented from Changer.

virtual Node* Changer::at_selection selectionNode the_selection,
Order  ord
[inline, virtual, inherited]
 

Definition at line 328 of file changer.h.

References Changer::at_stmt().

Referenced by Changer::at_if(), and Changer::at_switch().

virtual Node* Changer::at_stmt stmtNode the_stmt,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in TernaryDismantle, and SelectionDismantle.

Definition at line 307 of file changer.h.

References Changer::at_node().

Referenced by Changer::at_attrib(), Changer::at_block(), Changer::at_exprstmt(), Changer::at_jump(), Changer::at_loop(), Changer::at_selection(), Changer::at_target(), and Changer::at_threeAddr().

virtual Node* Changer::at_struct structNode the_struct,
Order  ord
[inline, virtual, inherited]
 

Definition at line 262 of file changer.h.

References Changer::at_sue().

virtual Node* Changer::at_subdecl subdeclNode the_subdecl,
Order  ord
[inline, virtual, inherited]
 

Definition at line 235 of file changer.h.

References Changer::at_decl().

virtual Node* Changer::at_sue sueNode the_sue,
Order  ord
[inline, virtual, inherited]
 

Definition at line 259 of file changer.h.

References Changer::at_type().

Referenced by Changer::at_enum(), Changer::at_struct(), and Changer::at_union().

virtual Node* Changer::at_suespec suespecNode the_suespec,
Order  ord
[inline, virtual, inherited]
 

Definition at line 271 of file changer.h.

References Changer::at_type().

virtual Node* Changer::at_switch switchNode the_switch,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in SelectionDismantle, and ref_clone_changer.

Definition at line 334 of file changer.h.

References Changer::at_selection().

virtual Node* Changer::at_target targetNode the_target,
Order  ord
[inline, virtual, inherited]
 

Definition at line 319 of file changer.h.

References Changer::at_stmt().

Referenced by Changer::at_case(), and Changer::at_label().

virtual Node* Changer::at_tdef tdefNode the_tdef,
Order  ord
[inline, virtual, inherited]
 

Definition at line 247 of file changer.h.

References Changer::at_type().

virtual Node* Changer::at_ternary ternaryNode the_ternary,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in TernaryDismantle.

Definition at line 298 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_text textNode the_text,
Order  ord
[inline, virtual, inherited]
 

Definition at line 376 of file changer.h.

References Changer::at_node().

virtual Node* Changer::at_threeAddr threeAddrNode the_3addr,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in FlattenDismantle, function_inline, constantPropChanger, constantFoldingChanger, deadCodeEliminationChanger, constantsChanger, and deadcodeChanger.

Definition at line 373 of file changer.h.

References Changer::at_stmt().

virtual Node* Changer::at_type typeNode the_type,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in TernaryDismantle, and ExpressionDismantle.

Definition at line 241 of file changer.h.

References Changer::at_node().

Referenced by Changer::at_array(), Changer::at_func(), Changer::at_prim(), Changer::at_ptr(), Changer::at_sue(), Changer::at_suespec(), and Changer::at_tdef().

virtual Node* Changer::at_unary unaryNode the_unary,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in ExpressionDismantle.

Definition at line 289 of file changer.h.

References Changer::at_expr().

virtual Node* Changer::at_union unionNode the_union,
Order  ord
[inline, virtual, inherited]
 

Definition at line 265 of file changer.h.

References Changer::at_sue().

virtual Node* Changer::at_unit unitNode the_unit,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in Dismantle, and StaticToGlobalDismantle.

Definition at line 226 of file changer.h.

References Changer::at_node().

virtual Node* Changer::at_while whileNode the_while,
Order  ord
[inline, virtual, inherited]
 

Reimplemented in LoopDismantle.

Definition at line 340 of file changer.h.

References Changer::at_loop().

bool Changer::delete_old  )  const [inline, inherited]
 

Return whether this Changer deletes Nodes which are removed from the AST by "at_" methods.

Definition at line 209 of file changer.h.

References Changer::_delete_old.

Referenced by change_list().

Depth Changer::depth  )  const [inline, inherited]
 

Return which Nodes of an AST should be visited.

A value of SubTree specifies that the entire AST should be traversed. A value of NodeOnly specifies that only the root Node in the AST should be visited.

Definition at line 204 of file changer.h.

References Changer::_depth.

Order Changer::order  )  const [inline, inherited]
 

Return the order in which Nodes of an AST should be visited.

Nodes can be visited before their children (Preorder), after their children (Postorder), or both (Both).

Definition at line 196 of file changer.h.

References Changer::_order.


The documentation for this class was generated from the following file:

Generated on February 1, 2006
Back to the C-Breeze home page