10#include "roseInternal.h"
31 typedef size_t size_type;
152 bool is_past_the_end()
const;
154 std::string current_node_id()
const;
156 std::string parent_node_id()
const;
158 void print_top_element()
const;
165 bool _skipChildrenOnForward;
166 bool _withNullValues;
170 static const int ROOT_NODE_INDEX=-2;
172 typedef struct {
SgNode* node;
int index;} stack_element;
173 std::stack<stack_element> _stack;
174 SgNode* access_node_by_parent_and_index(
SgNode* p,
int index)
const;
177 int num_children(
SgNode* p)
const;
193 std::list<SgFunctionDeclaration*> findFunctionDeclarationsByName(std::string name);
202static bool isSubTypeOf(VariantT DerivedClassVariant, VariantT BaseClassVariant);
204static bool isSubType(VariantT DerivedClassVariant, VariantT BaseClassVariant);
205 void setWithNullValues(
bool flag);
206 void setWithTemplates(
bool flag);
212 bool _withNullValues;
bool is_at_first_child() const
Test whether iterator is at the first child of its parent.
bool is_at_root() const
Test whether iterator is pointing to root node of AST to be traversed.
iterator & withNullValues()
Mode to enable or disable skipping null child pointers.
iterator operator++(int)
Advance the iterator.
iterator & withoutNullValues()
Mode to enable or disable skipping null child pointers.
bool operator!=(const iterator &x) const
Test iterator inequality.
SgNode * parent() const
Parent AST node relative to the iteration.
iterator()
Default constructor.
iterator(SgNode *x, bool withNullValues, bool withTemplates)
Construct an iterator pointing to a particular AST node.
int stack_size() const
Depth of traversal.
iterator & operator++()
Advance the iterator.
SgNode * operator*() const
Dereference an iterator.
void skipChildrenOnForward()
Cause children to be skipped on the next advancement.
bool operator==(const iterator &x) const
Test iterator equality.
bool is_at_last_child() const
Test whether iterator as at the last child of its parent.
Interface for iterating over an AST.
static bool isSubTypeOf(VariantT DerivedClassVariant, VariantT BaseClassVariant)
determines based on VariantT whether a ROSE-AST node is a subtype of another node type.
static bool isTemplateNode(SgNode *node)
determines whether a node is used to represent the root node of a template.
RoseAst(SgNode *astNode)
Defines the starting node for traversal.
iterator begin()
Iterator positioned at root of subtree.
static bool isSubType(VariantT DerivedClassVariant, VariantT BaseClassVariant)
deprecated, use isSubTypeOf instead
iterator end()
Iterator positioned at the end of the traversal.
static bool isTemplateInstantiationNode(SgNode *node)
determines whether a node is used to represent the root node of a template instantiation
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
This class represents the base class for all IR nodes within Sage III.