template<typename CRT, typename 
API>
class Rose::Source::Generation::Factory< CRT, API >
constructs expressions and types for the given API 
- Template Parameters
 - 
  
  
 
Definition at line 34 of file Factory.h.
 
 | 
| 
  | Factory (Driver &driver_) | 
|   | 
| template<Object otag, typename... Args>  | 
| declaration_t< otag > *  | instantiate (symbol_t< otag > *API::*obj, SgNamedType *parent, Args... args) const | 
|   | Return an instantiation.  
  | 
|   | 
| template<Object otag, typename... Args>  | 
| reference_t< otag > *  | reference (symbol_t< otag > *API::*obj, SgNamedType *parent, Args... args) const | 
|   | Return an expression or type referencing the object.  
  | 
|   | 
| template<Object otag, typename... Args>  | 
| SgExpression *  | access (symbol_t< otag > *API::*obj, SgExpression *parent, Args... args) const | 
|   | Build expression to access a member of the parent expression.  
  | 
|   | 
| template<Object otag, typename... Args>  | 
| access_return_t< otag > *  | access (symbol_t< otag > *API::*obj, SgNamedType *parent, Args... args) const | 
|   | Build expression or type to access static member and subtype of the parent type.  
  | 
|   | 
◆ factory_t
template<typename CRT , typename 
API > 
 
      
 
 
◆ access_return_t
template<typename CRT , typename 
API > 
 
 
Select return type for access based on Object type. 
- Template Parameters
 - 
  
    | otag | must be one of a_class/a_typedef or a_variable/a_function  | 
  
   
Definition at line 102 of file Factory.h.
 
 
◆ instantiate()
template<typename CRT , typename 
API > 
 
template<
Object otag, typename... Args> 
 
      
 
Return an instantiation. 
- Template Parameters
 - 
  
    | otag | must be one of a_class/a_typedef/a_variable/a_function  | 
    | Args | types of the nodes to use as template arguments (SgType/SgExpression for type/non-type respectively | 
  
   
- Parameters
 - 
  
    | obj | must points to a template symbol  | 
    | args | nodes to use as template arguments  | 
    | parent | is used when called by reference which was called by one of the access methods | 
  
   
- Returns
 - a template instantiation 
 
 
 
◆ reference()
template<typename CRT , typename 
API > 
 
template<
Object otag, typename... Args> 
 
      
 
Return an expression or type referencing the object. 
Args are forwarded to instantiate as needed.
- Template Parameters
 - 
  
    | otag | must be one of a_class/a_typedef/a_variable/a_function  | 
    | Args | types of template arguments (see instantiate) | 
  
   
- Parameters
 - 
  
    | obj | points to a symbol  | 
    | args | template arguments (see instantiate)  | 
    | parent | is used when called by one of the access methods | 
  
   
- Returns
 - a reference expression 
 
 
 
◆ access() [1/2]
template<typename CRT , typename 
API > 
 
template<
Object otag, typename... Args> 
 
      
 
Build expression to access a member of the parent expression. 
Args are forwarded to instantiate as needed.
- Template Parameters
 - 
  
    | otag | must be one of a_variable/a_function  | 
    | Args | types of template arguments (see instantiate) | 
  
   
- Parameters
 - 
  
    | obj | points to a symbol  | 
    | parent |  | 
    | args | template arguments (see instantiate) | 
  
   
- Returns
 - either 
. or -> operator with parent as lhs and reference(obj, args...) as rhs  
 
 
◆ access() [2/2]
template<typename CRT , typename 
API > 
 
template<
Object otag, typename... Args> 
 
      
 
Build expression or type to access static member and subtype of the parent type. 
Args are forwarded to instantiate as needed.
otag must be one of a_class/a_typedef or a_variable/a_function Args types of template arguments (see instantiate)
obj points to a symbol lhs args template arguments (see instantiate) 
 
 
◆ driver
template<typename CRT , typename 
API > 
 
      
 
 
◆ api
template<typename CRT , typename 
API > 
 
      
 
 
The documentation for this class was generated from the following file: