コード例 #1
0
ファイル: DDField.cs プロジェクト: orf53975/mana
        public void Decode(IReadableBuffer br)
        {
            switch (Tmpl.token)
            {
            case DDToken.ft_bool:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadBoolArray();
                }
                else
                {
                    var bv = br.ReadBoolean() ? 1 : 0;
                    int32Value = bv;
                }
                break;

            case DDToken.ft_byte:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadByteArray();
                }
                else
                {
                    int32Value = br.ReadByte();
                }
                break;

            case DDToken.ft_int16:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadShortArray();
                }
                else
                {
                    int32Value = br.ReadShort();
                }
                break;

            case DDToken.ft_int32:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadIntArray();
                }
                else
                {
                    int32Value = br.ReadInt();
                }
                break;

            case DDToken.ft_int64:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadLongArray();
                }
                else
                {
                    int64Value = br.ReadLong();
                }
                break;

            case DDToken.ft_intXU:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadUnsignedVarintArray();
                }
                else
                {
                    int64Value = br.ReadUnsignedVarint();
                }
                break;

            case DDToken.ft_intX:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadVarintArray();
                }
                else
                {
                    int64Value = br.ReadVarint();
                }
                break;

            case DDToken.ft_float:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadFloatArray();
                }
                else
                {
                    floatValue = br.ReadFloat();
                }
                break;

            case DDToken.ft_float16:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadFloat16Array();
                }
                else
                {
                    floatValue = br.ReadFloat16();
                }
                break;

            case DDToken.ft_str:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadUTF8Array();
                }
                else
                {
                    strValue = br.ReadUTF8();
                }
                break;

            case DDToken.ft_object:
                if (Tmpl.isArray)
                {
                    arrValue = br.ReadNodeArray(Tmpl);
                }
                else
                {
                    objValue = br.ReadNode(Tmpl);
                }
                break;
            }
        }