Пример #1
0
        public override void Unserialize(GMDataReader reader, ListUnserialize before = null,
                                         ListUnserialize after             = null,
                                         ListUnserializeElement elemReader = null)
        {
            // Read the element count and begin reading elements
            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                before?.Invoke(reader, i, Count);

                // Read the current element and add it to the list
                T elem;
                if (elemReader == null)
                {
                    elem = reader.ReadPointerObject <T>(reader.ReadInt32(), true);
                }
                else
                {
                    elem = (T)elemReader(reader, true);
                }
                Add(elem);

                after?.Invoke(reader, i, Count);
            }
        }
Пример #2
0
        public virtual void Unserialize(GMDataReader reader, ListUnserialize before = null,
                                        ListUnserialize after             = null,
                                        ListUnserializeElement elemReader = null)
        {
            // Read the element count and begin reading elements
            int count = reader.ReadInt32();

            Capacity = count;
            for (int i = 0; i < count; i++)
            {
                before?.Invoke(reader, i, count);

                // Read the current element and add it to the list
                T elem;
                if (elemReader == null)
                {
                    elem = new T();
                    elem.Unserialize(reader);
                }
                else
                {
                    elem = (T)elemReader(reader, (i + 1 != count));
                }
                Add(elem);

                after?.Invoke(reader, i, count);
            }
        }
Пример #3
0
        public override void Unserialize(GMDataReader reader, ListUnserialize before = null,
                                         ListUnserialize after             = null,
                                         ListUnserializeElement elemReader = null)
        {
            // Define a default pointer reader if none is set
            if (elemReader == null)
            {
                if (UsePointerMap)
                {
                    elemReader = DoReadPointerObject;
                }
                else
                {
                    elemReader = DoReadPointerObjectUnique;
                }
            }

            // Read the element count and begin reading elements
            int count = reader.ReadInt32();

            Capacity = count;
            for (int i = 0; i < count; i++)
            {
                before?.Invoke(reader, i, count);

                // Read the current element and add it to the list
                Add((T)elemReader(reader, i + 1 != count));

                after?.Invoke(reader, i, count);
            }
        }