root.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 1,816 行 · 第 1/4 页
CPP
1,816 行
break;
}
case TAO_CodeGen::TAO_ROOT_SH:
{
be_visitor_module_sh visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_SI:
case TAO_CodeGen::TAO_ROOT_SS:
case TAO_CodeGen::TAO_ROOT_IS:
{
be_visitor_module visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_IH:
{
be_visitor_module_ih visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CH:
case TAO_CodeGen::TAO_ROOT_ANY_OP_CS:
{
be_visitor_module_any_op visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CH:
case TAO_CodeGen::TAO_ROOT_CDR_OP_CI:
case TAO_CodeGen::TAO_ROOT_CDR_OP_CS:
{
be_visitor_module_cdr_op visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_module - "
"Bad context state\n"),
-1);
}
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_module - "
"failed to accept visitor\n"),
-1);
}
return 0;
}
int
be_visitor_root::visit_structure (be_structure *node)
{
// Instantiate a visitor context with a copy of our context. This info
// will be modified based on what type of node we are visiting.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
int status = 0;
switch (this->ctx_->state ())
{
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_structure_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CI:
{
be_visitor_structure_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CS:
{
be_visitor_structure_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CH:
{
be_visitor_structure_any_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CS:
{
be_visitor_structure_any_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CH:
{
be_visitor_structure_cdr_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CI:
{
be_visitor_structure_cdr_op_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CS:
{
be_visitor_structure_cdr_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
return 0; // nothing to be done
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_structure - "
"failed to accept visitor\n"),
-1);
}
return 0;
}
int
be_visitor_root::visit_structure_fwd (be_structure_fwd *node)
{
// Instantiate a visitor context with a copy of our context. This info
// will be modified based on what type of node we are visiting.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
int status = 0;
switch (this->ctx_->state ())
{
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_structure_fwd_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
return 0; // nothing to be done
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_structure_fwd - "
"failed to accept visitor\n"),
-1);
}
return 0;
}
int
be_visitor_root::visit_union (be_union *node)
{
// Instantiate a visitor context with a copy of our context. This info
// will be modified based on what type of node we are visiting.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
int status = 0;
switch (this->ctx_->state ())
{
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_union_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CI:
{
be_visitor_union_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CS:
{
be_visitor_union_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CH:
{
be_visitor_union_any_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CS:
{
be_visitor_union_any_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CH:
{
be_visitor_union_cdr_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CI:
{
be_visitor_union_cdr_op_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CS:
{
be_visitor_union_cdr_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
return 0; // nothing to be done
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_union - "
"failed to accept visitor\n"),
-1);
}
return 0;
}
int
be_visitor_root::visit_union_fwd (be_union_fwd *node)
{
// Instantiate a visitor context with a copy of our context. This info
// will be modified based on what type of node we are visiting.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
int status = 0;
switch (this->ctx_->state ())
{
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_union_fwd_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
return 0; // nothing to be done
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_interface_fwd - "
"failed to accept visitor\n"),
-1);
}
return 0;
}
int
be_visitor_root::visit_typedef (be_typedef *node)
{
// Instantiate a visitor context with a copy of our context. This info
// will be modified based on what type of node we are visiting.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
int status = 0;
switch (this->ctx_->state ())
{
case TAO_CodeGen::TAO_ROOT_CH:
{
be_visitor_typedef_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CI:
{
be_visitor_typedef_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CS:
{
be_visitor_typedef_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CH:
{
be_visitor_typedef_any_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_ANY_OP_CS:
{
be_visitor_typedef_any_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CH:
{
be_visitor_typedef_cdr_op_ch visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CI:
{
be_visitor_typedef_cdr_op_ci visitor (&ctx);
status = node->accept (&visitor);
break;
}
case TAO_CodeGen::TAO_ROOT_CDR_OP_CS:
{
be_visitor_typedef_cdr_op_cs visitor (&ctx);
status = node->accept (&visitor);
break;
}
default:
return 0; // nothing to be done
}
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_typedef - "
"failed to accept visitor"),
-1);
}
return 0;
}
int
be_visitor_root::gen_explicit_tmplinst (be_root *node,
TAO_OutStream *os)
{
if (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_CS)
{
// Make two more passes over the AST to generate the explicit
// template instantiations, one for 'template class ...' and
// one for '#pragma instantiate ...' for the client side.
*os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
os->gen_ifdef_AHETI ();
if (be_global->gen_anyop_files ())
{
tao_cg->anyop_source ()->gen_ifdef_AHETI ();
}
be_visitor_tmplinst_cs visitor (this->ctx_);
if (node->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_root - "
"stub explicit template instantiation failed\n"),
-1);
}
os->gen_elif_AHETI ();
if (be_global->gen_anyop_files ())
{
tao_cg->anyop_source ()->gen_elif_AHETI ();
}
visitor.switch_mode ();
if (node->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_root - "
"stub explicit template instantiation failed\n"),
-1);
}
os->gen_endif_AHETI ();
if (be_global->gen_anyop_files ())
{
tao_cg->anyop_source ()->gen_endif_AHETI ();
}
}
else if (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_SS)
{
// Make two more passes over the AST to generate the explicit
// template instantiations, one for 'template class ...' and
// one for '#pragma instantiate ...' for the client side.
*os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__
<< be_nl << be_nl;
*os << "#if 0 " << be_nl
<< "/* Useful at a later date." << be_nl
<< "At present will be commented out */" << be_nl;
os->gen_ifdef_AHETI ();
be_visitor_tmplinst_ss visitor (this->ctx_);
if (node->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_root - "
"skel explicit template instantiation failed\n"),
-1);
}
os->gen_elif_AHETI ();
visitor.switch_mode ();
if (node->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
"visit_root - "
"skel explicit template instantiation failed\n"),
-1);
}
os->gen_endif_AHETI ();
*os << be_nl << "#endif /*if 0*/ " << be_nl;
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?