summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/JavaUtil.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2012-09-27 10:16:31 -0700
committerMark Spruiell <mes@zeroc.com>2012-09-27 10:16:31 -0700
commitced0ab85cf66c785352333ecf72214fb069793dd (patch)
tree16866cdab7f97dec35d0c216d83cfeb901d91ed0 /cpp/src/Slice/JavaUtil.cpp
parentICE-4859 - test/Ice/hash slice should be generated in test.Ice.hash package (diff)
downloadice-ced0ab85cf66c785352333ecf72214fb069793dd.tar.bz2
ice-ced0ab85cf66c785352333ecf72214fb069793dd.tar.xz
ice-ced0ab85cf66c785352333ecf72214fb069793dd.zip
clean up optional tests; bug fixes for Java/C#
Diffstat (limited to 'cpp/src/Slice/JavaUtil.cpp')
-rw-r--r--cpp/src/Slice/JavaUtil.cpp63
1 files changed, 16 insertions, 47 deletions
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp
index 4799dd1313d..c8f1effe0a5 100644
--- a/cpp/src/Slice/JavaUtil.cpp
+++ b/cpp/src/Slice/JavaUtil.cpp
@@ -1678,6 +1678,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
}
string ignore;
+ const size_t wireSize = elemType->minWireSize();
if(marshal)
{
@@ -1722,24 +1723,11 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
tmpName = v;
}
- if(!elemBuiltin ||
- (elemBuiltin->kind() != Builtin::KindByte && elemBuiltin->kind() != Builtin::KindBool))
+ if(wireSize > 1)
{
out << nl << "final int __optSize = " << tmpName << " == null ? 0 : " << tmpName << ".size();";
- const size_t wireSize = elemType->minWireSize();
-
- if(wireSize > 1)
- {
- out << nl << stream << ".writeSize(__optSize > 254 ? __optSize * " << wireSize
- << " + 5 : __optSize * " << wireSize << " + 1);";
- }
- else
- {
- //
- // The element type could be a struct with a wire size of 1.
- //
- out << nl << stream << ".writeSize(__optSize > 254 ? __optSize + 5 : __optSize + 1);";
- }
+ out << nl << stream << ".writeSize(__optSize > 254 ? __optSize * " << wireSize
+ << " + 5 : __optSize * " << wireSize << " + 1);";
}
writeSequenceMarshalUnmarshalCode(out, package, seq, tmpName, marshal, iter, true, metaData);
}
@@ -1769,24 +1757,11 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
tmpName = v;
}
- if(!elemBuiltin || (elemBuiltin->kind() != Builtin::KindByte &&
- elemBuiltin->kind() != Builtin::KindBool))
+ if(wireSize > 1)
{
out << nl << "final int __optSize = " << tmpName << " == null ? 0 : " << tmpName << ".length;";
- const size_t wireSize = elemType->minWireSize();
-
- if(wireSize > 1)
- {
- out << nl << stream << ".writeSize(__optSize > 254 ? __optSize * " << wireSize
- << " + 5 : __optSize * " << wireSize << " + 1);";
- }
- else
- {
- //
- // The element type could be a struct with a wire size of 1.
- //
- out << nl << stream << ".writeSize(__optSize > 254 ? __optSize + 5 : __optSize + 1);";
- }
+ out << nl << stream << ".writeSize(__optSize > 254 ? __optSize * " << wireSize
+ << " + 5 : __optSize * " << wireSize << " + 1);";
}
writeSequenceMarshalUnmarshalCode(out, package, seq, tmpName, marshal, iter, true, metaData);
@@ -1816,25 +1791,19 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
{
out << nl << stream << ".skip(4);";
}
- else if(findMetaData("java:type:", metaData, ignore) ||
- findMetaData("java:type:", seq->getMetaData(), ignore))
+ else if(wireSize > 1)
{
- //
- // The sequence is an instance of java.util.List<E>, where E is a fixed-size type.
- // If the element type is bool or byte, we do NOT write an extra size.
- //
-
- if(!elemBuiltin ||
- (elemBuiltin->kind() != Builtin::KindByte && elemBuiltin->kind() != Builtin::KindBool))
+ if(findMetaData("java:type:", metaData, ignore) ||
+ findMetaData("java:type:", seq->getMetaData(), ignore))
{
+ //
+ // The sequence is an instance of java.util.List<E>, where E is a fixed-size type.
+ //
+
out << nl << stream << ".skipSize();";
}
- }
- else if(!findMetaData("java:protobuf:", seq->getMetaData(), ignore) &&
- !findMetaData("java:serializable:", seq->getMetaData(), ignore))
- {
- if(!elemBuiltin ||
- (elemBuiltin->kind() != Builtin::KindByte && elemBuiltin->kind() != Builtin::KindBool))
+ else if(!findMetaData("java:protobuf:", seq->getMetaData(), ignore) &&
+ !findMetaData("java:serializable:", seq->getMetaData(), ignore))
{
out << nl << stream << ".skipSize();";
}