private static void PersistHashSetValueImpl <T>(this StatePersister persister, HashSet <T> value, PersistListItemCallback <T> callback) { var count = (ushort)value.Count; persister.PersistUInt16(ref count); persister.BeginArray("Items"); if (persister.Mode == StatePersistMode.Read) { value.Clear(); for (var i = 0; i < count; i++) { var item = default(T); callback(persister, ref item); value.Add(item); } } else { foreach (var item in value) { var itemCopy = item; callback(persister, ref itemCopy); } } persister.EndArray(); }
public static void PersistHashSet <T>(this StatePersister persister, HashSet <T> value, PersistListItemCallback <T> callback, [CallerArgumentExpression("value")] string name = "") { persister.BeginObject(name); persister.PersistHashSetValueImpl(value, callback); persister.EndObject(); }
public static void PersistHashSetValue <T>(this StatePersister persister, HashSet <T> value, PersistListItemCallback <T> callback) { persister.BeginObject(); persister.PersistHashSetValueImpl(value, callback); persister.EndObject(); }
public static void PersistArrayWithUInt32Length <T>(this StatePersister persister, T[] value, PersistListItemCallback <T> callback, [CallerArgumentExpression("value")] string name = "") { persister.BeginObject(name); var length = (uint)value.Length; persister.PersistUInt32(ref length); if (length != value.Length) { throw new InvalidStateException(); } PersistArray(persister, value, callback, "Items"); persister.EndObject(); }
public static void PersistArray <T>(this StatePersister persister, T[] value, PersistListItemCallback <T> callback, [CallerArgumentExpression("value")] string name = "") { persister.BeginArray(name); for (var i = 0; i < value.Length; i++) { callback(persister, ref value[i]); } persister.EndArray(); }
private static void PersistListImpl <T>(this StatePersister persister, List <T> value, uint count, PersistListItemCallback <T> callback) { persister.BeginArray("Items"); if (persister.Mode == StatePersistMode.Read) { value.Clear(); for (var i = 0; i < count; i++) { var item = default(T); callback(persister, ref item); value.Add(item); } } else { for (var i = 0; i < count; i++) { var item = value[i]; callback(persister, ref item); } } persister.EndArray(); }
public static void PersistListWithUInt32Count <T>(this StatePersister persister, List <T> value, PersistListItemCallback <T> callback, [CallerArgumentExpression("value")] string name = "") { persister.BeginObject(name); var count = (uint)value.Count; persister.PersistUInt32(ref count); PersistListImpl(persister, value, count, callback); persister.EndObject(); }
public static void PersistListWithByteCountValue <T>(this StatePersister persister, List <T> value, PersistListItemCallback <T> callback) { persister.BeginObject(); var count = (byte)value.Count; persister.PersistByte(ref count); PersistListImpl(persister, value, count, callback); persister.EndObject(); }