예제 #1
0
        private mTypeBase ReadNew()
        {
            mTypeBase field   = null;
            FieldType typeNew = (FieldType)Stream.DecodeBitsAndAdvance();

            field = typeNew switch
            {
                FieldType.UByte => new mUByte(),
                FieldType.Bool => new mBool(),
                FieldType.Short => new mShort(),
                FieldType.UShort => new mUShort(),
                FieldType.Float => new mFloat(),
                FieldType.ULong => new mULong(),
                FieldType.Long => new mLong(),
                FieldType.Int => new mInt(),
                FieldType.UInt => new mUInt(),
                FieldType.String => new mString(),
                FieldType.ArrayMaybe => new mArray(),
                FieldType.ScopeStart => new mNode(),
                FieldType.ScopeEnd => null,
                FieldType.SByte => new mSByte(),
                _ => throw new Exception($"Type: {typeNew} not supported"),
            };

            if (typeNew != FieldType.ScopeEnd)
            {
                field.Read(this);
            }

            return(field);
        }