valuetype_sh.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 130 行
CPP
130 行
//
// valuetype_sh.cpp,v 1.4 2003/06/17 22:19:48 edwardgt Exp
//
// ============================================================================
//
// = LIBRARY
// TAO IDL
//
// = FILENAME
// valuetype_sh.cpp
//
// = DESCRIPTION
// Visitor generating code for value types in the server header
//
// = AUTHOR
// Jeff Parsons
//
// ============================================================================
ACE_RCSID (be_visitor_valuetype,
valuetype_sh,
"valuetype_sh.cpp,v 1.4 2003/06/17 22:19:48 edwardgt Exp")
// ************************************************************
// Valuetype visitor for server header.
// ************************************************************
be_visitor_valuetype_sh::be_visitor_valuetype_sh (be_visitor_context *ctx)
: be_visitor_valuetype (ctx)
{
}
be_visitor_valuetype_sh::~be_visitor_valuetype_sh (void)
{
}
int
be_visitor_valuetype_sh::visit_valuetype (be_valuetype *node)
{
if (node->srv_hdr_gen () || node->imported () || node->is_abstract ())
{
return 0;
}
AST_Interface *concrete = node->supports_concrete ();
// We generate a skeleton class only if the valuetype supports a
// non-abstract interface.
if (concrete == 0)
{
return 0;
}
TAO_OutStream *os = this->ctx_->stream ();
os->indent ();
ACE_CString class_name;
// We shall have a POA_ prefix only if we are at the topmost level.
if (!node->is_nested ())
{
// We are outermost.
class_name += "POA_";
class_name += node->local_name ();
}
else
{
class_name += node->local_name ();
}
*os << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
// Generate the skeleton class name.
*os << "class " << class_name.c_str () << ";" << be_nl;
// Generate the _ptr declaration.
*os << "typedef " << class_name.c_str () << " *" << class_name.c_str ()
<< "_ptr;" << be_nl;
// Forward class declaration.
*os << "// Forward Classes Declaration" << be_nl;
if (be_global->gen_thru_poa_collocation ())
{
*os << "class " << node->thru_poa_proxy_impl_name () << ";" << be_nl;
}
if (be_global->gen_direct_collocation ())
{
*os << "class " << node->direct_proxy_impl_name () << ";" << be_nl;
}
if (be_global->gen_thru_poa_collocation ()
|| be_global->gen_direct_collocation ())
{
*os << "class " << node->strategized_proxy_broker_name ()
<< ";" << be_nl;
}
*os << be_nl;
// Now generate the class definition.
*os << "class " << be_global->skel_export_macro ()
<< " " << class_name.c_str () << be_idt_nl << ": " << be_idt;
*os << "public virtual " << "POA_"
<< concrete->name () << ",";
*os << be_nl << "public virtual " << "::" << node->full_name ();
*os << be_uidt << be_uidt_nl
<< "{" << be_nl
<< "protected:" << be_idt_nl
<< class_name.c_str () << " (void);\n" << be_uidt_nl
<< "public:" << be_idt_nl;
// No copy constructor for locality constraint interface.
*os << class_name.c_str () << " (const " << class_name.c_str ()
<< "& rhs);" << be_nl
<< "virtual ~" << class_name.c_str () << " (void);" << be_nl << be_uidt_nl;
*os << "};" << be_nl << be_nl;
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?