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; } }