diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_root/root_svth.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_root/root_svth.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_root/root_svth.cpp b/TAO/TAO_IDL/be/be_visitor_root/root_svth.cpp new file mode 100644 index 00000000000..c4b4a10e963 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_root/root_svth.cpp @@ -0,0 +1,73 @@ + +//============================================================================= +/** + * @file root_svth.cpp + * + * $Id$ + * + * Visitor generating code for Root in the CIAO template servant header + * + * + * @author Marcel Smit + */ +//============================================================================= + +// ******************************** +// Root visitor for CIAO template servant header +// ******************************** + +be_visitor_root_svth::be_visitor_root_svth (be_visitor_context *ctx) + : be_visitor_root (ctx) +{ +} + +be_visitor_root_svth::~be_visitor_root_svth (void) +{ +} + +int +be_visitor_root_svth::visit_root (be_root *node) +{ + if (this->init () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_root_svth::init - ") + ACE_TEXT ("failed to initialize\n")), + -1); + } + + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_root_svth::visit_root - ") + ACE_TEXT ("codegen for scope failed\n")), + -1); + } + + (void) tao_cg->end_ciao_svnt_template_header (); + + return 0; +} + +int +be_visitor_root_svth::init (void) +{ + /// First open the file for writing. + int status = + tao_cg->start_ciao_svnt_template_header ( + be_global->be_get_ciao_tmpl_svnt_hdr_fname ()); + + if (status == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_root_svth::init - ") + ACE_TEXT ("Error opening CIAO servant ") + ACE_TEXT ("header file\n")), + -1); + } + + /// Initialize the stream. + this->ctx_->stream (tao_cg->ciao_svnt_template_header ()); + + return 0; +} |