From cbd7000724b0474b622ce8c7b47819630f2ab818 Mon Sep 17 00:00:00 2001 From: Mark Spruiell Date: Thu, 11 Sep 2003 21:12:38 +0000 Subject: - Removed dependency on Xerces. - Removed generic stream interface Ice::Stream and ice_marshal functions. - Removed XML stream implementation and related test. - Removed XML transformer and related test. - Removed slice2xsd. - Added C++ wrapper for the expat XML parser in IceXML::Parser. - Removed XML encoding from Freeze. --- cpp/src/Slice/JavaUtil.cpp | 749 +-------------------------------------------- 1 file changed, 5 insertions(+), 744 deletions(-) (limited to 'cpp/src/Slice/JavaUtil.cpp') diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp index bc7b3042379..9bcb7446893 100644 --- a/cpp/src/Slice/JavaUtil.cpp +++ b/cpp/src/Slice/JavaUtil.cpp @@ -590,7 +590,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, } else { - out << nl << stream << ".readObject(new " << patchParams << ");"; + out << nl << stream << ".readObject(" << patchParams << ");"; } } } @@ -654,7 +654,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, } else { - out << nl << stream << ".readObject(new " << patchParams << ");"; + out << nl << stream << ".readObject(" << patchParams << ");"; } } } @@ -1046,8 +1046,8 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, // out << nl << v << ".add(null);"; ostringstream patchParams; - patchParams << "IceInternal.ListPatcher(" << v << ", " << origContentS << ".class, __type" << iter - << ", __i" << iter << ')'; + patchParams << "new IceInternal.ListPatcher(" << v << ", " << origContentS << ".class, __type" + << iter << ", __i" << iter << ')'; writeMarshalUnmarshalCode(out, scope, seq->type(), "__elem", false, iter, false, list(), patchParams.str()); } @@ -1232,7 +1232,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, ostringstream patchParams; if(isObject) { - patchParams << "IceInternal.SequencePatcher(" << v << ", " << origContentS + patchParams << "new IceInternal.SequencePatcher(" << v << ", " << origContentS << ".class, __type" << iter << ", __i" << iter << ')'; writeMarshalUnmarshalCode(out, scope, seq->type(), o.str(), false, iter, false, list(), patchParams.str()); @@ -1248,745 +1248,6 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, } } -void -Slice::JavaGenerator::writeGenericMarshalUnmarshalCode(Output& out, - const string& scope, - const TypePtr& type, - const string& tn, - const string& param, - bool marshal, - int& iter, - bool holder, - const list& metaData) -{ - string stream = marshal ? "__os" : "__is"; - string v; - if(holder) - { - v = param + ".value"; - } - else - { - v = param; - } - - string name; - if(tn.empty()) - { - name = "\"" + param + "\""; - } - else - { - name = tn; - } - - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); - if(builtin) - { - switch(builtin->kind()) - { - case Builtin::KindByte: - { - if(marshal) - { - out << nl << stream << ".writeByte(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readByte(" << name << ");"; - } - break; - } - case Builtin::KindBool: - { - if(marshal) - { - out << nl << stream << ".writeBool(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readBool(" << name << ");"; - } - break; - } - case Builtin::KindShort: - { - if(marshal) - { - out << nl << stream << ".writeShort(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readShort(" << name << ");"; - } - break; - } - case Builtin::KindInt: - { - if(marshal) - { - out << nl << stream << ".writeInt(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readInt(" << name << ");"; - } - break; - } - case Builtin::KindLong: - { - if(marshal) - { - out << nl << stream << ".writeLong(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readLong(" << name << ");"; - } - break; - } - case Builtin::KindFloat: - { - if(marshal) - { - out << nl << stream << ".writeFloat(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readFloat(" << name << ");"; - } - break; - } - case Builtin::KindDouble: - { - if(marshal) - { - out << nl << stream << ".writeDouble(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readDouble(" << name << ");"; - } - break; - } - case Builtin::KindString: - { - if(marshal) - { - out << nl << stream << ".writeString(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readString(" << name << ");"; - } - break; - } - case Builtin::KindObject: - { - if(marshal) - { - out << nl << stream << ".writeObject(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readObject(" << name << ", \"\", null);"; - } - break; - } - case Builtin::KindObjectProxy: - { - if(marshal) - { - out << nl << stream << ".writeProxy(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readProxy(" << name << ");"; - } - break; - } - case Builtin::KindLocalObject: - { - assert(false); - break; - } - } - return; - } - - ProxyPtr prx = ProxyPtr::dynamicCast(type); - if(prx) - { - string typeS = typeToString(type, TypeModeIn, scope); - if(marshal) - { - out << nl << typeS << "Helper.ice_marshal(" << name << ", " << stream << ", " << v << ");"; - } - else - { - out << nl << v << " = " << typeS << "Helper.ice_unmarshal(" << name << ", " << stream << ");"; - } - return; - } - - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); - if(cl) - { - if(marshal) - { - out << nl << stream << ".writeObject(" << name << ", " << v << ");"; - } - else - { - string typeS = typeToString(type, TypeModeIn, scope); - ClassDefPtr def = cl->definition(); - if(def && !def->isAbstract()) - { - out << nl << v << " = (" << typeS << ')' << stream << ".readObject(" << name << ", " << typeS - << ".ice_staticId(), " << typeS << ".ice_factory());"; - } - else - { - out << nl << v << " = (" << typeS << ')' << stream << ".readObject(" << name << ", \"\", null);"; - } - } - return; - } - - StructPtr st = StructPtr::dynamicCast(type); - if(st) - { - if(marshal) - { - out << nl << v << ".ice_marshal(" << name << ", " << stream << ");"; - } - else - { - string typeS = typeToString(type, TypeModeIn, scope); - out << nl << v << " = new " << typeS << "();"; - out << nl << v << ".ice_unmarshal(" << name << ", " << stream << ");"; - } - return; - } - - EnumPtr en = EnumPtr::dynamicCast(type); - if(en) - { - if(marshal) - { - out << nl << v << ".ice_marshal(" << name << ", " << stream << ");"; - } - else - { - string typeS = typeToString(type, TypeModeIn, scope); - out << nl << v << " = " << typeS << ".ice_unmarshal(" << name << ", " << stream << ");"; - } - return; - } - - SequencePtr seq = SequencePtr::dynamicCast(type); - if(seq) - { - writeGenericSequenceMarshalUnmarshalCode(out, scope, seq, name, v, marshal, iter, true, metaData); - return; - } - - ConstructedPtr constructed = ConstructedPtr::dynamicCast(type); - assert(constructed); - string typeS = getAbsolute(constructed->scoped(), scope); - if(marshal) - { - out << nl << typeS << "Helper.ice_marshal(" << name << ", " << stream << ", " << v << ");"; - } - else - { - out << nl << v << " = " << typeS << "Helper.ice_unmarshal(" << name << ", " << stream << ");"; - } -} - -void -Slice::JavaGenerator::writeGenericSequenceMarshalUnmarshalCode(Output& out, - const string& scope, - const SequencePtr& seq, - const string& name, - const string& param, - bool marshal, - int& iter, - bool useHelper, - const list& metaData) -{ - string stream = marshal ? "__os" : "__is"; - string v = param; - - // - // Check for metadata that overrides the default sequence - // mapping. If no metadata is found, we use a regular Java - // array. If metadata is found, the value of the metadata - // must be the name of a class which implements the - // java.util.List interface. - // - // There are two sources of metadata - that passed into - // this function (which most likely comes from a data - // member definition), and that associated with the type - // itself. If data member metadata is found, and does - // not match the type's metadata, then we cannot use - // the type's Helper class for marshalling - we must - // generate marshalling code inline. - // - string listType = findMetaData(metaData); - list typeMetaData = seq->getMetaData(); - if(listType.empty()) - { - listType = findMetaData(typeMetaData); - } - else - { - string s = findMetaData(typeMetaData); - if(listType != s) - { - useHelper = false; - } - } - - // - // If we can use the sequence's helper, it's easy. - // - if(useHelper) - { - string typeS = getAbsolute(seq->scoped(), scope); - if(marshal) - { - out << nl << typeS << "Helper.ice_marshal(" << name << ", " << stream << ", " << v << ");"; - } - else - { - out << nl << v << " = " << typeS << "Helper.ice_unmarshal(" << name << ", " << stream << ");"; - } - return; - } - - // - // Determine sequence depth - // - int depth = 0; - TypePtr origContent = seq->type(); - SequencePtr s = SequencePtr::dynamicCast(origContent); - while(s) - { - // - // Stop if the inner sequence type has metadata. - // - string m = findMetaData(s->getMetaData()); - if(!m.empty()) - { - break; - } - depth++; - origContent = s->type(); - s = SequencePtr::dynamicCast(origContent); - } - string origContentS = typeToString(origContent, TypeModeIn, scope); - - if(!listType.empty()) - { - BuiltinPtr b = BuiltinPtr::dynamicCast(seq->type()); - if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy) - { - if(marshal) - { - out << nl << "if(" << v << " == null)"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", 0);"; - out << nl << stream << ".endWriteSequence();"; - out << eb; - out << nl << "else"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", " << v << ".size());"; - ostringstream o; - o << "__i" << iter; - string it = o.str(); - iter++; - out << nl << "java.util.Iterator " << it << " = " << v << ".iterator();"; - out << nl << "while(" << it << ".hasNext())"; - out << sb; - - switch(b->kind()) - { - case Builtin::KindByte: - { - out << nl << "java.lang.Byte __elem = (java.lang.Byte)" << it << ".next();"; - out << nl << stream << ".writeByte(\"e\", __elem.byteValue());"; - break; - } - case Builtin::KindBool: - { - out << nl << "java.lang.Boolean __elem = (java.lang.Boolean)" << it << ".next();"; - out << nl << stream << ".writeBool(\"e\", __elem.booleanValue());"; - break; - } - case Builtin::KindShort: - { - out << nl << "java.lang.Short __elem = (java.lang.Short)" << it << ".next();"; - out << nl << stream << ".writeShort(\"e\", __elem.shortValue());"; - break; - } - case Builtin::KindInt: - { - out << nl << "java.lang.Integer __elem = (java.lang.Integer)" << it << ".next();"; - out << nl << stream << ".writeInt(\"e\", __elem.intValue());"; - break; - } - case Builtin::KindLong: - { - out << nl << "java.lang.Long __elem = (java.lang.Long)" << it << ".next();"; - out << nl << stream << ".writeLong(\"e\", __elem.longValue());"; - break; - } - case Builtin::KindFloat: - { - out << nl << "java.lang.Float __elem = (java.lang.Float)" << it << ".next();"; - out << nl << stream << ".writeFloat(\"e\", __elem.floatValue());"; - break; - } - case Builtin::KindDouble: - { - out << nl << "java.lang.Double __elem = (java.lang.Double)" << it << ".next();"; - out << nl << stream << ".writeDouble(\"e\", __elem.doubleValue());"; - break; - } - case Builtin::KindString: - { - out << nl << "java.lang.String __elem = (java.lang.String)" << it << ".next();"; - out << nl << stream << ".writeString(\"e\", __elem);"; - break; - } - case Builtin::KindObject: - case Builtin::KindObjectProxy: - case Builtin::KindLocalObject: - { - assert(false); - break; - } - } - out << eb; // while - out << nl << stream << ".endWriteSequence();"; - out << eb; - } - else - { - out << nl << v << " = new " << listType << "();"; - ostringstream o; - o << origContentS << "[]"; - int d = depth; - while(d--) - { - o << "[]"; - } - switch(b->kind()) - { - case Builtin::KindByte: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readByteSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Byte(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindBool: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readBoolSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(__seq" << iter << "[__i" << iter - << "] ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);"; - out << eb; - iter++; - break; - } - case Builtin::KindShort: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readShortSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Short(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindInt: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readIntSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Integer(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindLong: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readLongSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Long(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindFloat: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readFloatSeq(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Float(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindDouble: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readDoubleSeq(" << name - << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(new java.lang.Double(__seq" << iter << "[__i" << iter << "]));"; - out << eb; - iter++; - break; - } - case Builtin::KindString: - { - out << nl << o.str() << " __seq" << iter << " = " << stream << ".readStringSeq(" << name - << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __seq" << iter - << ".length; __i" << iter << "++)"; - out << sb; - out << nl << v << ".add(__seq" << iter << "[__i" << iter << "]);"; - out << eb; - iter++; - break; - } - case Builtin::KindObject: - case Builtin::KindObjectProxy: - case Builtin::KindLocalObject: - { - assert(false); - break; - } - } - } - } - else - { - string typeS = getAbsolute(seq->scoped(), scope); - if(marshal) - { - out << nl << "if(" << v << " == null)"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", 0);"; - out << nl << stream << ".endWriteSequence();"; - out << eb; - out << nl << "else"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", " << v << ".size());"; - ostringstream o; - o << "__i" << iter; - iter++; - string it = o.str(); - out << nl << "java.util.Iterator " << it << " = " << v << ".iterator();"; - out << nl << "while(" << it << ".hasNext())"; - out << sb; - out << nl << origContentS << " __elem = (" << origContentS << ")" << it << ".next();"; - writeGenericMarshalUnmarshalCode(out, scope, seq->type(), "\"e\"", "__elem", true, iter, false); - out << eb; // while - out << nl << stream << ".endWriteSequence();"; - out << eb; // else - } - else - { - out << nl << v << " = new " << listType << "();"; - out << nl << "final int __len" << iter << " = " << stream << ".startReadSequence(" << name << ");"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < __len" << iter << "; __i" << iter - << "++)"; - out << sb; - out << nl << origContentS << " __elem;"; - iter++; - writeGenericMarshalUnmarshalCode(out, scope, seq->type(), "\"e\"", "__elem", false, iter, false); - out << nl << v << ".add(__elem);"; - out << eb; - out << nl << stream << ".endReadSequence();"; - } - } - } - else - { - BuiltinPtr b = BuiltinPtr::dynamicCast(seq->type()); - if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy) - { - switch(b->kind()) - { - case Builtin::KindByte: - { - if(marshal) - { - out << nl << stream << ".writeByteSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readByteSeq(" << name << ");"; - } - break; - } - case Builtin::KindBool: - { - if(marshal) - { - out << nl << stream << ".writeBoolSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readBoolSeq(" << name << ");"; - } - break; - } - case Builtin::KindShort: - { - if(marshal) - { - out << nl << stream << ".writeShortSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readShortSeq(" << name << ");"; - } - break; - } - case Builtin::KindInt: - { - if(marshal) - { - out << nl << stream << ".writeIntSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readIntSeq(" << name << ");"; - } - break; - } - case Builtin::KindLong: - { - if(marshal) - { - out << nl << stream << ".writeLongSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readLongSeq(" << name << ");"; - } - break; - } - case Builtin::KindFloat: - { - if(marshal) - { - out << nl << stream << ".writeFloatSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readFloatSeq(" << name << ");"; - } - break; - } - case Builtin::KindDouble: - { - if(marshal) - { - out << nl << stream << ".writeDoubleSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readDoubleSeq(" << name << ");"; - } - break; - } - case Builtin::KindString: - { - if(marshal) - { - out << nl << stream << ".writeStringSeq(" << name << ", " << v << ");"; - } - else - { - out << nl << v << " = " << stream << ".readStringSeq(" << name << ");"; - } - break; - } - case Builtin::KindObject: - case Builtin::KindObjectProxy: - case Builtin::KindLocalObject: - { - assert(false); - break; - } - } - } - else - { - string typeS = getAbsolute(seq->scoped(), scope); - if(marshal) - { - out << nl << "if(" << v << " == null)"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", 0);"; - out << nl << stream << ".endWriteSequence();"; - out << eb; - out << nl << "else"; - out << sb; - out << nl << stream << ".startWriteSequence(" << name << ", " << v << ".length);"; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < " << v << ".length; __i" << iter - << "++)"; - out << sb; - ostringstream o; - o << v << "[__i" << iter << "]"; - iter++; - writeGenericMarshalUnmarshalCode(out, scope, seq->type(), "\"e\"", o.str(), true, iter, false); - out << eb; - out << nl << stream << ".endWriteSequence();"; - out << eb; - } - else - { - out << nl << "final int __len" << iter << " = " << stream << ".startReadSequence(" << name << ");"; - out << nl << v << " = new " << origContentS << "[__len" << iter << "]"; - int d = depth; - while(d--) - { - out << "[]"; - } - out << ';'; - out << nl << "for(int __i" << iter << " = 0; __i" << iter << " < " << v << ".length; __i" << iter - << "++)"; - out << sb; - ostringstream o; - o << v << "[__i" << iter << "]"; - iter++; - writeGenericMarshalUnmarshalCode(out, scope, seq->type(), "\"e\"", o.str(), false, iter, false); - out << eb; - out << nl << stream << ".endReadSequence();"; - } - } - } -} - void Slice::JavaGenerator::printHeader() { -- cgit v1.2.3