ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sageGeneric.h File Reference

This file implements generic (template) sage query functions Currently this includes functions for: More...

#include <stdexcept>
#include <typeinfo>
#include <iostream>
#include "rose.h"
Include dependency graph for sageGeneric.h:

Go to the source code of this file.

Classes

struct  sg::ConstLike< T1, T2 >
 projects the constness of T1 on T2 More...
 
struct  sg::ConstLike< const T1, T2 >
 
struct  sg::DispatchHandler< _ReturnType >
 
struct  sg::VisitDispatcher< T >
 implementation for dispatcher objects ( invokes roseVisitor.handle(sgnode) ) More...
 
struct  sg::VisitDispatcher< T * >
 implementation for dispatcher pointers ( invokes roseVisitor->handle(sgnode) ) More...
 
struct  sg::DefaultHandler< SageNode >
 
struct  sg::AncestorTypeFinder< AncestorNode, QualSgNode >
 helper class for _ancestor More...
 
struct  sg::TypeRecoveryHandler< SageNode >
 

Namespaces

 sg
 

Constant Groups

 sg
 

Functions

template<class T >
static void sg::unused (const T &)
 portable implementation to avoid compiler warnings for unused parameter. More...
 
template<class T >
T & sg::deref (T *ptr)
 dereferences an object (= checked dereference in debug mode) More...
 
static void sg::unexpected_node (const SgNode &n)
 
template<class SageNode >
static SageNode & sg::assume_sage_type (SgNode &n)
 unchecked down cast from SgNode to SageNode More...
 
template<class SageNode >
static const SageNode & sg::assume_sage_type (const SgNode &n)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<class RoseVisitor , class SageNode >
static RoseVisitor sg::_dispatch (RoseVisitor rv, SageNode *n)
 for internal use (use dispatch instead) More...
 
template<class RoseVisitor >
RoseVisitor sg::dispatch (const RoseVisitor &rv, SgNode *n)
 uncovers the type of SgNode and passes it to an overloaded function handle in RoseVisitor. More...
 
template<class RoseVisitor >
RoseVisitor sg::dispatch (const RoseVisitor &rv, const SgNode *n)
 
template<class AncestorNode , class QualSgNode >
AncestorNode * sg::_ancestor (QualSgNode &n)
 implements the ancestor search More...
 
template<class AncestorNode >
AncestorNode * sg::ancestor (SgNode *n)
 finds an ancestor node with a given type More...
 
template<class AncestorNode >
const AncestorNode * sg::ancestor (const SgNode *n)
 
template<class AncestorNode >
AncestorNode & sg::ancestor (SgNode &n)
 
template<class AncestorNode >
const AncestorNode & sg::ancestor (const SgNode &n)
 
template<class SageNode >
SageNode * sg::assert_sage_type (SgNode *n)
 asserts that n has type SageNode More...
 
template<class SageNode >
const SageNode * sg::assert_sage_type (const SgNode *n)
 
static void sg::swap_parent (SgNode *lhs, SgNode *rhs)
 swaps the parent pointer of two nodes More...
 
static void sg::swap_parent (void *, void *)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<class SageNode , class SageChild >
void sg::swap_child (SageNode &lhs, SageNode &rhs, SageChild *(SageNode::*getter)() const, void(SageNode::*setter)(SageChild *))
 swaps children (of equal kind) between two ancestor nodes of the same type More...
 

Detailed Description

This file implements generic (template) sage query functions Currently this includes functions for:

  • dispatching according to the type of a sage node (dispatch)
  • finding the ancestor with a specific node type (ancestor)
  • recovering the type of a sage node assertively (assert_node_type)

Definition in file sageGeneric.h.