예제 #1
0
        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));
        }