Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="field"></param>
        /// <returns></returns>
        internal static memberInfo GetSerialize(fieldIndex field)
        {
            memberInfo member = new memberInfo(field);
            Type       type   = field.Member.FieldType;

            if (type.IsEnum)
            {
                cSharp.dataSerialize.FixedSizes.TryGetValue(type.GetEnumUnderlyingType(), out member.SerializeFixedSize);
            }
            else if (type.IsValueType)
            {
                Type nullType = type.nullableType();
                if (nullType == null)
                {
                    cSharp.dataSerialize.FixedSizes.TryGetValue(type, out member.SerializeFixedSize);
                    if (type == typeof(bool))
                    {
                        member.NullMapSize = 1;
                    }
                }
                else
                {
                    member.NullMapSize = type == typeof(bool?) ? (byte)2 : (byte)1;
                    cSharp.dataSerialize.FixedSizes.TryGetValue(nullType, out member.SerializeFixedSize);
                }
            }
            else
            {
                member.NullMapSize = 1;
            }
            return(member);
        }
Exemplo n.º 2
0
                /// <summary>
                ///
                /// </summary>
                /// <param name="members"></param>
                /// <returns></returns>
                public                                memberInfo[] CheckMembers(sqlStreamMember[] members)
                {
                    int count = 0;

                    foreach (sqlStreamMember member in members)
                    {
                        foreach (memberInfo field in Members)
                        {
                            if (field.Type == member.Member.Type && field.MemberName == member.Member.MemberName)
                            {
                                ++count;
                                break;
                            }
                        }
                    }
                    if (count == Members.Length)
                    {
                        return(Members);
                    }
                    if (count == 0)
                    {
                        return(null);
                    }
                    memberInfo[] fields = new memberInfo[count];
                    foreach (sqlStreamMember member in members)
                    {
                        foreach (memberInfo field in Members)
                        {
                            if (field.Type == member.Member.Type && field.MemberName == member.Member.MemberName)
                            {
                                int memberIndex = fields.Length - count;
                                fields[--count] = new memberInfo((FieldInfo)field.Member, memberIndex);
                                break;
                            }
                        }
                    }
                    return(fields);
                }
Exemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="left"></param>
 /// <param name="right"></param>
 /// <returns></returns>
 internal static int SerializeFixedSizeSort(memberInfo left, memberInfo right)
 {
     return((int)((uint)right.SerializeFixedSize & (0U - (uint)right.SerializeFixedSize)) - (int)((uint)left.SerializeFixedSize & (0U - (uint)left.SerializeFixedSize)));
 }