public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is ISingleThreadOptimize)
            {
                var current_cache = thread_cache;

                if (current_cache == null)
                {
                    current_cache = new InternalInstance <ArrayRW <T> >
                    {
                        Instance = ArrayRW <T> .Create()
                    };

                    thread_cache = current_cache;
                }

                if (current_cache.IsUsed)
                {
                    goto Default;
                }

                current_cache.IsUsed = true;

                current_cache.Instance.count = -1;

                valueReader.ReadArray(current_cache.Instance);

                current_cache.IsUsed = false;

                if (current_cache.Instance.count == -1)
                {
                    return(default);
Example #2
0
        /// <summary>
        /// 从值读取器中读取一个列表。
        /// </summary>
        /// <typeparam name="TValue">值的类型</typeparam>
        /// <param name="valueReader">值读取器</param>
        /// <returns>返回一个列表</returns>
        public static List <TValue> ReadList <TValue>(this IValueReader valueReader)
        {
            var rw = new ListRW <List <TValue>, TValue>();

            valueReader.ReadArray(rw);

            return(rw.content);
        }
Example #3
0
        /// <summary>
        /// 从值读取器中读取一个数组。
        /// </summary>
        /// <typeparam name="T">元素类型</typeparam>
        /// <param name="valueReader">值读取器</param>
        /// <returns>返回一个数组</returns>
        public static T[] ReadArray <T>(this IValueReader valueReader)
        {
            var rw = new ArrayRW <T>();

            valueReader.ReadArray(rw);

            return(rw.GetContent());
        }
Example #4
0
        public T ReadValue(IValueReader valueReader)
        {
            var rw = new FSharpUnionRW <T>();

            valueReader.ReadArray(rw);

            return(rw.GetContent());
        }
Example #5
0
        public T ReadValue(IValueReader valueReader)
        {
            var listRW = new ListRW <T, TValue>();

            valueReader.ReadArray(listRW);

            return(listRW.Content);
        }
Example #6
0
        public T ReadValue(IValueReader valueReader)
        {
            var arrayWriter = ArrayRW <T> .Create();

            valueReader.ReadArray(arrayWriter);

            return(arrayWriter.Content);
        }
Example #7
0
        public T ReadValue(IValueReader valueReader)
        {
            var collectionRW = new CollectionRW <T>();

            valueReader.ReadArray(collectionRW);

            return(collectionRW.content);
        }
Example #8
0
        public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <T> reader)
            {
                return(reader.ReadValue());
            }

            var listRW = new ListRW <T>();

            valueReader.ReadArray(listRW);

            return(listRW.content);
        }
Example #9
0
        public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <T> reader)
            {
                return(reader.ReadValue());
            }

            var writer = new DataTableRW <T>(GetDataTableRWOptions(valueReader));

            valueReader.ReadArray(writer);

            return(writer.datatable);
        }
Example #10
0
        public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <T> tReader)
            {
                return(tReader.ReadValue());
            }

            var dataReader = new DataSetRW <T>();

            valueReader.ReadArray(dataReader);

            return(dataReader.Content);
        }
Example #11
0
        public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <T> reader)
            {
                return(reader.ReadValue());
            }

            var writer = new DataTableRW <T>(valueReader is ITargetedBind targeted && targeted.TargetedId != 0 ? targeted.GetDataTableRWOptions() : DefaultOptions);

            valueReader.ReadArray(writer);

            return(writer.Content);
        }
        public TArray ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <TArray> reader)
            {
                return(reader.ReadValue());
            }

            var rw = new MultiDimArray <TArray, TElement> .FirstRW();

            valueReader.ReadArray(rw);

            return(rw.GetContent());
        }
Example #13
0
        public T ReadValue(IValueReader valueReader)
        {
            var result = Activator.CreateInstance <T>();

            var dataReader = new DataTableRW();

            dataReader.Initialize(result);

            var toArrayWriter = new TableToArrayWriter(dataReader);

            valueReader.ReadArray(toArrayWriter);

            return(result);
        }
Example #14
0
        public TElement[] ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <TElement[]> reader)
            {
                return(reader.ReadValue());
            }
            else
            {
                var rw = new ArrayRW <TElement>();

                valueReader.ReadArray(rw);

                return(rw.GetContent());
            }
        }
        public FSharpList <T> ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <FSharpList <T> > reader)
            {
                return(reader.ReadValue());
            }
            else
            {
                var rw = new FSharpListRW <T>();

                valueReader.ReadArray(rw);

                return(rw.content);
            }
        }
Example #16
0
        public T ReadValue(IValueReader valueReader)
        {
            if (valueReader is IValueReader <T> )
            {
                return(((IValueReader <T>)valueReader).ReadValue());
            }

            var result = Activator.CreateInstance <T>();

            var dataReader = new DataSetRW();

            dataReader.Initialize(result);

            valueReader.ReadArray(dataReader);

            return(result);
        }
Example #17
0
        public T ReadValue(IValueReader valueReader)
        {
            var writer = Rent();

            valueReader.ReadArray(writer);

            if (valueReader is IUsePool)
            {
                var content = writer.GetCopy();

                Return(writer);

                return(content);
            }

            return(writer.Content);
        }
Example #18
0
        public AuxiliaryWriter <TKey> ReadValue(IValueReader valueReader)
        {
            var auxiliaryWriter = new AuxiliaryWriter <TKey>();

            if (valueReader is IValueFiller <TKey> tReader)
            {
                tReader.FillValue(auxiliaryWriter);
            }
            else if (IsArray)
            {
                valueReader.ReadArray(auxiliaryWriter.As <int>());
            }
            else
            {
                valueReader.ReadObject(auxiliaryWriter.As <string>());
            }

            return(auxiliaryWriter);
        }
Example #19
0
        public T ReadValue(IValueReader valueReader)
        {
            var dictionaryRW = new DictionaryRW <T, TKey, TValue>();

            if (valueReader is IValueFiller <TKey> tFiller)
            {
                tFiller.FillValue(dictionaryRW);
            }

            if (IsArray)
            {
                valueReader.ReadArray(dictionaryRW.As <int>());
            }
            else
            {
                valueReader.ReadObject(dictionaryRW.As <string>());
            }

            return(dictionaryRW.Content);
        }
Example #20
0
 public override void OnWriteValue(int key, IValueReader valueReader)
 {
     valueReader.ReadArray(new ChildrenRW(this, key));
 }