Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        public static void PersistHashSetValue <T>(this StatePersister persister, HashSet <T> value, PersistListItemCallback <T> callback)
        {
            persister.BeginObject();

            persister.PersistHashSetValueImpl(value, callback);

            persister.EndObject();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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();
        }