summaryrefslogtreecommitdiff
path: root/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp')
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp413
1 files changed, 210 insertions, 203 deletions
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
index 782027a38fb..d5e39d485da 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
@@ -27,218 +27,222 @@ namespace CIAO
IDREF_Base<CORBA::ULong> CID_Handler::IDREF;
- namespace
+ struct Capability_Handler
{
- struct Capability_Handler
- {
- static void get_capability (const Capability &desc,
- ::Deployment::Capability &toconfig)
- {
- CIAO_TRACE ("Capability_Handler::get_capability");
-
- toconfig.name = desc.name ().c_str ();
-
- toconfig.resourceType.length (desc.count_resourceType ());
- std::for_each (desc.begin_resourceType (),
- desc.end_resourceType (),
- String_Seq_Functor (toconfig.resourceType));
-
- toconfig.property.length (desc.count_property ());
- std::for_each (desc.begin_property (),
- desc.end_property (),
- SatisfierProperty_Functor (toconfig.property));
- }
-
- static Capability get_capability (const ::Deployment::Capability &src)
- {
- CIAO_TRACE ("Capability_Handler::get_capability - reverse");
-
- Capability retval (src.name.in ());
-
- for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
- retval.add_resourceType (src.resourceType[i]);
-
- for (CORBA::ULong i = 0; i < src.property.length (); ++i)
- retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i]));
-
- return retval;
- }
- };
-
- typedef Sequence_Handler < Capability,
- ::Deployment::Capabilities,
- ::Deployment::Capability,
- Capability_Handler::get_capability > Capability_Functor;
-
- struct IR_Handler
- {
- static void get_ir (const ImplementationRequirement &desc,
- ::Deployment::ImplementationRequirement &toconfig)
- {
- CIAO_TRACE ("IR_Handler::get_ir");
-
- if (desc.resourceUsage_p ())
- {
- switch (desc.resourceUsage ().integral ())
- {
- case ResourceUsageKind::None_l:
- toconfig.resourceUsage = Deployment::None;
- break;
-
- case ResourceUsageKind::InstanceUsesResource_l:
- toconfig.resourceUsage = Deployment::InstanceUsesResource;
- break;
-
- case ResourceUsageKind::ResourceUsesInstance_l:
- toconfig.resourceUsage = Deployment::ResourceUsesInstance;
- break;
-
- case ResourceUsageKind::PortUsesResource_l:
- toconfig.resourceUsage = Deployment::PortUsesResource;
- break;
-
- case ResourceUsageKind::ResourceUsesPort_l:
- toconfig.resourceUsage = Deployment::ResourceUsesPort;
- break;
-
- default:
- throw Config_Error (desc.name (),
- "Unknown ResourceUsageKind.");
- break;
- }
- }
-
- if (desc.resourcePort_p ())
- toconfig.resourcePort = desc.resourcePort ().c_str ();
-
- if (desc.componentPort_p ())
- toconfig.componentPort = desc.componentPort ().c_str ();
-
- toconfig.resourceType = desc.resourceType ().c_str ();
- toconfig.name = desc.name ().c_str ();
-
- std::for_each (desc.begin_property (),
- desc.end_property (),
- Property_Functor (toconfig.property ));
- }
-
- static ImplementationRequirement
- get_ir (const ::Deployment::ImplementationRequirement &src)
- {
- CIAO_TRACE ("IR_Handler::get_ir - reverse");
-
- ImplementationRequirement retval (src.resourceType.in (),
- src.name.in ());
-
- if (src.resourceUsage.length () == 1)
- switch (src.resourceUsage[0])
- {
- case Deployment::None:
- retval.resourceUsage (ResourceUsageKind::None);
- break;
+ static void handle_capability (const Capability &desc,
+ ::Deployment::Capability &toconfig)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability");
- case Deployment::InstanceUsesResource:
- retval.resourceUsage (ResourceUsageKind::InstanceUsesResource);
- break;
+ toconfig.name = desc.name ().c_str ();
- case Deployment::ResourceUsesInstance:
- retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
- break;
+ toconfig.resourceType.length (desc.count_resourceType ());
+ std::for_each (desc.begin_resourceType (),
+ desc.end_resourceType (),
+ String_Seq_Functor (toconfig.resourceType));
- case Deployment::PortUsesResource:
- retval.resourceUsage (ResourceUsageKind::PortUsesResource);
- break;
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ SatisfierProperty_Functor (toconfig.property));
+ }
- case Deployment::ResourceUsesPort:
- retval.resourceUsage (ResourceUsageKind::ResourceUsesPort);
- break;
+ static Capability get_capability (const ::Deployment::Capability &src)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability - reverse");
- default:
- throw Config_Error (src.name.in (),
- "Unknown ResourceUsageKind.");
- break;
- }
+ Capability retval (src.name.in ());
- retval.resourcePort (src.resourcePort.in ());
+ for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
+ retval.add_resourceType (src.resourceType[i]);
- retval.componentPort (src.componentPort.in ());
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i]));
- for (CORBA::ULong i = 0; i < src.property.length (); ++i)
- retval.add_property (Property_Handler::get_property (src.property[i]));
+ return retval;
+ }
+ };
- return retval;
- }
- };
-
- typedef Sequence_Handler < ImplementationRequirement,
- ::Deployment::ImplementationRequirements,
- ::Deployment::ImplementationRequirement,
- IR_Handler::get_ir > IR_Functor;
-
-
-
- struct MID_Handler
- {
- static void get_mid (const MonolithicImplementationDescription &desc,
- ::Deployment::MonolithicImplementationDescription &toconfig)
- {
- CIAO_TRACE ("MID_Handler::get_mid");
-
- toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ());
- std::for_each (desc.begin_nodeExecParameter (),
- desc.end_nodeExecParameter (),
- Property_Functor (toconfig.nodeExecParameter));
-
- toconfig.componentExecParameter.length (desc.count_componentExecParameter ());
- std::for_each (desc.begin_componentExecParameter (),
- desc.end_componentExecParameter (),
- Property_Functor (toconfig.componentExecParameter));
-
- toconfig.deployRequirement.length (desc.count_deployRequirement ());
- std::for_each (desc.begin_deployRequirement (),
- desc.end_deployRequirement (),
- IR_Functor (toconfig.deployRequirement));
-
- toconfig.primaryArtifact.length (desc.count_primaryArtifact ());
- std::for_each (desc.begin_primaryArtifact (),
- desc.end_primaryArtifact (),
- NIA_Functor (toconfig.primaryArtifact));
- }
-
- static MonolithicImplementationDescription
- get_mid (const ::Deployment::MonolithicImplementationDescription &src)
- {
- CIAO_TRACE ("MID_Handler::get_mid - reverse");
-
- MonolithicImplementationDescription retval;
+ typedef Sequence_Handler < Capability,
+ ::Deployment::Capabilities,
+ ::Deployment::Capability,
+ Capability_Handler::handle_capability > Capability_Functor;
- for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i)
- retval.add_nodeExecParameter
- (Property_Handler::get_property (src.nodeExecParameter[i]));
-
- for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i)
- retval.add_componentExecParameter
- (Property_Handler::get_property (src.componentExecParameter[i]));
-
- for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
- retval.add_deployRequirement
- (IR_Handler::get_ir (src.deployRequirement[i]));
-
- for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i)
- retval.add_primaryArtifact
- (NIA_Handler::get_nia (src.primaryArtifact[i]));
-
- return retval;
- }
-
- };
-
- typedef Sequence_Handler < MonolithicImplementationDescription,
- ::Deployment::MonolithicImplementationDescriptions,
- ::Deployment::MonolithicImplementationDescription,
- MID_Handler::get_mid > MID_Functor;
-
- }
+ struct IR_Handler
+ {
+ static void handle_ir (const ImplementationRequirement &desc,
+ ::Deployment::ImplementationRequirement &toconfig)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir");
+
+ if (desc.resourceUsage_p ())
+ {
+ switch (desc.resourceUsage ().integral ())
+ {
+ case ResourceUsageKind::None_l:
+ toconfig.resourceUsage = Deployment::None;
+ break;
+
+ case ResourceUsageKind::InstanceUsesResource_l:
+ toconfig.resourceUsage = Deployment::InstanceUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesInstance_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesInstance;
+ break;
+
+ case ResourceUsageKind::PortUsesResource_l:
+ toconfig.resourceUsage = Deployment::PortUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesPort_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesPort;
+ break;
+
+ default:
+ throw Config_Error (desc.name (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+ }
+
+ if (desc.resourcePort_p ())
+ toconfig.resourcePort = desc.resourcePort ().c_str ();
+
+ if (desc.componentPort_p ())
+ toconfig.componentPort = desc.componentPort ().c_str ();
+
+ toconfig.resourceType = desc.resourceType ().c_str ();
+ toconfig.name = desc.name ().c_str ();
+
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property ));
+ }
+
+ static ImplementationRequirement
+ get_ir (const ::Deployment::ImplementationRequirement &src)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir - reverse");
+
+ ImplementationRequirement retval (src.resourceType.in (),
+ src.name.in ());
+
+ if (src.resourceUsage.length () == 1)
+ switch (src.resourceUsage[0])
+ {
+ case Deployment::None:
+ retval.resourceUsage (ResourceUsageKind::None);
+ break;
+
+ case Deployment::InstanceUsesResource:
+ retval.resourceUsage (ResourceUsageKind::InstanceUsesResource);
+ break;
+
+ case Deployment::ResourceUsesInstance:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
+ break;
+
+ case Deployment::PortUsesResource:
+ retval.resourceUsage (ResourceUsageKind::PortUsesResource);
+ break;
+
+ case Deployment::ResourceUsesPort:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesPort);
+ break;
+
+ default:
+ throw Config_Error (src.name.in (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ retval.resourcePort (src.resourcePort.in ());
+
+ retval.componentPort (src.componentPort.in ());
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (Property_Handler::get_property (src.property[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < ImplementationRequirement,
+ ::Deployment::ImplementationRequirements,
+ ::Deployment::ImplementationRequirement,
+ IR_Handler::handle_ir > IR_Functor;
+
+ struct MID_Handler
+ {
+ static void handle_mid (const MonolithicImplementationDescription &desc,
+ ::Deployment::MonolithicImplementationDescription &toconfig)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid");
+
+ toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ());
+ std::for_each (desc.begin_nodeExecParameter (),
+ desc.end_nodeExecParameter (),
+ Property_Functor (toconfig.nodeExecParameter));
+
+ toconfig.componentExecParameter.length (desc.count_componentExecParameter ());
+ std::for_each (desc.begin_componentExecParameter (),
+ desc.end_componentExecParameter (),
+ Property_Functor (toconfig.componentExecParameter));
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ while (0)
+ {
+ IR_Handler::handle_ir (*desc.begin_deployRequirement (),
+ toconfig.deployRequirement[0]);
+ }
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ IR_Functor (toconfig.deployRequirement));
+
+ toconfig.primaryArtifact.length (desc.count_primaryArtifact ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia,
+ desc.begin_primaryArtifact (),
+ toconfig.primaryArtifact);
+ std::for_each (desc.begin_primaryArtifact (),
+ desc.end_primaryArtifact (),
+ NIA_Functor (toconfig.primaryArtifact));
+ }
+
+ static MonolithicImplementationDescription
+ get_mid (const ::Deployment::MonolithicImplementationDescription &src)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid - reverse");
+
+ MonolithicImplementationDescription retval;
+
+ for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i)
+ retval.add_nodeExecParameter
+ (Property_Handler::get_property (src.nodeExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i)
+ retval.add_componentExecParameter
+ (Property_Handler::get_property (src.componentExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
+ retval.add_deployRequirement
+ (IR_Handler::get_ir (src.deployRequirement[i]));
+
+ for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i)
+ retval.add_primaryArtifact
+ (NIA_Handler::get_nia (src.primaryArtifact[i]));
+
+ return retval;
+ }
+
+ };
+
+ typedef Sequence_Handler < MonolithicImplementationDescription,
+ ::Deployment::MonolithicImplementationDescriptions,
+ ::Deployment::MonolithicImplementationDescription,
+ MID_Handler::handle_mid > MID_Functor;
+
+
void
CID_Handler::component_impl_descr (
@@ -279,8 +283,8 @@ namespace CIAO
else if (cid->monolithicImpl_p ())
{
toconfig.monolithicImpl.length (1);
- MID_Handler::get_mid (cid->monolithicImpl (),
- toconfig.monolithicImpl[0]);
+ MID_Handler::handle_mid (cid->monolithicImpl (),
+ toconfig.monolithicImpl[0]);
}
else
throw Plan_Error ("ComponentImplementationDescription must have either assemblyImpl or monolithicImpl");
@@ -293,6 +297,9 @@ namespace CIAO
// capability
toconfig.capability.length (cid->count_capability ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (Capability_Handler::handle_capability,
+ cid->begin_capability (),
+ toconfig.capability);
std::for_each (cid->begin_capability (),
cid->end_capability (),
Capability_Functor (toconfig.capability));