summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-09-06 13:16:32 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-09-06 13:16:32 +0000
commit20f85749175b7ee4b8432c0436998b370f2590fa (patch)
tree70e83d575b1925bd763b59509f8fdea8d270de1f
parent2f8c174ed0f864dfee2f7dac7f97803f2faac92a (diff)
downloadATCD-20f85749175b7ee4b8432c0436998b370f2590fa.tar.gz
ChangeLogTag: Thu Sep 6 13:10:49 UTC 2007 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog13
-rw-r--r--TAO/TAO_IDL/be/be_enum.cpp39
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp8
-rw-r--r--TAO/TAO_IDL/driver/drv_preproc.cpp1
-rw-r--r--TAO/TAO_IDL/include/idl_global.h9
-rw-r--r--TAO/TAO_IDL/util/utl_global.cpp24
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 (