CORBA::InterfaceDefSeq * TAO_ComponentDef_i::supported_interfaces_i (void) { CORBA::InterfaceDefSeq *seq = 0; ACE_NEW_RETURN (seq, CORBA::InterfaceDefSeq (0), 0); CORBA::InterfaceDefSeq_var retval = seq; retval->length (0); CORBA::ULong count = 0; ACE_Configuration_Section_Key supported_key; int status = this->repo_->config ()->open_section (this->section_key_, "supported", 0, supported_key); if (status == 0) { this->repo_->config ()->get_integer_value (supported_key, "count", count); retval->length (count); char *stringified = 0; ACE_TString path; CORBA::Object_var tmp; for (CORBA::ULong i = 0; i < count; ++i) { stringified = TAO_IFR_Service_Utils::int_to_string (i); this->repo_->config ()->get_string_value (supported_key, stringified, path); tmp = TAO_IFR_Service_Utils::path_to_ir_object (path, this->repo_); retval[i] = CORBA::InterfaceDef::_narrow (tmp.in ()); } } return retval._retn (); }
CORBA::InterfaceDefSeq * TAO_InterfaceDef_i::base_interfaces_i (void) { ACE_Unbounded_Queue<CORBA::DefinitionKind> kind_queue; ACE_Unbounded_Queue<ACE_TString> path_queue; this->base_interfaces_recursive (kind_queue, path_queue); CORBA::ULong size = static_cast<CORBA::ULong> (kind_queue.size ()); CORBA::InterfaceDefSeq *seq = 0; ACE_NEW_THROW_EX (seq, CORBA::InterfaceDefSeq (size), CORBA::NO_MEMORY ()); seq->length (size); CORBA::InterfaceDefSeq_var retval = seq; for (CORBA::ULong i = 0; i < size; ++i) { CORBA::DefinitionKind def_kind; kind_queue.dequeue_head (def_kind); ACE_TString path; path_queue.dequeue_head (path); CORBA::Object_var obj = TAO_IFR_Service_Utils::path_to_ir_object (path, this->repo_); retval[i] = CORBA::InterfaceDef::_narrow (obj.in ()); } return retval._retn (); }