summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2014-10-07 14:14:02 -0230
committerDwayne Boone <dwayne@zeroc.com>2014-10-07 14:14:02 -0230
commit6ab5e3eefa98923840213d3167b7e26f4bfc2be1 (patch)
treeee958b3f5abad98ff42b106ff6d90bdcb9b75bdc /cpp/src/slice2java/Gen.cpp
parentversion updates (diff)
downloadice-6ab5e3eefa98923840213d3167b7e26f4bfc2be1.tar.bz2
ice-6ab5e3eefa98923840213d3167b7e26f4bfc2be1.tar.xz
ice-6ab5e3eefa98923840213d3167b7e26f4bfc2be1.zip
ICE-4324 Added support for java.nio.Buffer classes through metadata
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index cc397c26b6f..a288cfd8290 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -4554,7 +4554,19 @@ Slice::Gen::HolderVisitor::visitSequence(const SequencePtr& p)
if(p->findMetaData(prefix, meta))
{
return; // No holders for protobuf types.
+ }
+ }
+ if(builtin &&
+ (builtin->kind() == Builtin::KindByte || builtin->kind() == Builtin::KindShort ||
+ builtin->kind() == Builtin::KindInt || builtin->kind() == Builtin::KindLong ||
+ builtin->kind() == Builtin::KindFloat || builtin->kind() == Builtin::KindDouble))
+ {
+ string meta;
+ string prefix = "java:buffer";
+ if(p->findMetaData(prefix, meta))
+ {
+ return; // No holders for buffer types.
}
}
@@ -4644,7 +4656,7 @@ Slice::Gen::HolderVisitor::writeHolder(const TypePtr& p)
}
out << eb;
}
- else
+ else
{
out << sp << nl << "public" << nl << name << "Holder()";
out << sb;
@@ -5119,6 +5131,20 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p)
return;
}
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(builtin &&
+ (builtin->kind() == Builtin::KindByte || builtin->kind() == Builtin::KindShort ||
+ builtin->kind() == Builtin::KindInt || builtin->kind() == Builtin::KindLong ||
+ builtin->kind() == Builtin::KindFloat || builtin->kind() == Builtin::KindDouble))
+ {
+ string prefix = "java:buffer";
+ string meta;
+ if(p->findMetaData(prefix, meta))
+ {
+ return; // No holders for buffer types.
+ }
+ }
+
string name = p->name();
string absolute = getAbsolute(p);
string helper = getAbsolute(p, "", "", "Helper");
@@ -5444,7 +5470,7 @@ Slice::Gen::HelperVisitor::writeOperation(const ClassDefPtr& p, const string& pa
if(!inArgs.empty())
{
for(vector<string>::const_iterator p = inArgs.begin(); p != inArgs.end(); ++p) {
- out << *p << ", ";
+ out << *p << ", ";
}
}
out << "__ctx, __explicitCtx, true, null));";