summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/JavaUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Slice/JavaUtil.cpp')
-rw-r--r--cpp/src/Slice/JavaUtil.cpp65
1 files changed, 51 insertions, 14 deletions
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp
index 3e27a14e5ee..f84b30eb8d5 100644
--- a/cpp/src/Slice/JavaUtil.cpp
+++ b/cpp/src/Slice/JavaUtil.cpp
@@ -573,7 +573,7 @@ Slice::JavaGenerator::getStaticId(const TypePtr& type, const string& package) co
BuiltinPtr b = BuiltinPtr::dynamicCast(type);
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
- assert((b && b->kind() == Builtin::KindObject) || cl);
+ assert((b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl);
if(b)
{
@@ -650,6 +650,10 @@ Slice::JavaGenerator::getOptionalFormat(const TypePtr& type)
assert(false);
break;
}
+ case Builtin::KindValue:
+ {
+ return "Ice.OptionalFormat.Class";
+ }
}
}
@@ -707,7 +711,8 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
"String",
"Ice.Object",
"Ice.ObjectPrx",
- "java.lang.Object"
+ "java.lang.Object",
+ "Ice.Object" // Ice.Value
};
static const char* builtinHolderTable[] =
{
@@ -721,7 +726,8 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
"Ice.StringHolder",
"Ice.ObjectHolder",
"Ice.ObjectPrxHolder",
- "Ice.LocalObjectHolder"
+ "Ice.LocalObjectHolder",
+ "Ice.ObjectHolder" // Ice.ValueHolder
};
static const char* builtinOptionalTable[] =
{
@@ -735,6 +741,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
"???",
"???",
"???",
+ "???",
"???"
};
@@ -765,6 +772,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
+ case Builtin::KindValue:
{
break;
}
@@ -904,7 +912,8 @@ Slice::JavaGenerator::typeToObjectString(const TypePtr& type,
"java.lang.String",
"Ice.Object",
"Ice.ObjectPrx",
- "java.lang.Object"
+ "java.lang.Object",
+ "Ice.Object" // Ice.Value
};
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -1157,6 +1166,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
break;
}
case Builtin::KindObject:
+ case Builtin::KindValue:
{
if(marshal)
{
@@ -1630,7 +1640,8 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
BuiltinPtr elemBuiltin = BuiltinPtr::dynamicCast(elemType);
if(optionalParam && elemBuiltin && elemBuiltin->kind() != Builtin::KindObject &&
- elemBuiltin->kind() != Builtin::KindObjectProxy && !hasTypeMetaData(seq, metaData))
+ elemBuiltin->kind() != Builtin::KindObjectProxy && elemBuiltin->kind() != Builtin::KindValue &&
+ !hasTypeMetaData(seq, metaData))
{
static const char* builtinTable[] =
{
@@ -1670,6 +1681,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out,
}
return;
}
+ case Builtin::KindValue:
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
@@ -1972,7 +1984,7 @@ Slice::JavaGenerator::writeDictionaryMarshalUnmarshalCode(Output& out,
}
BuiltinPtr b = BuiltinPtr::dynamicCast(type);
- if(ClassDeclPtr::dynamicCast(type) || (b && b->kind() == Builtin::KindObject))
+ if(ClassDeclPtr::dynamicCast(type) || (b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)))
{
string keyTypeStr = typeToObjectString(key, TypeModeIn, package);
string valueTypeStr = typeToObjectString(value, TypeModeIn, package);
@@ -1995,7 +2007,8 @@ Slice::JavaGenerator::writeDictionaryMarshalUnmarshalCode(Output& out,
}
}
BuiltinPtr builtin = BuiltinPtr::dynamicCast(value);
- if(!(builtin && builtin->kind() == Builtin::KindObject) && !ClassDeclPtr::dynamicCast(value))
+ if(!(builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue)) &&
+ !ClassDeclPtr::dynamicCast(value))
{
out << nl << "" << v << ".put(__key, __value);";
}
@@ -2153,6 +2166,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
+ case Builtin::KindValue:
{
assert(false);
break;
@@ -2263,7 +2277,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
{
bool isObject = false;
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
- if((b && b->kind() == Builtin::KindObject) || cl)
+ if((b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl)
{
isObject = true;
}
@@ -2328,7 +2342,9 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
else
{
BuiltinPtr b = BuiltinPtr::dynamicCast(type);
- if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy)
+ if(b && b->kind() != Builtin::KindObject &&
+ b->kind() != Builtin::KindValue &&
+ b->kind() != Builtin::KindObjectProxy)
{
switch(b->kind())
{
@@ -2428,6 +2444,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
}
break;
}
+ case Builtin::KindValue:
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
@@ -2462,7 +2479,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
{
bool isObject = false;
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(origContent);
- if((b && b->kind() == Builtin::KindObject) || cl)
+ if((b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl)
{
isObject = true;
}
@@ -2678,6 +2695,7 @@ Slice::JavaGenerator::writeStreamMarshalUnmarshalCode(Output& out,
}
break;
}
+ case Builtin::KindValue:
case Builtin::KindObject:
{
if(marshal)
@@ -3183,7 +3201,8 @@ Slice::JavaGenerator::writeStreamDictionaryMarshalUnmarshalCode(Output& out,
}
}
BuiltinPtr builtin = BuiltinPtr::dynamicCast(value);
- if(!(builtin && builtin->kind() == Builtin::KindObject) && !ClassDeclPtr::dynamicCast(value))
+ if(!(builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue)) &&
+ !ClassDeclPtr::dynamicCast(value))
{
out << nl << "" << v << ".put(__key, __value);";
}
@@ -3343,6 +3362,7 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
+ case Builtin::KindValue:
{
assert(false);
break;
@@ -3450,7 +3470,7 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
{
bool isObject = false;
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
- if((b && b->kind() == Builtin::KindObject) || cl)
+ if((b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl)
{
isObject = true;
}
@@ -3515,7 +3535,9 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
else
{
BuiltinPtr b = BuiltinPtr::dynamicCast(type);
- if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy)
+ if(b && b->kind() != Builtin::KindObject &&
+ b->kind() != Builtin::KindValue &&
+ b->kind() != Builtin::KindObjectProxy)
{
switch(b->kind())
{
@@ -3618,6 +3640,7 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
case Builtin::KindObject:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
+ case Builtin::KindValue:
{
assert(false);
break;
@@ -3649,7 +3672,7 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
{
bool isObject = false;
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(origContent);
- if((b && b->kind() == Builtin::KindObject) || cl)
+ if((b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl)
{
isObject = true;
}
@@ -4257,6 +4280,11 @@ Slice::JavaGenerator::MetaDataVisitor::getMetaData(const ContainedPtr& cont)
emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'");
}
+ else if(s == "delegate")
+ {
+ result.push_back(s);
+ continue;
+ }
_history.insert(s);
}
@@ -4314,6 +4342,15 @@ Slice::JavaGenerator::MetaDataVisitor::validateType(const SyntaxTreeBasePtr& p,
//
emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
}
+ else if(i->find("delegate") == 0)
+ {
+ ClassDefPtr cl = ClassDefPtr::dynamicCast(p);
+ if(cl && cl->isDelegate())
+ {
+ continue;
+ }
+ emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
+ }
}
}