Ejemplo n.º 1
0
        private static void SerializeDelegate(SerializeContext context, BinaryWriter bw, Delegate d, Type delegateType)
        {
            Debug.Assert(d != null);
            Debug.Assert(StaticDelegateTable.delegateTypeTable.ContainsKey(delegateType));

            var delegateTypeInfo = StaticDelegateTable.delegateTypeTable[delegateType];

            var methodId = delegateTypeInfo.GetIdForMethod(d.Method);

            bw.Write(methodId);
            var delegateMethodInfo = delegateTypeInfo.GetMethodInfoForId(methodId);

            if (delegateMethodInfo.canHaveTarget)
            {
                var target = d.Target;
                if (context.Walk(target))
                {
                    StaticDispatchTable.SerializationDispatcher(context, bw, target);
                }
            }
            else
            {
                Debug.Assert(d.Target == null);
            }
        }
Ejemplo n.º 2
0
        public static void SerializeArray3DField <T>(SerializeContext context, BinaryWriter bw, T[,,] array)
        {
            if (!context.Walk(array))             // null check
            {
                return;
            }

            context.VisitObject(array);

            int length0, length1, length2;

            bw.WriteSmallInt32(length0 = array.GetLength(0));
            bw.WriteSmallInt32(length1 = array.GetLength(1));
            bw.WriteSmallInt32(length2 = array.GetLength(2));

            for (var i = 0; i < length0; i++)
            {
                for (var j = 0; j < length1; j++)
                {
                    for (var k = 0; k < length2; k++)
                    {
                        Field.Serialize(context, bw, ref array[i, j, k]);
                    }
                }
            }

            context.LeaveObject();
        }
Ejemplo n.º 3
0
        public static void SerializeField(SerializeContext context, BinaryWriter bw, StringBuilder stringBuilder)
        {
            if (!context.Walk(stringBuilder))             // null check
            {
                return;
            }

            context.VisitObject(stringBuilder);

            bw.WriteSmallInt32(stringBuilder.Length);
            for (var i = 0; i < stringBuilder.Length; i++)
            {
                bw.Write(stringBuilder[i]);
            }

            context.LeaveObject();
        }
Ejemplo n.º 4
0
        // NOTE: Do *not* mark these as [CustomFieldSerializer] (will get rejected anyway)
        //       They are accessed directly by the serializer and generator (via ArrayFieldMethodProvider)

        public static void SerializeArrayField <T>(SerializeContext context, BinaryWriter bw, T[] array)
        {
            if (!context.Walk(array))             // null check
            {
                return;
            }

            context.VisitObject(array);

            bw.WriteSmallInt32(array.Length);
            for (var i = 0; i < array.Length; i++)
            {
                Field.Serialize(context, bw, ref array[i]);
            }

            context.LeaveObject();
        }
Ejemplo n.º 5
0
        public static void SerializeArray2DField <T>(SerializeContext context, BinaryWriter bw, T[,] array)
        {
            if (!context.Walk(array))             // null check
            {
                return;
            }

            context.VisitObject(array);

            int length0, length1;

            bw.WriteSmallInt32(length0 = array.GetLength(0));
            bw.WriteSmallInt32(length1 = array.GetLength(1));

            for (var i = 0; i < length0; i++)
            {
                for (var j = 0; j < length1; j++)         // NOTE: Arrays are contiguious on their rightmost (last) dimension
                {
                    Field.Serialize(context, bw, ref array[i, j]);
                }
            }

            context.LeaveObject();
        }
 public static void SerializeField(SerializeContext context, BinaryWriter bw, StateProvider.State value)
 {
     context.Walk(value);
 }