diff options
author | Jose <jose@zeroc.com> | 2019-03-18 16:56:43 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2019-03-18 16:56:43 +0100 |
commit | 9905472f8d04a57d5b7f9fad369b9b1e39b2bf6e (patch) | |
tree | 592fdb1643b8c6eb8c6246e217a3247d355c5af8 /cpp/src/slice2swift/Gen.cpp | |
parent | Proxy test cleanup (diff) | |
download | ice-9905472f8d04a57d5b7f9fad369b9b1e39b2bf6e.tar.bz2 ice-9905472f8d04a57d5b7f9fad369b9b1e39b2bf6e.tar.xz ice-9905472f8d04a57d5b7f9fad369b9b1e39b2bf6e.zip |
slice2swift fixes for marshal and proxy hierarchy
Diffstat (limited to 'cpp/src/slice2swift/Gen.cpp')
-rw-r--r-- | cpp/src/slice2swift/Gen.cpp | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/cpp/src/slice2swift/Gen.cpp b/cpp/src/slice2swift/Gen.cpp index 91125ec7faa..e21d35e32d5 100644 --- a/cpp/src/slice2swift/Gen.cpp +++ b/cpp/src/slice2swift/Gen.cpp @@ -546,7 +546,7 @@ Gen::TypesVisitor::visitSequence(const SequencePtr& p) out << nl << "v.reserveCapacity(sz)"; out << nl << "for _ in 0 ..< sz"; out << sb; - writeMarshalUnmarshalCode(out, type, typeToString(p->type(), p), "j", false, true, false); + writeMarshalUnmarshalCode(out, type, typeToString(p->type(), p), "j", p, false, true, false); out << nl << "v.append(j)"; out << eb; out << nl << "return v"; @@ -575,7 +575,7 @@ Gen::TypesVisitor::visitSequence(const SequencePtr& p) out << nl << "ostr.write(size: v.count)"; out << nl << "v.forEach"; out << sb; - writeMarshalUnmarshalCode(out, type, typeToString(p->type(), p), "$0", false, false, true); + writeMarshalUnmarshalCode(out, type, typeToString(p->type(), p), "$0", p, false, false, true); out << eb; out << eb; @@ -642,8 +642,10 @@ Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) out << nl << "var v = " << name << "()"; out << nl << "for _ in 0 ..< sz"; out << sb; - writeMarshalUnmarshalCode(out, p->keyType(), typeToString(p->keyType(), p), "key", false, true, false); - writeMarshalUnmarshalCode(out, p->valueType(), typeToString(p->valueType(), p), "value", false, true, false); + writeMarshalUnmarshalCode(out, p->keyType(), typeToString(p->keyType(), p), "key", p, + false, true, false); + writeMarshalUnmarshalCode(out, p->valueType(), typeToString(p->valueType(), p), "value", p, + false, true, false); out << nl << "v[key] = value"; out << eb; out << nl << "return v"; @@ -673,8 +675,10 @@ Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) out << nl << "v.forEach"; out << sb; out << "key, value in"; - writeMarshalUnmarshalCode(out, p->keyType(), typeToString(p->keyType(), p), "key", false, false, true); - writeMarshalUnmarshalCode(out, p->valueType(), typeToString(p->valueType(), p), "value", false, false, true); + writeMarshalUnmarshalCode(out, p->keyType(), typeToString(p->keyType(), p), "key", p, + false, false, true); + writeMarshalUnmarshalCode(out, p->valueType(), typeToString(p->valueType(), p), "value", p, + false, false, true); out << eb; out << eb; @@ -806,8 +810,22 @@ Gen::ProxyVisitor::visitClassDefStart(const ClassDefPtr& p) const string prxI = "_" + name + "PrxI"; out << sp; - out << nl << "public protocol " << prx << ": " - << (baseClass ? fixIdent(baseClass->name()) : getUnqualified("Ice.ObjectPrx", swiftModule)); + out << nl << "public protocol " << prx << ":"; + if(bases.empty()) + { + out << " " << getUnqualified("Ice.ObjectPrx", swiftModule); + } + else + { + for(ClassList::const_iterator i = bases.begin(); i != bases.end();) + { + out << " " << getUnqualified(getAbsolute(*i), swiftModule) << "Prx"; + if(++i != bases.end()) + { + out << ","; + } + } + } out << sb; out << eb; |