/// <summary> /// </summary> /// <param name="left"></param> /// <param name="right"></param> /// <returns></returns> internal static int SerializeFixedSizeSort(TmphMemberInfo left, TmphMemberInfo right) { return (int)(right.SerializeFixedSize & (0U - right.SerializeFixedSize)) - (int)(left.SerializeFixedSize & (0U - left.SerializeFixedSize)); }
/// <summary> /// </summary> /// <param name="field"></param> /// <returns></returns> internal static TmphMemberInfo GetSerialize(TmphFieldIndex field) { var member = new TmphMemberInfo(field); var type = field.Member.FieldType; if (type.IsEnum) TmphDataSerialize.FixedSizes.TryGetValue(type.GetEnumUnderlyingType(), out member.SerializeFixedSize); else if (type.IsValueType) { var nullType = type.nullableType(); if (nullType == null) { TmphDataSerialize.FixedSizes.TryGetValue(type, out member.SerializeFixedSize); if (type == typeof(bool)) member.NullMapSize = 1; } else { member.NullMapSize = type == typeof(bool?) ? (byte)2 : (byte)1; TmphDataSerialize.FixedSizes.TryGetValue(nullType, out member.SerializeFixedSize); } } else member.NullMapSize = 1; return member; }