📄 extvaluedef_i.cpp
字号:
val);
CORBA::TCKind kind =
fv_desc->operations[i].result->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
if (fv_desc->operations[i].mode == CORBA::OP_ONEWAY
&& kind != CORBA::tk_void)
{
ACE_THROW_RETURN (CORBA::BAD_PARAM (31,
CORBA::COMPLETED_NO),
0);
}
// Operation contexts.
TAO_IFR_Strseq_Utils<CORBA::ContextIdSeq>::fill_string_seq (
"contexts",
this->repo_->config (),
op_key,
fv_desc->operations[i].contexts
);
// Operation parameters.
fv_desc->operations[i].parameters.length (0);
status =
this->repo_->config ()->open_section (op_key,
"params",
0,
params_key);
if (status == 0)
{
ACE_Configuration_Section_Key param_key;
this->repo_->config ()->get_integer_value (params_key,
"count",
param_count);
fv_desc->operations[i].parameters.length (param_count);
for (j = 0; j < param_count; ++j)
{
stringified = TAO_IFR_Service_Utils::int_to_string (j);
this->repo_->config ()->open_section (params_key,
stringified,
0,
param_key);
this->repo_->config ()->get_string_value (param_key,
"name",
holder);
fv_desc->operations[i].parameters[j].name =
holder.fast_rep ();
this->repo_->config ()->get_string_value (param_key,
"type_path",
holder);
idl_type =
TAO_IFR_Service_Utils::path_to_idltype (holder,
this->repo_);
fv_desc->operations[i].parameters[j].type =
idl_type->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
obj =
TAO_IFR_Service_Utils::path_to_ir_object (
holder,
this->repo_
ACE_ENV_ARG_PARAMETER
);
ACE_CHECK_RETURN (0);
fv_desc->operations[i].parameters[j].type_def =
CORBA::IDLType::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
this->repo_->config ()->get_integer_value (param_key,
"mode",
val);
fv_desc->operations[i].parameters[j].mode =
ACE_static_cast (CORBA::ParameterMode,
val);
}
}
// Operation exceptions.
status =
this->repo_->config ()->open_section (op_key,
"excepts",
0,
excepts_key);
fv_desc->operations[i].exceptions.length (0);
if (status == 0)
{
CORBA::ULong excep_count = 0;
this->repo_->config ()->get_integer_value (excepts_key,
"count",
excep_count);
fv_desc->operations[i].exceptions.length (excep_count);
ACE_Configuration_Section_Key except_def_key;
for (j = 0; j < excep_count; ++j)
{
stringified = TAO_IFR_Service_Utils::int_to_string (j);
this->repo_->config ()->get_string_value (excepts_key,
stringified,
holder);
this->repo_->config ()->expand_path (
this->repo_->root_key (),
holder,
except_def_key,
0
);
this->repo_->config ()->get_string_value (except_def_key,
"name",
holder);
fv_desc->operations[i].exceptions[j].name =
holder.fast_rep ();
this->repo_->config ()->get_string_value (except_def_key,
"id",
holder);
fv_desc->operations[i].exceptions[j].id =
holder.fast_rep ();
this->repo_->config ()->get_string_value (except_def_key,
"container_id",
holder);
fv_desc->operations[i].exceptions[j].defined_in =
holder.fast_rep ();
this->repo_->config ()->get_string_value (except_def_key,
"version",
holder);
fv_desc->operations[i].exceptions[j].version =
holder.fast_rep ();
TAO_ExceptionDef_i impl (this->repo_);
impl.section_key (except_def_key);
fv_desc->operations[i].exceptions[j].type =
impl.type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
}
}
}
}
// Attributes..
fv_desc->attributes.length (0);
ACE_Configuration_Section_Key attrs_key;
status =
this->repo_->config ()->open_section (this->section_key_,
"attrs",
0,
attrs_key);
if (status == 0)
{
this->repo_->config ()->get_integer_value (attrs_key,
"count",
count);
fv_desc->attributes.length (count);
ACE_Configuration_Section_Key attr_key, attr_def_key;
for (i = 0; i < count; ++i)
{
stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->open_section (attrs_key,
stringified,
0,
attr_key);
this->repo_->config ()->get_string_value (attr_key,
"name",
holder);
fv_desc->attributes[i].name = holder.fast_rep ();
this->repo_->config ()->get_string_value (attr_key,
"id",
holder);
fv_desc->attributes[i].id = holder.fast_rep ();
this->repo_->config ()->get_string_value (attr_key,
"version",
holder);
fv_desc->attributes[i].version = holder.fast_rep ();
this->repo_->config ()->get_integer_value (attr_key,
"mode",
val);
fv_desc->attributes[i].mode =
ACE_static_cast (CORBA::AttributeMode,
val);
this->repo_->config ()->get_string_value (attr_key,
"type_path",
holder);
// Use the type path for 'defined_in' and 'type'.
idl_type =
TAO_IFR_Service_Utils::path_to_idltype (holder,
this->repo_);
fv_desc->attributes[i].type =
idl_type->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
this->repo_->config ()->expand_path (this->repo_->root_key (),
holder,
attr_def_key,
0);
this->repo_->config ()->get_string_value (attr_def_key,
"container_id",
holder);
fv_desc->attributes[i].defined_in = holder.fast_rep ();
this->fill_exceptions (fv_desc->attributes[i].get_exceptions,
attr_key,
"get_excepts"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
this->fill_exceptions (fv_desc->attributes[i].put_exceptions,
attr_key,
"put_excepts"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
}
}
// Members..
fv_desc->members.length (0);
ACE_Configuration_Section_Key members_key;
status =
this->repo_->config ()->open_section (this->section_key_,
"members",
0,
members_key);
if (status == 0)
{
this->repo_->config ()->get_integer_value (members_key,
"count",
count);
fv_desc->members.length (count);
ACE_Configuration_Section_Key member_key, member_def_key;
for (i = 0; i < count; ++i)
{
stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->open_section (members_key,
stringified,
0,
member_key);
this->repo_->config ()->get_string_value (member_key,
"name",
holder);
fv_desc->members[i].name = holder.fast_rep ();
this->repo_->config ()->get_string_value (member_key,
"id",
holder);
fv_desc->members[i].id = holder.fast_rep ();
this->repo_->config ()->get_string_value (member_key,
"container_id",
holder);
fv_desc->members[i].defined_in = holder.fast_rep ();
this->repo_->config ()->get_string_value (member_key,
"version",
holder);
fv_desc->members[i].version = holder.fast_rep ();
this->repo_->config ()->get_integer_value (member_key,
"access",
val);
fv_desc->members[i].access =
ACE_static_cast (CORBA::Visibility,
val);
// Use type path for 'type' and 'type_def',
this->repo_->config ()->get_string_value (member_key,
"type_path",
holder);
idl_type =
TAO_IFR_Service_Utils::path_to_idltype (holder,
this->repo_);
fv_desc->members[i].type =
idl_type->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
obj =
TAO_IFR_Service_Utils::path_to_ir_object (holder,
this->repo_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
fv_desc->members[i].type_def =
CORBA::IDLType::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
}
}
// Initializers
fv_desc->initializers.length (0);
ACE_Configuration_Section_Key initializers_key;
status =
this->repo_->config ()->open_section (this->section_key_,
"initializers",
0,
initializers_key);
if (status == 0)
{
this->repo_->config ()->get_integer_value (initializers_key,
"count",
count);
fv_desc->initializers.length (count);
ACE_Configuration_Section_Key initializer_key,
params_key,
arg_key,
excepts_key;
for (i = 0; i < count; ++i)
{
stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->open_section (initializers_key,
stringified,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -