diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2010-02-04 09:25:13 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2010-02-04 09:25:13 +0000 |
commit | 8189ac17a47e0d5d36697c13d064bc135787e236 (patch) | |
tree | 88d940d0512a8dbcb391f09bd075f030311df429 /TAO/orbsvcs/IFR_Service | |
parent | 4892ae1d9a33f71efe90f90aade4174c097b0c7b (diff) | |
download | ATCD-8189ac17a47e0d5d36697c13d064bc135787e236.tar.gz |
Thu Feb 4 09:25:43 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl>
Merged revision 88756-88826 from idl3_plus_backend2 to svn head.
* orbsvcs/IFR_Service/ifr_adding_visitor.h:
* orbsvcs/IFR_Service/ifr_adding_visitor.cpp:
Change IFR loader backend correspondingly with the
change above to home factories and finders.
Diffstat (limited to 'TAO/orbsvcs/IFR_Service')
-rw-r--r-- | TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp | 90 | ||||
-rw-r--r-- | TAO/orbsvcs/IFR_Service/ifr_adding_visitor.h | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/IFR_Service/ifr_visitor.cpp | 6 | ||||
-rw-r--r-- | TAO/orbsvcs/IFR_Service/ifr_visitor.h | 3 |
4 files changed, 56 insertions, 46 deletions
diff --git a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp index 4dadcf226da..8e980c90a93 100644 --- a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp +++ b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp @@ -17,7 +17,7 @@ #include "ast_eventtype_fwd.h" #include "ast_exception.h" #include "ast_expression.h" -#include "ast_factory.h" +#include "ast_finder.h" #include "ast_field.h" #include "ast_home.h" #include "ast_interface.h" @@ -52,16 +52,13 @@ #include "ace/Vector_T.h" -ACE_RCSID (IFR_Service, - ifr_adding_visitor, - "$Id$") - -ifr_adding_visitor::ifr_adding_visitor (AST_Decl *scope, - bool in_reopened, - bool allow_duplicate_typedefs) +ifr_adding_visitor::ifr_adding_visitor ( + AST_Decl *scope, + bool in_reopened, + bool allow_duplicate_typedefs) : scope_ (scope), - in_reopened_ (in_reopened), - allow_duplicate_typedefs_ (allow_duplicate_typedefs) + in_reopened_ (in_reopened), + allow_duplicate_typedefs_ (allow_duplicate_typedefs) { } @@ -582,7 +579,7 @@ ifr_adding_visitor::visit_valuetype (AST_ValueType *node) try { - // Is this interface already in the respository? + // Is this valuetype already in the respository? CORBA::Contained_var prev_def = be_global->repository ()->lookup_id (node->repoID ()); @@ -1626,12 +1623,6 @@ ifr_adding_visitor::visit_home (AST_Home *node) } int -ifr_adding_visitor::visit_factory (AST_Factory *) -{ - return 0; -} - -int ifr_adding_visitor::visit_structure (AST_Structure *node) { if (node->imported () && !be_global->do_included_files ()) @@ -3909,6 +3900,7 @@ ifr_adding_visitor::fill_exceptions (CORBA::ExceptionDefSeq &result, return; } case AST_Decl::NT_factory: + case AST_Decl::NT_finder: { AST_Factory *f = AST_Factory::narrow_from_decl (node); this->fill_exceptions (result, @@ -3956,10 +3948,10 @@ ifr_adding_visitor::fill_exceptions (CORBA::ExceptionDefSeq &result, void ifr_adding_visitor::fill_params (CORBA::ParDescriptionSeq &result, - AST_Operation *node) + UTL_Scope *node) { AST_Argument *arg = 0; - CORBA::ULong n_args = static_cast<CORBA::ULong> (node->argument_count ()); + CORBA::ULong n_args = static_cast<CORBA::ULong> (node->nmembers ()); result.length (n_args); CORBA::ULong index = 0; CORBA::Contained_var holder; @@ -3988,26 +3980,33 @@ void ifr_adding_visitor::visit_all_factories (AST_Home *node, CORBA::ComponentIR::HomeDef_ptr h) { - AST_Operation **tmp = 0; CORBA::Contained_var contained; CORBA::ComponentIR::FactoryDef_var new_def; - for (ACE_Unbounded_Queue_Iterator<AST_Operation *> i (node->factories ()); - ! i.done (); - i.advance ()) + for (UTL_ScopeActiveIterator h_iter (node, + UTL_Scope::IK_decls); + !h_iter.is_done (); + h_iter.next ()) { - i.next (tmp); + AST_Decl *d = h_iter.item (); + AST_Decl::NodeType nt = d->node_type (); + + if (nt != AST_Decl::NT_factory) + { + continue; + } + + AST_Factory *f = AST_Factory::narrow_from_decl (d); + CORBA::ParDescriptionSeq params; - this->fill_params (params, - *tmp); + this->fill_params (params, f); CORBA::ExceptionDefSeq exceptions; - this->fill_exceptions (exceptions, - *tmp); + this->fill_exceptions (exceptions, f); - new_def = h->create_factory ((*tmp)->repoID (), - (*tmp)->local_name ()->get_string (), - (*tmp)->version (), + new_def = h->create_factory (f->repoID (), + f->local_name ()->get_string (), + f->version (), params, exceptions); } @@ -4017,26 +4016,31 @@ void ifr_adding_visitor::visit_all_finders (AST_Home *node, CORBA::ComponentIR::HomeDef_ptr h) { - AST_Operation **tmp = 0; + AST_Finder *f = 0; CORBA::Contained_var contained; CORBA::ComponentIR::FinderDef_var new_def; - for (ACE_Unbounded_Queue_Iterator<AST_Operation *> i (node->finders ()); - ! i.done (); - i.advance ()) + for (UTL_ScopeActiveIterator h_iter (node, + UTL_Scope::IK_decls); + !h_iter.is_done (); + h_iter.next ()) { - i.next (tmp); + f = AST_Finder::narrow_from_decl (h_iter.item ()); + + if (f == 0) + { + continue; + } + CORBA::ParDescriptionSeq params; - this->fill_params (params, - *tmp); + this->fill_params (params, f); CORBA::ExceptionDefSeq exceptions; - this->fill_exceptions (exceptions, - *tmp); + this->fill_exceptions (exceptions, f); - new_def = h->create_finder ((*tmp)->repoID (), - (*tmp)->local_name ()->get_string (), - (*tmp)->version (), + new_def = h->create_finder (f->repoID (), + f->local_name ()->get_string (), + f->version (), params, exceptions); } diff --git a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.h b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.h index 79668d18cfc..bc42e852620 100644 --- a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.h +++ b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.h @@ -64,7 +64,6 @@ public: 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_factory (AST_Factory *node); virtual int visit_structure (AST_Structure *node); virtual int visit_structure_fwd (AST_StructureFwd *node); virtual int visit_exception (AST_Exception *node); @@ -161,7 +160,7 @@ protected: UTL_ExceptList *list); void fill_params (CORBA::ParDescriptionSeq &result, - AST_Operation *node); + UTL_Scope *node); void visit_all_factories (AST_Home *node, CORBA::ComponentIR::HomeDef_ptr h); diff --git a/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp b/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp index 70febf0d065..523ee0e5ea9 100644 --- a/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp +++ b/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp @@ -205,6 +205,12 @@ ifr_visitor::visit_factory (AST_Factory *) } int +ifr_visitor::visit_finder (AST_Finder *) +{ + return 0; +} + +int ifr_visitor::visit_structure (AST_Structure *) { return 0; diff --git a/TAO/orbsvcs/IFR_Service/ifr_visitor.h b/TAO/orbsvcs/IFR_Service/ifr_visitor.h index 3352e32f1b4..a280bd84101 100644 --- a/TAO/orbsvcs/IFR_Service/ifr_visitor.h +++ b/TAO/orbsvcs/IFR_Service/ifr_visitor.h @@ -57,7 +57,6 @@ public: 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_param_holder(AST_Param_Holder *node); virtual int visit_porttype (AST_PortType *node); virtual int visit_provides (AST_Provides *node); virtual int visit_uses (AST_Uses *node); @@ -71,6 +70,7 @@ public: virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); virtual int visit_home (AST_Home *node); virtual int visit_factory (AST_Factory *node); + virtual int visit_finder (AST_Finder *node); virtual int visit_structure (AST_Structure *node); virtual int visit_structure_fwd (AST_StructureFwd *node); virtual int visit_exception (AST_Exception *node); @@ -92,6 +92,7 @@ public: virtual int visit_typedef (AST_Typedef *node); virtual int visit_root (AST_Root *node); virtual int visit_native (AST_Native *node); + virtual int visit_param_holder (AST_Param_Holder *node); ACE_Lock &lock (void) const; // Accessor for our lock. |