Esempio n. 1
0
        public int BinaryDeserialize(byte[] ioBuffer, int inOffset)
        {
            int offset = inOffset;

            offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out _name);

            offset  = BinarySerializeUtils.Deserialize(ioBuffer, offset, out bool is_array);
            IsArray = is_array;

            offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out short size);

            _values.Clear();
            for (int i = 0; i < size; i++)
            {
                offset = AddValue(ioBuffer, offset);
            }

            offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out size);
            _keys.Clear();

            for (int i = 0; i < size; i++)
            {
                CKey child = CreateChild(this, string.Empty);
                offset = child.BinaryDeserialize(ioBuffer, offset);
            }

            return(offset);
        }
Esempio n. 2
0
        public static int BinaryDeserialize(byte[] ioBuffer, int inOffset, out Variant outValue)
        {
            int offset = inOffset;

            offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out byte vt);
            EValueType valueType = (EValueType)vt;

            ulong  ulong_value = 0;
            string str         = null;

            switch (valueType)
            {
            case EValueType.Bool:
            case EValueType.Byte:
                offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out byte byte_value); ulong_value = byte_value; break;

            case EValueType.Short:
            case EValueType.UShort:
                offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out ushort ushort_value); ulong_value = ushort_value; break;

            case EValueType.Int:
            case EValueType.UInt:
            case EValueType.Float:
                offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out uint uint_value); ulong_value = uint_value; break;

            case EValueType.Long:
            case EValueType.ULong:
            case EValueType.Double:
                offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out ulong_value); break;

            case EValueType.String:
                offset = BinarySerializeUtils.Deserialize(ioBuffer, offset, out str); break;

            default:
                throw new ArgumentException($"Unknow type of value: {valueType}");
            }

            outValue               = new Variant();
            outValue._flags        = (byte)valueType;
            outValue._ulong_value1 = ulong_value;
            outValue._objref       = str;

            return(offset);
        }