private GenericProtocol Read(IStreamInput pDataInput) { var index = pDataInput.ReadShort(); var node = CopyRef(index); // Rekursive Methode: Read(pDataInput, index, node); return(node); }
private object Read(IStreamInput pDataInput, int pIndex, GenericProtocol pNode) { if (pNode == null) { pNode = CopyRef(pIndex); } // -------------------------- List <int> nodeIndices = pNode.NodeIndices[pIndex]; for (int i = 0; i < nodeIndices.Count; i++) { int localNodeIndex = nodeIndices[i]; string localNodeName; switch (localNodeIndex) { case 0: return(pDataInput.ReadByte()); // Byte case 1: return(pDataInput.ReadBoolean()); // Bool(ean) case 2: return(pDataInput.ReadByte()); // Byte case 3: return(pDataInput.ReadShort()); // Short case 4: return(pDataInput.ReadInt()); // Int case 5: return(pDataInput.ReadLong()); // Long case 6: return(pDataInput.ReadFloat()); // Float case 7: return(pDataInput.ReadDouble()); // Double case 8: return(pDataInput.ReadChar()); // Char case 9: return(pDataInput.ReadUTF().Replace('\u20AD', 'K')); // String case 10: break; case 11: i++; localNodeIndex = nodeIndices[i]; localNodeName = NodeNames[localNodeIndex]; var arrList = new List <object>(); pNode.Add(localNodeName, arrList); while (pDataInput.ReadByte() == 11) { arrList.Add(Read(pDataInput, localNodeIndex, null)); } i++; break; case 12: // Ende der Liste break; case 13: // new | seit ungefähr dem applet 90aeh return(ReadChars(pDataInput)); //break; default: localNodeName = NodeNames[localNodeIndex]; pNode.Add(localNodeName, Read(pDataInput, localNodeIndex, null)); break; } } // -------------------------- return(pNode); }