📄 container_i.cpp
字号:
"count",
count);
char *member_path = 0;
// Create a section for each member. We store the member
// name, its label value, and the path to its database entry.
for (CORBA::ULong i = 0; i < count; ++i)
{
ACE_Configuration_Section_Key member_key;
char *stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->open_section (refs_key,
stringified,
1,
member_key);
this->repo_->config ()->set_string_value (member_key,
"name",
members[i].name.in ());
member_path =
TAO_IFR_Service_Utils::reference_to_path (members[i].type_def.in ());
this->repo_->config ()->set_string_value (member_key,
"path",
member_path);
this->store_label (member_key,
members[i].label
ACE_ENV_ARG_PARAMETER);
}
CORBA::DefinitionKind def_kind =
this->def_kind (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::UnionDef::_nil ());
if (def_kind == CORBA::dk_Struct
|| def_kind == CORBA::dk_Union
|| def_kind == CORBA::dk_Exception)
{
this->update_refs (path.c_str (),
name);
}
// Create the object reference.
CORBA::Object_var obj =
TAO_IFR_Service_Utils::create_objref (CORBA::dk_Union,
path.c_str (),
this->repo_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::UnionDef::_nil ());
return CORBA::UnionDef::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
}
CORBA::EnumDef_ptr
TAO_Container_i::create_enum (const char *id,
const char *name,
const char *version,
const CORBA::EnumMemberSeq &members
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::EnumDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::EnumDef::_nil ());
return this->create_enum_i (id,
name,
version,
members
ACE_ENV_ARG_PARAMETER);
}
CORBA::EnumDef_ptr
TAO_Container_i::create_enum_i (const char *id,
const char *name,
const char *version,
const CORBA::EnumMemberSeq &members
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_Container_i::tmp_name_holder_ = name;
ACE_Configuration_Section_Key new_key;
ACE_TString path =
TAO_IFR_Service_Utils::create_common (this->def_kind (),
CORBA::dk_Enum,
this->section_key_,
new_key,
this->repo_,
id,
name,
&TAO_Container_i::same_as_tmp_name,
version,
"defns"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::EnumDef::_nil ());
// Store the member count of the enum.
CORBA::ULong count = members.length ();
this->repo_->config ()->set_integer_value (new_key,
"count",
count);
// Create a section for each member, named for
// its ordinal position in the enum,
for (CORBA::ULong i = 0; i < count; i++)
{
ACE_Configuration_Section_Key member_key;
char *stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->open_section (new_key,
stringified,
1,
member_key);
this->repo_->config ()->set_string_value (member_key,
"name",
members[i].in ());
}
CORBA::DefinitionKind def_kind =
this->def_kind (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::EnumDef::_nil ());
if (def_kind == CORBA::dk_Struct
|| def_kind == CORBA::dk_Union
|| def_kind == CORBA::dk_Exception)
{
this->update_refs (path.c_str (),
name);
}
// Create the object reference.
CORBA::Object_var obj =
TAO_IFR_Service_Utils::create_objref (CORBA::dk_Enum,
path.c_str (),
this->repo_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::EnumDef::_nil ());
return CORBA::EnumDef::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
}
CORBA::AliasDef_ptr
TAO_Container_i::create_alias (const char *id,
const char *name,
const char *version,
CORBA::IDLType_ptr original_type
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::AliasDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::AliasDef::_nil ());
return this->create_alias_i (id,
name,
version,
original_type
ACE_ENV_ARG_PARAMETER);
}
CORBA::AliasDef_ptr
TAO_Container_i::create_alias_i (const char *id,
const char *name,
const char *version,
CORBA::IDLType_ptr original_type
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_Container_i::tmp_name_holder_ = name;
ACE_Configuration_Section_Key new_key;
ACE_TString path =
TAO_IFR_Service_Utils::create_common (this->def_kind (),
CORBA::dk_Alias,
this->section_key_,
new_key,
this->repo_,
id,
name,
&TAO_Container_i::same_as_tmp_name,
version,
"defns"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::AliasDef::_nil ());
// Get the path to our original type and store it.
char *unalias_path =
TAO_IFR_Service_Utils::reference_to_path (original_type);
this->repo_->config ()->set_string_value (new_key,
"original_type",
unalias_path);
// Create the object reference.
CORBA::Object_var obj =
TAO_IFR_Service_Utils::create_objref (CORBA::dk_Alias,
path.c_str (),
this->repo_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::AliasDef::_nil ());
return CORBA::AliasDef::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
}
CORBA::InterfaceDef_ptr
TAO_Container_i::create_interface (const char *id,
const char *name,
const char *version,
const CORBA::InterfaceDefSeq &base_interfaces
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::InterfaceDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::InterfaceDef::_nil ());
return this->create_interface_i (id,
name,
version,
base_interfaces
ACE_ENV_ARG_PARAMETER);
}
CORBA::InterfaceDef_ptr
TAO_Container_i::create_interface_i (const char *id,
const char *name,
const char *version,
const CORBA::InterfaceDefSeq &base_interfaces
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_Container_i::tmp_name_holder_ = name;
ACE_Configuration_Section_Key new_key;
ACE_TString path =
TAO_IFR_Service_Utils::create_common (this->def_kind (),
CORBA::dk_Interface,
this->section_key_,
new_key,
this->repo_,
id,
name,
&TAO_Container_i::same_as_tmp_name,
version,
"defns"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::InterfaceDef::_nil ());
CORBA::ULong length = base_interfaces.length ();
if (length > 0)
{
// Open a section for the base interfaces.
ACE_Configuration_Section_Key inherited_key;
this->repo_->config ()->open_section (new_key,
"inherited",
1,
inherited_key);
char *inherited_path = 0;
// Store the path to each base interface.
for (CORBA::ULong i = 0; i < length; ++i)
{
inherited_path =
TAO_IFR_Service_Utils::reference_to_path (
base_interfaces[i].in ()
);
char *stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->set_string_value (inherited_key,
stringified,
inherited_path);
}
}
// Create the object reference.
CORBA::Object_var obj =
TAO_IFR_Service_Utils::create_objref (CORBA::dk_Interface,
path.c_str (),
this->repo_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::InterfaceDef::_nil ());
return CORBA::InterfaceDef::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
}
CORBA::ValueDef_ptr
TAO_Container_i::create_value (
const char *id,
const char *name,
const char *version,
CORBA::Boolean is_custom,
CORBA::Boolean is_abstract,
CORBA::ValueDef_ptr base_value,
CORBA::Boolean is_truncatable,
const CORBA::ValueDefSeq &abstract_base_values,
const CORBA::InterfaceDefSeq &supported_interfaces,
const CORBA::InitializerSeq &initializers
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ValueDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ValueDef::_nil ());
return this->create_value_i (id,
name,
version,
is_custom,
is_abstract,
base_value,
is_truncatable,
abstract_base_values,
supported_interfaces,
initializers
ACE_ENV_ARG_PARAMETER);
}
CORBA::ValueDef_ptr
TAO_Container_i::create_value_i (
const char *id,
const char *name,
const char *version,
CORBA::Boolean is_custom,
CORBA::Boolean is_abstract,
CORBA::ValueDef_ptr base_value,
CORBA::Boolean is_truncatable,
const CORBA::ValueDefSeq &abstract_base_values,
const CORBA::InterfaceDefSeq &supported_interfaces,
const CORBA::InitializerSeq &initializers
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_Configuration_Section_Key new_key;
ACE_TString path =
this->create_value_common (this->def_kind (),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -