public object GetObject(Serializer binfmt, DataType datatype) { if (Size == 0) return null; if (datatype == DataType.UInt) { staticalloc((int)Size); Marshal.Copy(Ptr, staticdata, 0, (int)Size); byte[] d = staticdata; uint val = (uint)d[0] + ((uint)d[1] << 8) + ((uint)d[2] << 16) + ((uint)d[3] << 24); return val; } else if (datatype == DataType.IntArray) { int[] data = new int[(int)Size/4]; Marshal.Copy(Ptr, data, 0, data.Length); return data; /*} else if (datatype == DataType.String && false) { char[] data = new char[(int)Size/2]; Marshal.Copy(Ptr, data, 0, data.Length); return new String(data);*/ } else { staticalloc((int)Size); Marshal.Copy(Ptr, staticdata, 0, (int)Size); return binfmt.Deserialize(staticdata); } }