diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-09-06 13:16:32 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-09-06 13:16:32 +0000 |
commit | 20f85749175b7ee4b8432c0436998b370f2590fa (patch) | |
tree | 70e83d575b1925bd763b59509f8fdea8d270de1f | |
parent | 2f8c174ed0f864dfee2f7dac7f97803f2faac92a (diff) | |
download | ATCD-20f85749175b7ee4b8432c0436998b370f2590fa.tar.gz |
ChangeLogTag: Thu Sep 6 13:10:49 UTC 2007 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 13 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_enum.cpp | 39 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/driver/drv_preproc.cpp | 1 | ||||
-rw-r--r-- | TAO/TAO_IDL/include/idl_global.h | 9 | ||||
-rw-r--r-- | TAO/TAO_IDL/util/utl_global.cpp | 24 |
6 files changed, 77 insertions, 17 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 79158beb654..3f65b5cc2cf 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,16 @@ +Thu Sep 6 13:10:49 UTC 2007 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/include/idl_global.h: + * TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp: + * TAO_IDL/be/be_enum.cpp: + * TAO_IDL/driver/drv_preproc.cpp: + * TAO_IDL/util/utl_global.cpp: + + Fixes intended for checkin last July and overlooked, including: + + - fixes to optional generated stream operators + - addition and usage of global list of relative include paths + Thu Sep 6 12:37:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> * examples/Borland/ChatClientWnd.cpp: diff --git a/TAO/TAO_IDL/be/be_enum.cpp b/TAO/TAO_IDL/be/be_enum.cpp index 7471d529168..2252349a717 100644 --- a/TAO/TAO_IDL/be/be_enum.cpp +++ b/TAO/TAO_IDL/be/be_enum.cpp @@ -72,25 +72,38 @@ be_enum::be_enum (UTL_ScopedName *n, void be_enum::gen_ostream_operator (TAO_OutStream *os) { + static ACE_CString const tao_enumerators ("_tao_enumerators_"); + ACE_CString const enumerators_name (tao_enumerators + + this->flat_name ()); *os << be_nl << "std::ostream& operator<< (std::ostream &strm, const " << this->name () << " _tao_enumerator)" << be_nl << "{" << be_idt_nl - << "switch (_tao_enumerator)" << be_idt_nl - << "{" << be_idt_nl; - - for (int i = 0; i < this->member_count (); ++i) - { - UTL_ScopedName *mname = - this->value_to_name (static_cast<unsigned long> (i)); - - *os << "case " << i << ": return strm << \"" - << mname << "\";" << be_nl; - } - - *os << "default: return strm;" << be_uidt_nl + << "if( 0 <= _tao_enumerator && " << this->member_count () << " > _tao_enumerator )" << be_idt_nl + << "{" << be_idt_nl + << "return strm << " << enumerators_name.c_str () << "[_tao_enumerator];" << be_uidt_nl + << "}" << be_uidt_nl + << "else" << be_idt_nl + << "{" << be_idt_nl + << "return strm;" << be_uidt_nl << "}" << be_uidt << be_uidt_nl << "}" << be_nl; + + *os << be_nl + << "std::istream& operator>> (std::istream &strm, " + << this->name () << " &_tao_enumerator)" << be_nl + << "{" << be_idt_nl + << "std::string value;" << be_nl + << "strm >> value;" << be_nl + << "for (CORBA::ULong i = 0; i < " << this->member_count () << "; ++i)" << be_idt_nl + << "{" << be_idt_nl + << "if (value == " << enumerators_name.c_str () << "[i])" << be_idt_nl + << "{" << be_idt_nl + << "_tao_enumerator = static_cast<" << this->name () << ">(i);" << be_uidt_nl + << "}" << be_uidt_nl << be_uidt_nl + << "}" << be_uidt_nl + << "return strm;" << be_uidt_nl + << "}" << be_nl; } void diff --git a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp index 1059e7c858f..1f6656ca1db 100644 --- a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp @@ -61,9 +61,13 @@ be_visitor_enum_cdr_op_ch::visit_enum (be_enum *node) if (be_global->gen_ostream_operators ()) { - *os << be_global->stub_export_macro () << " std::ostream&" + *os << be_nl + << be_global->stub_export_macro () << " std::ostream&" << " operator<< (std::ostream &strm, const " << node->name () - << " _tao_enumerator);" << be_nl; + << " _tao_enumerator);" << be_nl + << be_global->stub_export_macro () << " std::istream&" + << " operator>> (std::istream &strm, " << node->name () + << " &_tao_enumerator);" << be_nl; } *os << be_global->core_versioning_end () << be_nl; diff --git a/TAO/TAO_IDL/driver/drv_preproc.cpp b/TAO/TAO_IDL/driver/drv_preproc.cpp index 21765b69ad7..05489716ebf 100644 --- a/TAO/TAO_IDL/driver/drv_preproc.cpp +++ b/TAO/TAO_IDL/driver/drv_preproc.cpp @@ -381,6 +381,7 @@ DRV_sweep_dirs (const char *rel_path, ACE_CString incl_arg ("-I"); incl_arg += bname; DRV_cpp_putarg (incl_arg.c_str ()); + idl_global->add_rel_include_path (bname.c_str ()); full_path = ACE_OS::realpath ("", abspath); if (full_path != 0) diff --git a/TAO/TAO_IDL/include/idl_global.h b/TAO/TAO_IDL/include/idl_global.h index 08080cb7a82..c80415e5752 100644 --- a/TAO/TAO_IDL/include/idl_global.h +++ b/TAO/TAO_IDL/include/idl_global.h @@ -557,7 +557,11 @@ public: void add_include_path (const char *s); // Add another path to 'include_paths_'. - + + void add_rel_include_path (const char *s); + ACE_Unbounded_Queue<char *> const & rel_include_paths (void) const; + // Accessor/mutator for the rel_include_paths_ member. + FILE * open_included_file (char const * filename, char const *& directory); // Attempt to open file for reading until it is found in one of the @@ -694,6 +698,9 @@ private: ACE_Unbounded_Queue<char *> include_paths_; // List of -I options passed to us. + + ACE_Unbounded_Queue<char *> rel_include_paths_; + // Used by backends with the -r option. ACE_Hash_Map_Manager<char *, char *, ACE_Null_Mutex> file_prefixes_; // Associates a prefix with a file. diff --git a/TAO/TAO_IDL/util/utl_global.cpp b/TAO/TAO_IDL/util/utl_global.cpp index 8b2abed615f..b4ebc4c1668 100644 --- a/TAO/TAO_IDL/util/utl_global.cpp +++ b/TAO/TAO_IDL/util/utl_global.cpp @@ -1331,6 +1331,18 @@ IDL_GlobalData::add_include_path (const char *s) this->include_paths_.enqueue_tail (ACE::strnew (s)); } +void +IDL_GlobalData::add_rel_include_path (const char *s) +{ + this->rel_include_paths_.enqueue_tail (ACE::strnew (s)); +} + +ACE_Unbounded_Queue<char *> const & +IDL_GlobalData::rel_include_paths (void) const +{ + return this->rel_include_paths_; +} + ACE_Hash_Map_Manager<char *, char *, ACE_Null_Mutex> & IDL_GlobalData::file_prefixes (void) { @@ -1539,13 +1551,23 @@ IDL_GlobalData::fini (void) for (ACE_Unbounded_Queue_Iterator<char *>qiter ( this->include_paths_ ); - !qiter.done (); + qiter.done () == 0; qiter.advance ()) { qiter.next (path_tmp); ACE::strdelete (*path_tmp); } + for (ACE_Unbounded_Queue_Iterator<char *>riter ( + this->rel_include_paths_ + ); + riter.done () == 0; + riter.advance ()) + { + riter.next (path_tmp); + ACE::strdelete (*path_tmp); + } + ACE_Hash_Map_Entry<char *, char *> *entry = 0; for (ACE_Hash_Map_Iterator<char *, char *, ACE_Null_Mutex> hiter ( |