internal static HSerializedItem Deserialize(Stream stream) { BinaryReader binaryReader = new BinaryReader(stream); byte[] header = binaryReader.ReadBytes(16); ulong size; if (header.Length < 16 || HalconAPI.IsFailure(HalconAPI.GetSerializedSize(header, out size))) { throw new HalconException("Input stream is no serialized HALCON object"); } if (size > 2415918079UL) { throw new HalconException("Input stream too large"); } byte[] numArray = binaryReader.ReadBytes((int)size); if (numArray.Length < (int)size || HalconAPI.IsFailure(HalconAPI.GetSerializedSize(header, out size))) { throw new HalconException("Unexpected end of serialization data"); } byte[] data = new byte[(int)size + 16]; header.CopyTo((Array)data, 0); numArray.CopyTo((Array)data, 16); return(new HSerializedItem(data)); }