diff options
author | Joe George <joe@zeroc.com> | 2016-06-28 16:47:55 -0400 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2016-06-28 16:49:33 -0400 |
commit | 0292368fbb2e5373aa7f8df35dc4999cdc9b485a (patch) | |
tree | 748f859d73ab8596acdabd22461eb96749063fa1 /cpp/src/slice2cpp/Gen.cpp | |
parent | Fixed NPE in Java/IceSSL implementation (diff) | |
download | ice-0292368fbb2e5373aa7f8df35dc4999cdc9b485a.tar.bz2 ice-0292368fbb2e5373aa7f8df35dc4999cdc9b485a.tar.xz ice-0292368fbb2e5373aa7f8df35dc4999cdc9b485a.zip |
Cleanup generated code for classes
- Only generate StreamReader and StreamWriter friends for "protected"
metadata
- Remove some unnecessary 'using' declerations
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index e8bcdb73501..3320e90d4a3 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -2916,10 +2916,6 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) H << sp; H << nl << "virtual void __write(::Ice::OutputStream*) const;"; H << nl << "virtual void __read(::Ice::InputStream*);"; - - string baseName = base ? fixKwd(base->scoped()) : string("::Ice::Object"); - H << nl << "using " << baseName << "::__write;"; - H << nl << "using " << baseName << "::__read;"; } H.dec(); @@ -2930,15 +2926,6 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) H << nl << "virtual void __writeImpl(::Ice::OutputStream*) const;"; H << nl << "virtual void __readImpl(::Ice::InputStream*);"; - string baseName = base ? fixKwd(base->scoped()) : string("::Ice::Object"); - H << nl << "using " << baseName << "::__writeImpl;"; - H << nl << "using " << baseName << "::__readImpl;"; - H << sp; - H << nl << "template<typename T, typename S>"; - H << nl << "friend struct Ice::StreamWriter;"; - H << nl << "template<typename T, typename S>"; - H << nl << "friend struct Ice::StreamReader;"; - if(preserved && !basePreserved) { C << sp; @@ -3014,7 +3001,7 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) // // Emit data members. Access visibility may be specified by metadata. // - + bool generateFriend = false; DataMemberList dataMembers = p->dataMembers(); bool prot = p->hasMetaData("protected"); for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q) @@ -3028,6 +3015,7 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) H.inc(); inProtected = true; } + generateFriend = true; } else { @@ -3055,6 +3043,23 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) H << sp << nl << "::Ice::SlicedDataPtr __slicedData;"; } + if(generateFriend) + { + if(!inProtected) + { + H.dec(); + H << sp << nl << "protected:"; + H.inc(); + inProtected = true; + } + + H << sp; + H << nl << "template<typename T, typename S>"; + H << nl << "friend struct Ice::StreamWriter;"; + H << nl << "template<typename T, typename S>"; + H << nl << "friend struct Ice::StreamReader;"; + } + H << eb << ';'; if(!p->isAbstract() && !p->isLocal() && !_doneStaticSymbol) @@ -7698,20 +7703,7 @@ Slice::Gen::Cpp11ValueVisitor::visitClassDefEnd(const ClassDefPtr& p) H << sp; H << nl << "virtual void __write(::Ice::OutputStream*) const;"; H << nl << "virtual void __read(::Ice::InputStream*);"; - } - - H.dec(); - H << sp << nl << "protected:"; - H.inc(); - H << sp; - H << nl << "template<typename T, typename S>"; - H << nl << "friend struct Ice::StreamWriter;"; - H << nl << "template<typename T, typename S>"; - H << nl << "friend struct Ice::StreamReader;"; - - if(preserved && !basePreserved) - { C << sp; C << nl << "void" << nl << scoped.substr(2) << "::__write(::Ice::OutputStream* __os) const"; C << sb; @@ -7738,7 +7730,8 @@ Slice::Gen::Cpp11ValueVisitor::visitClassDefEnd(const ClassDefPtr& p) // // Emit data members. Access visibility may be specified by metadata. // - bool inProtected = true; + bool inProtected = false; + bool generateFriend = false; DataMemberList dataMembers = p->dataMembers(); bool prot = p->hasMetaData("protected"); for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q) @@ -7752,6 +7745,7 @@ Slice::Gen::Cpp11ValueVisitor::visitClassDefEnd(const ClassDefPtr& p) H.inc(); inProtected = true; } + generateFriend = true; } else { @@ -7779,6 +7773,23 @@ Slice::Gen::Cpp11ValueVisitor::visitClassDefEnd(const ClassDefPtr& p) H << sp << nl << "::std::shared_ptr<::Ice::SlicedData> __slicedData;"; } + if(generateFriend) + { + if(!inProtected) + { + H.dec(); + H << sp << nl << "protected:"; + H.inc(); + inProtected = true; + } + + H << sp; + H << nl << "template<typename T, typename S>"; + H << nl << "friend struct Ice::StreamWriter;"; + H << nl << "template<typename T, typename S>"; + H << nl << "friend struct Ice::StreamReader;"; + } + H << eb << ';'; if(!_doneStaticSymbol) |