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(); }
public static void SerializeField(SerializeContext context, BinaryWriter bw, string value) { if (context.WalkString(value) == null) // null check { return; } context.VisitObject(value); bw.Write(value); context.LeaveObject(); }
public static void Serialize <T>(SerializeContext context, BinaryWriter bw, LinkedList <T> list) { context.VisitObject(list); bw.WriteSmallInt32(list.Count); // O(1) foreach (var entry in list) { var item = entry; Field.Serialize(context, bw, ref item); } context.LeaveObject(); }
public static void Serialize <T>(SerializeContext context, BinaryWriter bw, Queue <T> queue) { context.VisitObject(queue); bw.WriteSmallInt32(queue.Count); foreach (var entry in queue) { var item = entry; Field.Serialize(context, bw, ref item); } context.LeaveObject(); }
public static void Serialize <T>(SerializeContext context, BinaryWriter bw, List <T> list) { context.VisitObject(list); bw.WriteSmallInt32(list.Count); for (var i = 0; i < list.Count; i++) { var item = list[i]; Field.Serialize(context, bw, ref item); } context.LeaveObject(); }
public static void Serialize <T>(SerializeContext context, BinaryWriter bw, Stack <T> stack) { context.VisitObject(stack); bw.WriteSmallInt32(stack.Count); foreach (var entry in stack) { var item = entry; Field.Serialize(context, bw, ref item); } context.LeaveObject(); }
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(); }
// 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(); }
public static void Serialize <TKey, TValue>(SerializeContext context, BinaryWriter bw, OrderedDictionary <TKey, TValue> dictionary) { // TODO: Add support for custom comparers if (!dictionary.Comparer.Equals(Sample <TKey, TValue> .sample.Comparer)) { throw new NotImplementedException("Serializing a custom comparer is not implemented"); } context.VisitObject(dictionary); bw.WriteSmallInt32(dictionary.Count); foreach (var item in dictionary) { TKey key = item.Key; TValue value = item.Value; Field.Serialize(context, bw, ref key); Field.Serialize(context, bw, ref value); } context.LeaveObject(); }
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(); }
// "Ignore" serializer, as per SerializeIgnoreXNA -- we want to be able to store a ref for the definition table, but we can't deserialize a sound effect [CustomSerializer] public static void Serialize(SerializeContext context, BinaryWriter bw, SafeSoundEffect value) { context.VisitObject(value); context.LeaveObject(); }