summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-11 20:58:49 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-11 20:58:49 +0000
commit7fb95b2d4e53068eb49d38409997a59578d294ab (patch)
tree83488b64d3f6d0bff348760ef8e5b406f46d7acd
parent79b959d60837086096ce9fd0461c339d78027718 (diff)
downloadATCD-7fb95b2d4e53068eb49d38409997a59578d294ab.tar.gz
ChangeLogTag: Thu Nov 11 14:55:00 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp5
3 files changed, 21 insertions, 4 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index e1117a0e7a1..77e02f5bbce 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,14 @@
+Thu Nov 11 14:55:00 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp:
+ * TAO_IDLbe/be_visitor_valuetype/field_cs.cpp:
+
+ In accessing or marshaling valuetype members that are interfaces
+ changed calls to _duplicate() and marshal() to use the
+ corresponding methods in TAO::Obref_Traits<>, in case the
+ interface in question has been forward declared but not
+ yet defined.
+
Wed Nov 10 11:25:28 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/be/be_codegen.cpp:
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp
index de0386f949c..ceef003d5f1 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp
@@ -230,7 +230,7 @@ be_visitor_valuetype_field_cdr_cs::visit_enum (be_enum *node)
}
int
-be_visitor_valuetype_field_cdr_cs::visit_interface (be_interface *)
+be_visitor_valuetype_field_cdr_cs::visit_interface (be_interface *node)
{
TAO_OutStream *os = this->ctx_->stream ();
@@ -254,7 +254,12 @@ be_visitor_valuetype_field_cdr_cs::visit_interface (be_interface *)
*os << "(strm >> " << pre_ << f->local_name () << post_ << ".out ())";
break;
case TAO_CodeGen::TAO_CDR_OUTPUT:
- *os << pre_ << f->local_name () << post_ << ".in ()->marshal (strm)";
+// *os << pre_ << f->local_name () << post_ << ".in ()->marshal (strm)";
+ *os << "TAO::Objref_Traits< ::" << node->name ()
+ << ">::marshal (" << be_idt << be_idt_nl
+ << pre_ << f->local_name () << post_ << ".in (), " << be_nl
+ << "strm" << be_uidt_nl
+ << ")" << be_uidt;
break;
case TAO_CodeGen::TAO_CDR_SCOPE:
// Nothing to be done because an interface cannit be declared inside a
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp
index afc9a49771f..a175e283d24 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp
@@ -307,8 +307,9 @@ be_visitor_valuetype_field_cs::visit_interface (be_interface *node)
*os << "this->"
<< bu->field_pd_prefix () << ub->local_name ()
- << bu->field_pd_postfix ()
- << " = " << bt->name () << "::_duplicate (val);" << be_uidt_nl;
+ << bu->field_pd_postfix () << " =" << be_idt_nl
+ << "TAO::Objref_Traits< ::" << bt->name ()
+ << ">::duplicate (val);" << be_uidt << be_uidt_nl;
*os << "}" << be_nl << be_nl;
*os << "// Retrieve the member." << be_nl