diff options
author | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-18 13:03:02 +0000 |
---|---|---|
committer | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-18 13:03:02 +0000 |
commit | 57fd58d77cd96da2b3a7d38b6fdb9f4442554905 (patch) | |
tree | 5ca8c196f359f7d4abd86490a5d7fd83e5e36330 /TAO/TAO_IDL/be/be_visitor_interface_fwd | |
parent | bf5eca3c6028196adf55b0b74a380cd37c637d0d (diff) | |
download | ATCD-57fd58d77cd96da2b3a7d38b6fdb9f4442554905.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface_fwd')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp | 94 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ci.cpp | 78 |
2 files changed, 172 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp new file mode 100644 index 00000000000..0f3447f9b49 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp @@ -0,0 +1,94 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// interface_fwd_ch.cpp +// +// = DESCRIPTION +// Visitor generating code for Interface_Fwd node in the client header. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface_fwd.h" + + +// ******************************************************************** +// Visitor implementation for the Interface_Fwd type +// This one for the client header file +// ******************************************************************** + +be_visitor_interface_fwd_ch::be_visitor_interface_fwd_ch (be_visitor_context *ctx) + : be_visitor_decl (ctx) +{ +} + +be_visitor_interface_fwd_ch::~be_visitor_interface_fwd_ch (void) +{ +} + +// visit the Interface_Fwd_Ch node and its scope +int +be_visitor_interface_fwd_ch::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + + if (!node->cli_hdr_gen () && !node->imported ()) + { + os->indent (); // start from the current + + // all we do in this is generate a forward declaration of the class + *os << "class " << node->local_name () << ";" << be_nl; + + // generate the ifdefined macro for the _ptr type + os->gen_ifdef_macro (node->flatname (), "_ptr"); + + // generate the _ptr declaration + *os << "typedef " << node->local_name () << " *" << node->local_name () + << "_ptr;\n"; + + os->gen_endif (); + + // enclose under an ifdef macro + os->gen_ifdef_macro (node->flatname (), "_var"); + + // generate the _var declaration + if (node->gen_var_defn () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_fwd_ch::" + "visit_interface_fwd - " + "codegen for _var failed\n"), -1); + } + // gen an endif + os->gen_endif (); + + // enclose under an ifdef macro + os->gen_ifdef_macro (node->flatname (), "_out"); + + // generate the _out declaration - ORBOS/97-05-15 pg 16-20 spec + if (node->gen_out_defn () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_fwd_ch::" + "visit_interface_fwd - " + "codegen for _out failed\n"), -1); + } + // generate the endif macro + os->gen_endif (); + node->cli_hdr_gen (I_TRUE); + } + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ci.cpp b/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ci.cpp new file mode 100644 index 00000000000..a98a3c077b4 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ci.cpp @@ -0,0 +1,78 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// interface_fwd_ci.cpp +// +// = DESCRIPTION +// Visitor generating code for Interface_Fwd node in the client inline. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface_fwd.h" + +// ******************************************************************** +// Visitor implementation for the Interface_Fwd type +// This one for the client inline file +// ******************************************************************** + +be_visitor_interface_fwd_ci::be_visitor_interface_fwd_ci (be_visitor_context *ctx) + : be_visitor_decl (ctx) +{ +} + +be_visitor_interface_fwd_ci::~be_visitor_interface_fwd_ci (void) +{ +} + +// visit the Interface_Fwd_ci node and its scope +int +be_visitor_interface_fwd_ci::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + + if (!node->cli_inline_gen () && !node->imported ()) + { + + // generate the ifdefined macro for the _var type + os->gen_ifdef_macro (node->flatname (), "_var"); + + if (node->gen_var_impl () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_fwd_ci::" + "visit_interface_fwd - " + "codegen for _var failed\n"), -1); + } + + os->gen_endif (); + + // generate the ifdefined macro for the _out type + os->gen_ifdef_macro (node->flatname (), "_out"); + + if (node->gen_out_impl () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_fwd_ci::" + "visit_interface_fwd - " + "codegen for _out failed\n"), -1); + } + os->gen_endif (); + + node->cli_stub_gen (I_TRUE); + } + return 0; +} |