TAO_IFR  2.2.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ifr_adding_visitor Class Reference

ifr_adding_visitor. More...

#include <ifr_adding_visitor.h>

Inheritance diagram for ifr_adding_visitor:
Inheritance graph
Collaboration diagram for ifr_adding_visitor:
Collaboration graph

Public Member Functions

 ifr_adding_visitor (AST_Decl *scope, CORBA::Boolean in_reopened=0, bool allow_duplicate_typedefs=false)
 
virtual ~ifr_adding_visitor (void)
 
virtual int visit_scope (UTL_Scope *node)
 
virtual int visit_predefined_type (AST_PredefinedType *node)
 
virtual int visit_module (AST_Module *node)
 
virtual int visit_interface (AST_Interface *node)
 
virtual int visit_interface_fwd (AST_InterfaceFwd *node)
 
virtual int visit_valuebox (AST_ValueBox *node)
 
virtual int visit_valuetype (AST_ValueType *node)
 
virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node)
 
virtual int visit_component (AST_Component *node)
 
virtual int visit_component_fwd (AST_ComponentFwd *node)
 
virtual int visit_provides (AST_Provides *node)
 
virtual int visit_uses (AST_Uses *node)
 
virtual int visit_publishes (AST_Publishes *node)
 
virtual int visit_emits (AST_Emits *node)
 
virtual int visit_consumes (AST_Consumes *node)
 
virtual int visit_eventtype (AST_EventType *node)
 
virtual int visit_eventtype_fwd (AST_EventTypeFwd *node)
 
virtual int visit_home (AST_Home *node)
 
virtual int visit_structure (AST_Structure *node)
 
virtual int visit_structure_fwd (AST_StructureFwd *node)
 
virtual int visit_exception (AST_Exception *node)
 
virtual int visit_enum (AST_Enum *node)
 
virtual int visit_operation (AST_Operation *node)
 
virtual int visit_field (AST_Field *node)
 
virtual int visit_attribute (AST_Attribute *node)
 
virtual int visit_union (AST_Union *node)
 
virtual int visit_union_fwd (AST_UnionFwd *node)
 
virtual int visit_constant (AST_Constant *node)
 
virtual int visit_array (AST_Array *node)
 
virtual int visit_sequence (AST_Sequence *node)
 
virtual int visit_string (AST_String *node)
 
virtual int visit_typedef (AST_Typedef *node)
 
virtual int visit_root (AST_Root *node)
 
virtual int visit_native (AST_Native *node)
 
- Public Member Functions inherited from ifr_visitor
virtual ~ifr_visitor (void)
 
virtual int visit_decl (AST_Decl *d)
 
virtual int visit_type (AST_Type *node)
 
virtual int visit_template_module (AST_Template_Module *node)
 
virtual int visit_template_module_inst (AST_Template_Module_Inst *node)
 
virtual int visit_template_module_ref (AST_Template_Module_Ref *node)
 
virtual int visit_porttype (AST_PortType *node)
 
virtual int visit_extended_port (AST_Extended_Port *node)
 
virtual int visit_mirror_port (AST_Mirror_Port *node)
 
virtual int visit_connector (AST_Connector *node)
 
virtual int visit_factory (AST_Factory *node)
 
virtual int visit_finder (AST_Finder *node)
 
virtual int visit_expression (AST_Expression *node)
 
virtual int visit_argument (AST_Argument *node)
 
virtual int visit_union_branch (AST_UnionBranch *node)
 
virtual int visit_union_label (AST_UnionLabel *node)
 
virtual int visit_enum_val (AST_EnumVal *node)
 
virtual int visit_param_holder (AST_Param_Holder *node)
 
ACE_Locklock (void) const
 Accessor for our lock. More...
 

Protected Member Functions

CORBA::PrimitiveKind expr_type_to_pkind (AST_Expression::ExprType et)
 Conversion functions. More...
 
CORBA::PrimitiveKind predefined_type_to_pkind (AST_PredefinedType *node)
 
void load_any (AST_Expression::AST_ExprValue *ev, CORBA::Any &any)
 Determine the primitive type and insert into the Any. More...
 
void element_type (AST_Type *base_type, bool owned=false)
 
int create_interface_def (AST_Interface *node)
 Code encapsulated out of visit_interface(). More...
 
int create_value_def (AST_ValueType *node)
 Code encapsulated out of visit_valuetype(). More...
 
int create_component_def (AST_Component *node)
 Code encapsulated out of visit_component(). More...
 
int create_home_def (AST_Home *node)
 Code encapsulated out of visit_home(). More...
 
int create_event_def (AST_EventType *node)
 Code encapsulated out of visit_eventtype(). More...
 
int create_value_member (AST_Field *node)
 Conditional call from visit_field(). More...
 
void get_referenced_type (AST_Type *node)
 
void fill_base_value (CORBA::ValueDef_ptr &result, AST_ValueType *node)
 
void fill_base_component (CORBA::ComponentIR::ComponentDef_ptr &result, AST_Component *node)
 
