Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

ptrNode Class Reference

Pointer type node. More...

#include <ast.h>

Inheritance diagram for ptrNode::

typeNode Node List of all members.

Public Methods

 ptrNode (Type_qualifiers tq, typeNode *the_type, const Coord coord=Coord::Unknown)
 Create a pointer type. More...

virtual ~ptrNode ()
 Destroy a ptrNode. More...

bool qualified_equal_to (typeNode *node2, bool strict_toplevel, bool strict_recursive)
 Virtual type comparison routine. More...

virtual Nodeclone () const
 Clone the input node. More...

virtual void output_type (output_context &ct, Node *par, Assoc context, Type_qualifiers q)
 Output a type. More...

Type predicates
These methods support a variety of useful type predicates, most of which are self-explanatory. Each typeNode subclass overrides the methods for which it returns true. See typeNode for details.

virtual bool is_scalar () const
virtual bool is_derived () const
virtual bool is_pointer () const
AST Traversal
Methods to uniformly traverse the AST. See the documentation in the Node class.

virtual void visit (Visitor *the_visitor)
 Dispatch a Visitor. More...

virtual void walk (Walker &the_walker)
 Dispatch a Walker. More...

virtual Nodechange (Changer &the_changer, bool redispatch=false)
 Dispatch a Changer. More...


Detailed Description

Pointer type node.

This class represents the pointer-to compound type. The sub-type is the type that is pointed to. For example, for a node to represent "int **", the subtype would be "int *".

The NodeType is Ptr.


Constructor & Destructor Documentation

ptrNode::ptrNode Type_qualifiers    tq,
typeNode   the_type,
const Coord    coord = Coord::Unknown
 

Create a pointer type.

The new pointer type has the given type qualifiers and sub-type (the type being pointed to).

Parameters:
tq  the type qualifiers
the_type  the sub-type (the type being pointed to)
coord  the location of the construct in the source file.

ptrNode::~ptrNode   [virtual]
 

Destroy a ptrNode.

Warning:
Do not use the destructors to delete AST nodes. Instead, rely on the node garbage collector.


Member Function Documentation

Node * ptrNode::change Changer   the_changer,
bool    redispatch = false
[virtual]
 

Dispatch a Changer.

This abstract method works much the walker, but allows the tree to be changed.

Parameters:
the_changer  the specific Changer object to use.
redispatch  pass true to revisit parts of the tree that have changed.

Reimplemented from Node.

virtual Node* ptrNode::clone   const [inline, virtual]
 

Clone the input node.

This is not a "deep" clone, so be careful. For a deep clone, use the clone_changer class.

Returns:
a shallow copy of the node (no subtrees are copied).

Reimplemented from Node.

virtual bool ptrNode::is_derived   const [inline, virtual]
 

Reimplemented from typeNode.

virtual bool ptrNode::is_pointer   const [inline, virtual]
 

Reimplemented from typeNode.

virtual bool ptrNode::is_scalar   const [inline, virtual]
 

Reimplemented from typeNode.

void ptrNode::output_type output_context   ct,
Node   parent,
Assoc    context,
Type_qualifiers    q
[virtual]
 

Output a type.

Reimplemented from typeNode.

bool ptrNode::qualified_equal_to typeNode   node2,
bool    strict_toplevel,
bool    strict_recursive
[virtual]
 

Virtual type comparison routine.

Each typeNode subclass overrides this routine to provide its specific type comparison. This is used by the static equal_to() method to perform general deep type comparison.

See also:
equal_to()
Parameters:
other  the type to compare against
strict_toplevel  pass true to require strict comparison of top-level types
strict_recursive  pass true to require strict comparson of sub-types
Returns:
true, if the types pass the equality test

Reimplemented from typeNode.

void ptrNode::visit Visitor   the_visitor [virtual]
 

Dispatch a Visitor.

This abstract method is the entry point for the visitor design pattern. Each node subclass defines a visit() method that calls the appropriate at_ method in the visitor. For more information see the Visitor documentation.

Parameters:
the_visitor  the specific Visitor object to use.

Reimplemented from Node.

void ptrNode::walk Walker   the_walker [virtual]
 

Dispatch a Walker.

This abstract method works much like the visitor, but instead walks the entire underlying subtree calling the appropriate at_ method at each node. For more information see the Walker documentation.

Parameters:
the_walker  the specific Walker object to use.

Reimplemented from Node.


The documentation for this class was generated from the following files:
Generated on Thu Jan 10 12:06:32 2002 for C-Breeze by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001