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);
}
}