void fill_base_home (CORBA::ComponentIR::HomeDef_ptr &result, AST_Home *node)
 
void fill_managed_component (CORBA::ComponentIR::ComponentDef_ptr &result, AST_Home *node)
 
void fill_primary_key (CORBA::ValueDef_ptr &result, AST_Home *node)
 
void fill_abstract_base_values (CORBA::ValueDefSeq &result, AST_ValueType *node)
 
void fill_inherited_interfaces (CORBA::InterfaceDefSeq &result, AST_Interface *node)
 
void fill_supported_interfaces (CORBA::InterfaceDefSeq &result, AST_Interface *node)
 
void fill_interfaces (CORBA::InterfaceDefSeq &result, AST_Type **list, CORBA::Long length)
 
void fill_initializers (CORBA::ExtInitializerSeq &result, AST_ValueType *node)
 
void fill_get_exceptions (CORBA::ExceptionDefSeq &result, AST_Attribute *node)
 
void fill_set_exceptions (CORBA::ExceptionDefSeq &result, AST_Attribute *node)
 
void fill_exceptions (CORBA::ExceptionDefSeq &result, AST_Decl *node)
 
void fill_exceptions (CORBA::ExceptionDefSeq &result, UTL_ExceptList *list)
 
void fill_params (CORBA::ParDescriptionSeq &result, UTL_Scope *node)
 
void visit_all_factories (AST_Home *node, CORBA::ComponentIR::HomeDef_ptr h)
 
void visit_all_finders (AST_Home *node, CORBA::ComponentIR::HomeDef_ptr h)
 
void expand_id (ACE_CString &str, const char *local_name)
 
- Protected Member Functions inherited from ifr_visitor
 ifr_visitor (void)
 

Protected Attributes

CORBA::IDLType_var ir_current_
 
AST_Decl * scope_
 Store the node whose scope (if any) we will be visiting. More...
 
bool in_reopened_
 Are we traversing the scope of a reopened module? More...
 
bool allow_duplicate_typedefs_
 Do we allow duplicate typedefs? More...
 

Detailed Description

ifr_adding_visitor.

This visitor adds items found in the IDL file being processed to the Interface Repository.

Constructor & Destructor Documentation

ifr_adding_visitor::ifr_adding_visitor ( AST_Decl *  scope,
CORBA::Boolean  in_reopened = 0,
bool  allow_duplicate_typedefs = false 
)
ifr_adding_visitor::~ifr_adding_visitor ( void  )
virtual

Member Function Documentation

int ifr_adding_visitor::create_component_def ( AST_Component *  node)
protected

Code encapsulated out of visit_component().

int ifr_adding_visitor::create_event_def ( AST_EventType *  node)
protected

Code encapsulated out of visit_eventtype().

int ifr_adding_visitor::create_home_def ( AST_Home *  node)
protected

Code encapsulated out of visit_home().

int ifr_adding_visitor::create_interface_def ( AST_Interface *  node)
protected

Code encapsulated out of visit_interface().

int ifr_adding_visitor::create_value_def ( AST_ValueType *  node)
protected

Code encapsulated out of visit_valuetype().

int ifr_adding_visitor::create_value_member ( AST_Field *  node)
protected

Conditional call from visit_field().

This will put the repo entry into ir_current_.

void ifr_adding_visitor::element_type ( AST_Type *  base_type,
bool  owned = false 
)
protected

Creates or looks up the element type of an array or sequence, and stores the result in ir_current_.

void ifr_adding_visitor::expand_id ( ACE_CString str,
const char *  local_name 
)
protected
CORBA::PrimitiveKind ifr_adding_visitor::expr_type_to_pkind ( AST_Expression::ExprType  et)
protected

Conversion functions.

void ifr_adding_visitor::fill_abstract_base_values ( CORBA::ValueDefSeq &  result,
AST_ValueType *  node 
)
protected
void ifr_adding_visitor::fill_base_component ( CORBA::ComponentIR::ComponentDef_ptr &  result,
AST_Component *  node 
)
protected
void ifr_adding_visitor::fill_base_home ( CORBA::ComponentIR::HomeDef_ptr &  result,
AST_Home *  node 
)
protected

Maybe the base home is in an included IDL file - put it in the repository and go again.

void ifr_adding_visitor::fill_base_value ( CORBA::ValueDef_ptr &  result,
AST_ValueType *  node 
)
protected
void ifr_adding_visitor::fill_exceptions ( CORBA::ExceptionDefSeq &  result,
AST_Decl *  node 
)
protected
void ifr_adding_visitor::fill_exceptions ( CORBA::ExceptionDefSeq &  result,
UTL_ExceptList *  list 
)
protected
void ifr_adding_visitor::fill_get_exceptions ( CORBA::ExceptionDefSeq &  result,
AST_Attribute *  node 
)
protected
void ifr_adding_visitor::fill_inherited_interfaces ( CORBA::InterfaceDefSeq &  result,
AST_Interface *  node 
)
protected
void ifr_adding_visitor::fill_initializers ( CORBA::ExtInitializerSeq &  result,
AST_ValueType *  node 
)
protected

