diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-11 20:58:49 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-11 20:58:49 +0000 |
commit | 7fb95b2d4e53068eb49d38409997a59578d294ab (patch) | |
tree | 83488b64d3f6d0bff348760ef8e5b406f46d7acd | |
parent | 79b959d60837086096ce9fd0461c339d78027718 (diff) | |
download | ATCD-7fb95b2d4e53068eb49d38409997a59578d294ab.tar.gz |
ChangeLogTag: Thu Nov 11 14:55:00 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 11 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_valuetype/field_cdr_cs.cpp | 9 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_valuetype/field_cs.cpp | 5 |
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 |