diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/config/TestUtil.py | 4 | ||||
-rw-r--r-- | cpp/slice/Ice/BuiltinSequences.ice | 9 | ||||
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 5 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 3 |
4 files changed, 16 insertions, 5 deletions
diff --git a/cpp/config/TestUtil.py b/cpp/config/TestUtil.py index d5975d3a433..a3d73952a16 100644 --- a/cpp/config/TestUtil.py +++ b/cpp/config/TestUtil.py @@ -16,8 +16,8 @@ import sys, os # protocol. Otherwise TCP is used. # -protocol = "ssl" -#protocol = "" +#protocol = "ssl" +protocol = "" # # Set compressed to 1 in case you want to run the tests with diff --git a/cpp/slice/Ice/BuiltinSequences.ice b/cpp/slice/Ice/BuiltinSequences.ice index d2de9213471..fb8f3b5495a 100644 --- a/cpp/slice/Ice/BuiltinSequences.ice +++ b/cpp/slice/Ice/BuiltinSequences.ice @@ -38,6 +38,15 @@ sequence<double> DoubleSeq; /** A sequence of strings. **/ sequence<string> StringSeq; +/** A sequence of objects. **/ +sequence<Object> ObjectSeq; + +/** A sequence of object proxies. **/ +sequence<Object*> ObjectProxySeq; + +/** A sequence of local objects. **/ +local sequence<Object*> LocalObjectSeq; + }; #endif diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index bc744762e34..16cfbe6edf5 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -360,7 +360,8 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string& SequencePtr seq = SequencePtr::dynamicCast(type); if (seq) { - if (BuiltinPtr::dynamicCast(seq->type())) + BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + if (builtin && builtin->kind() != Builtin::KindObject && builtin->kind() != Builtin::KindObjectProxy) { out << nl << stream << deref << func << param << ");"; } @@ -575,7 +576,7 @@ Slice::writeGenericMarshalUnmarshalCode(Output& out, const TypePtr& type, const if (seq) { BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); - if (builtin) + if (builtin && builtin->kind() != Builtin::KindObject && builtin->kind() != Builtin::KindObjectProxy) { if (marshal) { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 679fa5ce774..3291133b600 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -597,7 +597,8 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p) H << sp << nl << "typedef ::std::vector<" << s << "> " << name << ';'; BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); - if (!builtin && !p->isLocal()) + if (!p->isLocal() && + (!builtin || builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindObjectProxy)) { string scoped = p->scoped(); string scope = p->scope(); |