diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-11-10 00:07:20 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-11-10 00:07:20 +0000 |
commit | dd033b5b8ae738d2ee80e416c104368ca255f334 (patch) | |
tree | 74fd26b4dd7d9a1496467ea68b7633aa71d8fbfd /TAO | |
parent | e600a7c0a7764ddd9020caee54257bcdb25d4f5c (diff) | |
download | ATCD-dd033b5b8ae738d2ee80e416c104368ca255f334.tar.gz |
ChangeLogTag: Sun Nov 9 17:57:40 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/ChangeLog | 17 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_codegen.cpp | 179 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_global.cpp | 61 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_root/root.cpp | 40 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp | 72 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_codegen.h | 16 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_global.h | 25 | ||||
-rw-r--r-- | TAO/TAO_IDL/driver/drv_args.cpp | 6 |
8 files changed, 410 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index b9d0f0f25e8..0faa3bad1c8 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,19 @@ +Sun Nov 9 17:57:40 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_codegen.cpp: + * TAO_IDL/be/be_global.cpp: + * TAO_IDL/be/be_visitor_root/root.cpp: + * TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp: + * TAO_IDL/be_include/be_codegen.h: + * TAO_IDL/be_include/be_global.h: + * TAO_IDL/driver/drv_args.cpp: + + Added a new IDL compiler option (intended for use on TAO + .pidl files only) and associated mechanism to generate + Any operators into a separate set of .h and .cpp files. + This option will result in footprint reduction in most, + if not all, application programs that link to TAO. + Sun Nov 9 17:57:57 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> * tao/Synch_Refcountable.h: @@ -37,6 +53,7 @@ Sun Nov 9 17:57:57 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> Fixed fuzz errors. +>>>>>>> 1.2874 Sun Nov 9 22:12:29 UTC 2003 Don Hinton <dhinton@dresystems.com> * tao/Makefile.dirs: diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp index 14b5968d3b5..5f5e66bbeb4 100644 --- a/TAO/TAO_IDL/be/be_codegen.cpp +++ b/TAO/TAO_IDL/be/be_codegen.cpp @@ -43,11 +43,45 @@ TAO_CodeGen::TAO_CodeGen (void) server_template_skeletons_ (0), server_inline_ (0), server_template_inline_ (0), + anyop_header_ (0), + anyop_source_ (0), gperf_input_stream_ (0), gperf_input_filename_ (0), curr_os_ (0), visitor_factory_ (0) { + // Initialize the anyop streams here so we won't have to fuss + // with it in the visitors. + if (be_global->gen_anyop_files ()) + { + int status = 0; + + status = + this->start_anyop_header ( + be_global->be_get_anyop_header_fname () + ); + + if (status == -1) + { + ACE_ERROR ((LM_ERROR, + "(%N:%l) TAO_CodeGen::" + "TAO_CodeGen - " + "Error opening anyop header file\n")); + } + + status = + this->start_anyop_source ( + be_global->be_get_anyop_source_fname () + ); + + if (status == -1) + { + ACE_ERROR ((LM_ERROR, + "(%N:%l) TAO_CodeGen::" + "TAO_CodeGen - " + "Error opening anyop source file\n")); + } + } } // destructor @@ -64,6 +98,8 @@ TAO_CodeGen::~TAO_CodeGen (void) delete this->client_inline_; delete this->server_inline_; delete this->server_template_inline_; + delete this->anyop_header_; + delete this->anyop_source_; #if !defined (linux) && !defined (__QNX__) // This causes a seg fault on Linux RH 5.1. Let it leak . . . delete this->gperf_input_stream_; @@ -786,6 +822,109 @@ TAO_CodeGen::server_template_inline (void) return this->server_template_inline_; } +int +TAO_CodeGen::start_anyop_header (const char *fname) +{ + // Retrieve the singleton instance to the outstream factory. + TAO_OutStream_Factory *factory = TAO_OUTSTREAM_FACTORY::instance (); + + // Retrieve a specialized instance. + this->anyop_header_ = factory->make_outstream (); + + if (!this->anyop_header_) + { + return -1; + } + + if (this->anyop_header_->open (fname, + TAO_OutStream::TAO_CLI_HDR) + == -1) + { + return -1; + } + + *this->anyop_header_ << be_nl + << "// TAO_IDL - Generated from" << be_nl + << "// " << __FILE__ << ":" << __LINE__ + << be_nl << be_nl; + + // Generate the #ident string, if any. + this->gen_ident_string (this->anyop_header_); + + // Generate the #ifndef clause. + this->gen_ifndef_string (fname, + this->anyop_header_, + "_TAO_IDL_", + "_ANYOP_H_"); + + if (be_global->pre_include () != 0) + { + *this->anyop_header_ << "#include /**/ \"" + << be_global->pre_include () + << "\""; + } + + return 0; +} + +TAO_OutStream * +TAO_CodeGen::anyop_header (void) +{ + return this->anyop_header_; +} + +int +TAO_CodeGen::start_anyop_source (const char *fname) +{ + // Retrieve the singleton instance to the outstream factory. + TAO_OutStream_Factory *factory = TAO_OUTSTREAM_FACTORY::instance (); + + // Retrieve a specialized instance. + this->anyop_source_ = factory->make_outstream (); + + if (!this->anyop_source_) + { + return -1; + } + + if (this->anyop_source_->open (fname, + TAO_OutStream::TAO_CLI_IMPL) + == -1) + { + return -1; + } + + // Generate the include statement for the precompiled header file. + if (be_global->pch_include ()) + { + *this->anyop_source_ << "#include \"" + << be_global->pch_include () + << "\""; + } + + // Generate the include statement for the client header. We just + // need to put only the base names. Path info is not required. + *this->anyop_source_ << "\n#include \"" + << be_global->be_get_client_hdr_fname (1) + << "\""; + + // Generate the include statement for the anyop header. We just + // need to put only the base names. Path info is not required. + *this->anyop_source_ << "\n#include \"" + << be_global->be_get_anyop_header_fname (1) + << "\""; + + this->gen_standard_include (this->anyop_source_, + "tao/Typecode.h"); + + return 0; +} + +TAO_OutStream * +TAO_CodeGen::anyop_source (void) +{ + return this->anyop_source_; +} // Set the server header stream. int @@ -936,6 +1075,7 @@ TAO_CodeGen::end_client_header (void) } *this->client_header_ << "#endif /* ifndef */" << be_nl << be_nl; + return 0; } @@ -1112,6 +1252,30 @@ TAO_CodeGen::end_server_skeletons (void) return 0; } +int +TAO_CodeGen::end_anyop_header (void) +{ + // Code to put the last #endif. + *this->anyop_header_ << "\n\n"; + + if (be_global->post_include () != 0) + { + *this->anyop_header_ << "#include /**/ \"" + << be_global->post_include () + << "\"\n\n"; + } + + *this->anyop_header_ << "#endif /* ifndef */" << be_nl << be_nl; + + return 0; +} + +int +TAO_CodeGen::end_anyop_source (void) +{ + return 0; +} + // We use the following helper functions to pass information. This class is the // best place to pass such information rather than passing information through // global variables spread everywhere. This class is a singleton and is @@ -1576,11 +1740,18 @@ TAO_CodeGen::gen_any_file_includes (void) { if (be_global->any_support ()) { + TAO_OutStream *stream = this->client_stubs_; + + if (be_global->gen_anyop_files ()) + { + stream = this->anyop_source_; + } + this->gen_cond_file_include ( idl_global->decls_seen_masks.interface_seen_ | idl_global->decls_seen_masks.valuetype_seen_, "tao/Any_Impl_T.h", - this->client_stubs_ + stream ); this->gen_cond_file_include ( @@ -1588,19 +1759,19 @@ TAO_CodeGen::gen_any_file_includes (void) | idl_global->decls_seen_masks.seq_seen_ | idl_global->decls_seen_masks.exception_seen_, "tao/Any_Dual_Impl_T.h", - this->client_stubs_ + stream ); this->gen_cond_file_include ( idl_global->decls_seen_masks.array_seen_, "tao/Any_Array_Impl_T.h", - this->client_stubs_ + stream ); this->gen_cond_file_include ( idl_global->decls_seen_masks.enum_seen_, "tao/Any_Basic_Impl_T.h", - this->client_stubs_ + stream ); } } diff --git a/TAO/TAO_IDL/be/be_global.cpp b/TAO/TAO_IDL/be/be_global.cpp index 1bdbe44e006..6bd0e665cb7 100644 --- a/TAO/TAO_IDL/be/be_global.cpp +++ b/TAO/TAO_IDL/be/be_global.cpp @@ -51,6 +51,8 @@ BE_GlobalData::BE_GlobalData (void) server_template_skeleton_ending_ (ACE::strnew ("S_T.cpp")), server_inline_ending_ (ACE::strnew ("S.i")), server_template_inline_ending_ (ACE::strnew ("S_T.i")), + anyop_hdr_ending_ (ACE::strnew ("A.h")), + anyop_src_ending_ (ACE::strnew ("A.cpp")), output_dir_ (0), any_support_ (I_TRUE), tc_support_ (I_TRUE), @@ -75,7 +77,8 @@ BE_GlobalData::BE_GlobalData (void) gen_tmplinst_ (I_FALSE), lookup_strategy_ (TAO_PERFECT_HASH), void_type_ (0), - ccmobject_ (0) + ccmobject_ (0), + gen_anyop_files_ (I_FALSE) { } @@ -269,6 +272,24 @@ BE_GlobalData::be_get_server_template_inline (UTL_String *idl_file_name, } const char * +BE_GlobalData::be_get_anyop_header (UTL_String *idl_file_name, + int base_name_only) +{ + return be_change_idl_file_extension (idl_file_name, + be_global->anyop_header_ending (), + base_name_only); +} + +const char * +BE_GlobalData::be_get_anyop_source (UTL_String *idl_file_name, + int base_name_only) +{ + return be_change_idl_file_extension (idl_file_name, + be_global->anyop_source_ending (), + base_name_only); +} + +const char * BE_GlobalData::be_get_client_hdr_fname (int base_name_only) { return be_get_client_hdr (idl_global->stripped_filename (), @@ -349,6 +370,20 @@ BE_GlobalData::be_get_server_template_inline_fname (int base_name_only) base_name_only); } +const char * +BE_GlobalData::be_get_anyop_header_fname (int base_name_only) +{ + return be_get_anyop_header (idl_global->stripped_filename (), + base_name_only); +} + +const char * +BE_GlobalData::be_get_anyop_source_fname (int base_name_only) +{ + return be_get_anyop_source (idl_global->stripped_filename (), + base_name_only); +} + const char* BE_GlobalData::skel_export_macro (void) const { @@ -609,6 +644,18 @@ BE_GlobalData::server_template_inline_ending (void) const return this->server_template_inline_ending_; } +const char* +BE_GlobalData::anyop_header_ending (void) const +{ + return this->anyop_hdr_ending_; +} + +const char* +BE_GlobalData::anyop_source_ending (void) const +{ + return this->anyop_src_ending_; +} + void BE_GlobalData::output_dir (const char* s) { @@ -905,3 +952,15 @@ BE_GlobalData::ccmobject (be_interface *val) this->ccmobject_ = val; } +idl_bool +BE_GlobalData::gen_anyop_files (void) const +{ + return this->gen_anyop_files_; +} + +void +BE_GlobalData::gen_anyop_files (idl_bool val) +{ + this->gen_anyop_files_ = val; +} + diff --git a/TAO/TAO_IDL/be/be_visitor_root/root.cpp b/TAO/TAO_IDL/be/be_visitor_root/root.cpp index c8e1b8014d8..2b4c7aa444d 100644 --- a/TAO/TAO_IDL/be/be_visitor_root/root.cpp +++ b/TAO/TAO_IDL/be/be_visitor_root/root.cpp @@ -282,8 +282,20 @@ int be_visitor_root::visit_root (be_root *node) if (be_global->any_support ()) { + if (be_global->gen_anyop_files ()) + { + // Switch streams, ctx will be reassigned when this + // pass is done. + ctx.stream (tao_cg->anyop_header ()); + } + be_visitor_root_any_op visitor (&ctx); status = node->accept (&visitor); + + if (be_global->gen_anyop_files ()) + { + (void) tao_cg->end_anyop_header (); + } } break; @@ -294,8 +306,20 @@ int be_visitor_root::visit_root (be_root *node) if (be_global->any_support ()) { + if (be_global->gen_anyop_files ()) + { + // Switch streams, ctx will be reassigned when this + // pass is done. + ctx.stream (tao_cg->anyop_source ()); + } + be_visitor_root_any_op visitor (&ctx); status = node->accept (&visitor); + + if (be_global->gen_anyop_files ()) + { + (void) tao_cg->end_anyop_source (); + } } break; @@ -327,7 +351,6 @@ int be_visitor_root::visit_root (be_root *node) -1); } - // Make another pass over the entire tree and generate the CDR operators. ctx = *this->ctx_; status = 0; @@ -1703,6 +1726,11 @@ be_visitor_root::gen_explicit_tmplinst (be_root *node, 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) @@ -1716,6 +1744,11 @@ be_visitor_root::gen_explicit_tmplinst (be_root *node, 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) @@ -1728,6 +1761,11 @@ be_visitor_root::gen_explicit_tmplinst (be_root *node, } 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) { diff --git a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp index b09fa3d0ecb..4cddae02625 100644 --- a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp @@ -142,11 +142,20 @@ be_visitor_tmplinst_cs::visit_interface (be_interface *node) // For Any impl template class. if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -224,11 +233,20 @@ be_visitor_tmplinst_cs::visit_valuetype (be_valuetype *node) // For Any impl template class. if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -369,12 +387,21 @@ be_visitor_tmplinst_cs::visit_sequence (be_sequence *node) // For Any impl template class. if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Dual_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -552,6 +579,13 @@ be_visitor_tmplinst_cs::visit_array (be_array *node) // For Any impl template class. if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Array_Impl_T<" << this->linebreak_ @@ -559,6 +593,8 @@ be_visitor_tmplinst_cs::visit_array (be_array *node) << fname << "_slice," << this->linebreak_ << be_nl << fname << "_forany" << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -648,12 +684,21 @@ be_visitor_tmplinst_cs::visit_enum (be_enum *node) if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Basic_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -672,12 +717,21 @@ be_visitor_tmplinst_cs::visit_exception (be_exception *node) if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Dual_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -743,12 +797,21 @@ be_visitor_tmplinst_cs::visit_structure (be_structure *node) if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Dual_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); @@ -813,12 +876,21 @@ be_visitor_tmplinst_cs::visit_union (be_union *node) if (be_global->any_support ()) { + TAO_OutStream *tmp = os; + + if (be_global->gen_anyop_files ()) + { + os = tao_cg->anyop_source (); + } + *os << be_nl << be_nl << this->prefix_ << this->linebreak_ << be_idt << be_idt_nl << "TAO::Any_Dual_Impl_T<" << this->linebreak_ << be_idt << be_idt_nl << node->name () << this->linebreak_ << be_uidt_nl << ">" << this->suffix_ << be_uidt << be_uidt << be_uidt; + + os = tmp; } this->this_mode_generated (node, I_TRUE); diff --git a/TAO/TAO_IDL/be_include/be_codegen.h b/TAO/TAO_IDL/be_include/be_codegen.h index 7c7097833bf..500def365b6 100644 --- a/TAO/TAO_IDL/be_include/be_codegen.h +++ b/TAO/TAO_IDL/be_include/be_codegen.h @@ -275,6 +275,10 @@ public: int start_server_template_skeletons (const char *fname); // Set the server template skeletons stream. + int start_anyop_header (const char *fname); + int start_anyop_source (const char *fname); + // TAO developers only. + int end_client_header (void); // Generate code at the end such as the <<= and >>= operators alongwith the // ending #endif statement. @@ -300,6 +304,10 @@ public: int end_server_skeletons (void); // Put a last #endif in the server skeletons. + int end_anyop_header (void); + int end_anyop_source (void); + // TAO developers only. + TAO_OutStream *client_header (void); // Get the client header stream. @@ -333,6 +341,10 @@ public: TAO_OutStream *server_template_inline (void); // Get the server template inline stream. + TAO_OutStream *anyop_header (void); + TAO_OutStream *anyop_source (void); + // TAO developers only. Accessors to the streams. + void gperf_input_stream (TAO_OutStream *gperf_input); // Set the gperf input file stream. @@ -426,6 +438,10 @@ private: TAO_OutStream *server_template_inline_; // Server side template inline file. + TAO_OutStream *anyop_header_; + TAO_OutStream *anyop_source_; + // For use by TAO developers only. + TAO_OutStream *gperf_input_stream_; // TAO_OutStream to collect the input for gperf program. diff --git a/TAO/TAO_IDL/be_include/be_global.h b/TAO/TAO_IDL/be_include/be_global.h index 24b18e004e3..63f9e376043 100644 --- a/TAO/TAO_IDL/be_include/be_global.h +++ b/TAO/TAO_IDL/be_include/be_global.h @@ -97,6 +97,12 @@ public: static const char *be_get_server_template_inline_fname ( int base_name_only = 0 ); + static const char *be_get_anyop_header_fname ( + int base_name_only = 0 + ); + static const char *be_get_anyop_source_fname ( + int base_name_only = 0 + ); // Helper functions: obtain the names of each generated file given // the IDL file name. @@ -125,6 +131,10 @@ public: int base_name_only = 0); static const char *be_get_server_template_inline (UTL_String *idl_file_name, int base_name_only = 0); + static const char *be_get_anyop_header (UTL_String *idl_file_name, + int base_name_only = 0); + static const char *be_get_anyop_source (UTL_String *idl_file_name, + int base_name_only = 0); const char* skel_export_macro (void) const; // returns the macro name for exporting server side classes in Win32 @@ -260,6 +270,10 @@ public: const char* server_template_inline_ending (void) const; // Get the server_template_inline_ending. + const char* anyop_header_ending (void) const; + const char* anyop_source_ending (void) const; + // TAO developers only. + void output_dir (const char* s); // Set the directory where all the IDL-Compiler-Generated files are // to be kept. Default is current directory from which the @@ -405,6 +419,10 @@ public: void ccmobject (be_interface *val); // Accessors for the member. + idl_bool gen_anyop_files (void) const; + void gen_anyop_files (idl_bool val); + // Accessors for the member. + private: size_t changing_standard_include_files_; // To switch between changing or non-changing standard include @@ -461,6 +479,10 @@ private: // Server's template inline file name ending. Default is "S_T.i". char* server_template_inline_ending_; + // Any operator file name endings. + char* anyop_hdr_ending_; + char* anyop_src_ending_; + char* output_dir_; // Directory where all the IDL-Compiler-Generated files are to be // kept. Default value is 0 for this string which means the current @@ -531,6 +553,9 @@ private: be_interface *ccmobject_; // Reference holder for component skeleton visitors. + + idl_bool gen_anyop_files_; + // @@@ (TAO TEAM ONLY) Separate files for generated Any operators? }; #endif /* _BE_GLOBAL_H */ diff --git a/TAO/TAO_IDL/driver/drv_args.cpp b/TAO/TAO_IDL/driver/drv_args.cpp index 050592dd356..f31c12df07b 100644 --- a/TAO/TAO_IDL/driver/drv_args.cpp +++ b/TAO/TAO_IDL/driver/drv_args.cpp @@ -1169,6 +1169,12 @@ DRV_parse_args (long ac, char **av) // AMH classes. be_global->gen_amh_classes (I_TRUE); } + else if (av[i][2] == 'A') + { + // TAO-team-only, undocumented option to generate + // Any operators into a separate set of files. + be_global->gen_anyop_files (I_TRUE); + } else if (av[i][2] == 'e') { idl_global->append_idl_flag (av[i+1]); |