This will put the field type in ir_current_, and also add it to the repository if it's not already there.

void ifr_adding_visitor::fill_interfaces ( CORBA::InterfaceDefSeq &  result,
AST_Type **  list,
CORBA::Long  length 
)
protected
void ifr_adding_visitor::fill_managed_component ( CORBA::ComponentIR::ComponentDef_ptr &  result,
AST_Home *  node 
)
protected

Maybe the managed component is in an included IDL file - put it in the repository and go again.

void ifr_adding_visitor::fill_params ( CORBA::ParDescriptionSeq &  result,
UTL_Scope *  node 
)
protected
void ifr_adding_visitor::fill_primary_key ( CORBA::ValueDef_ptr &  result,
AST_Home *  node 
)
protected

Maybe the primary key is in an included IDL file - put it in the repository and go again.

void ifr_adding_visitor::fill_set_exceptions ( CORBA::ExceptionDefSeq &  result,
AST_Attribute *  node 
)
protected
void ifr_adding_visitor::fill_supported_interfaces ( CORBA::InterfaceDefSeq &  result,
AST_Interface *  node 
)
protected
void ifr_adding_visitor::get_referenced_type ( AST_Type *  node)
protected

Utility method to update ir_current_ for struct members, union members, operation parameters and operation return types.

void ifr_adding_visitor::load_any ( AST_Expression::AST_ExprValue *  ev,
CORBA::Any &  any 
)
protected

Determine the primitive type and insert into the Any.

CORBA::PrimitiveKind ifr_adding_visitor::predefined_type_to_pkind ( AST_PredefinedType *  node)
protected
void ifr_adding_visitor::visit_all_factories ( AST_Home *  node,
CORBA::ComponentIR::HomeDef_ptr  h 
)
protected
void ifr_adding_visitor::visit_all_finders ( AST_Home *  node,
CORBA::ComponentIR::HomeDef_ptr  h 
)
protected
int ifr_adding_visitor::visit_array ( AST_Array *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_attribute ( AST_Attribute *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_component ( AST_Component *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_component_fwd ( AST_ComponentFwd *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_constant ( AST_Constant *  node)
virtual

@@ (JP 2007-12-12) I've removed code to check for constants of typedefs. The CORBA document formal/2004-03-12 (CORBA 3.0.3) says in section 10.5.8.1 that the type of a constant in the IFR must be 'one of the primitive types allowed in constant declarations'. So for constants of typedefs we store the underlying type in the IFR.

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_consumes ( AST_Consumes *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_emits ( AST_Emits *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_enum ( AST_Enum *  node)
virtual
int ifr_adding_visitor::visit_eventtype ( AST_EventType *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_eventtype_fwd ( AST_EventTypeFwd *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_exception ( AST_Exception *  node)
virtual

Reimplemented from ifr_visitor.

Reimplemented in ifr_adding_visitor_exception.

int ifr_adding_visitor::visit_field ( AST_Field *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_home ( AST_Home *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_interface ( AST_Interface *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_interface_fwd ( AST_InterfaceFwd *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_module ( AST_Module *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_native ( AST_Native *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_operation ( AST_Operation *  node)
virtual

Reimplemented from ifr_visitor.

Reimplemented in ifr_adding_visitor_operation.

int ifr_adding_visitor::visit_predefined_type ( AST_PredefinedType *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_provides ( AST_Provides *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_publishes ( AST_Publishes *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_root ( AST_Root *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_scope ( UTL_Scope *  node)
virtual
int ifr_adding_visitor::visit_sequence ( AST_Sequence *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_string ( AST_String *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_structure ( AST_Structure *  node)
virtual
int ifr_adding_visitor::visit_structure_fwd ( AST_StructureFwd *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_typedef ( AST_Typedef *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_union ( AST_Union *  node)
virtual
int ifr_adding_visitor::visit_union_fwd ( AST_UnionFwd *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_uses ( AST_Uses *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_valuebox ( AST_ValueBox *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_valuetype ( AST_ValueType *  node)
virtual

Reimplemented from ifr_visitor.

int ifr_adding_visitor::visit_valuetype_fwd ( AST_ValueTypeFwd *  node)
virtual

Reimplemented from ifr_visitor.

Member Data Documentation

bool ifr_adding_visitor::allow_duplicate_typedefs_
protected

Do we allow duplicate typedefs?

bool ifr_adding_visitor::in_reopened_
protected

Are we traversing the scope of a reopened module?

CORBA::IDLType_var ifr_adding_visitor::ir_current_
protected

Holder for the IR object most recently created or looked up by the visitor. This makes it accessible by visitor methods that need the result of a call to another visitor method that creates an IR object.

AST_Decl* ifr_adding_visitor::scope_
protected

Store the node whose scope (if any) we will be visiting.


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