summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-09-06 18:22:41 +0000
committerMark Spruiell <mes@zeroc.com>2002-09-06 18:22:41 +0000
commit3fd1746c0aff491d3c4d0fa75506c8d7693a845e (patch)
tree52752a50ff4d37107412eb59deb91bb4a01e6226 /cpp/src/slice2java/Gen.cpp
parentadding clone() (diff)
downloadice-3fd1746c0aff491d3c4d0fa75506c8d7693a845e.tar.bz2
ice-3fd1746c0aff491d3c4d0fa75506c8d7693a845e.tar.xz
ice-3fd1746c0aff491d3c4d0fa75506c8d7693a845e.zip
clone() fixes
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp41
1 files changed, 30 insertions, 11 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 46cb2838c0c..10f27241263 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -1084,7 +1084,7 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
//
// ice_copyStateFrom
//
- if(_clone && !p->isInterface() && p->hasDataMembers())
+ if(!p->isInterface() && p->hasDataMembers())
{
out << sp << nl << "protected void"
<< nl << "ice_copyStateFrom(Ice.Object __obj)";
@@ -1092,18 +1092,25 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
out << nl << "throws java.lang.CloneNotSupportedException";
out.dec();
out << sb;
- out << nl << "super.ice_copyStateFrom(__obj);";
- out << nl << name << " __v = (" << name << ")__obj;";
+ if(_clone)
+ {
+ out << nl << "super.ice_copyStateFrom(__obj);";
+ out << nl << name << " __v = (" << name << ")__obj;";
- //
- // Perform a shallow copy.
- //
- DataMemberList members = p->dataMembers();
- DataMemberList::const_iterator d;
- for(d = members.begin(); d != members.end(); ++d)
+ //
+ // Perform a shallow copy.
+ //
+ DataMemberList members = p->dataMembers();
+ DataMemberList::const_iterator d;
+ for(d = members.begin(); d != members.end(); ++d)
+ {
+ string memberName = fixKwd((*d)->name());
+ out << nl << "this." << memberName << " = __v." << memberName << ';';
+ }
+ }
+ else
{
- string memberName = fixKwd((*d)->name());
- out << nl << "this." << memberName << " = __v." << memberName << ';';
+ out << nl << "throw new java.lang.CloneNotSupportedException();";
}
out << eb;
@@ -3295,6 +3302,18 @@ Slice::Gen::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p)
<< "Disp extends Ice.Object implements " << name;
out << sb;
+ //
+ // ice_copyStateFrom
+ //
+ out << sp << nl << "protected void"
+ << nl << "ice_copyStateFrom(Ice.Object __obj)";
+ out.inc();
+ out << nl << "throws java.lang.CloneNotSupportedException";
+ out.dec();
+ out << sb;
+ out << nl << "throw new java.lang.CloneNotSupportedException();";
+ out << eb;
+
writeDispatch(out, p);
out << eb;