コード例 #1
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        protected override void reset()
        {
            Dictionary <randomKey <keyType>, valueType> dictionary = dictionary <randomKey <keyType> > .Create <valueType>();

            foreach (valueType value in SqlTool.Where(null, memberMap))
            {
                setMemberCacheAndValue(value);
                dictionary[GetKey(value)] = value;
            }
            this.dictionary.SetVersion(dictionary);
        }
コード例 #2
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        private void reset()
        {
            valueType[] values = SqlTool.Where(null, memberMap).getFindArray(isValue);
            Dictionary <int, valueType> newValues = new Dictionary <int, valueType>(values.Length);

            foreach (valueType value in values)
            {
                newValues.Add(getIdentity(value), value);
            }
            this.values = newValues;
            ++identityVersion;
            Count = values.Length;
        }
コード例 #3
0
ファイル: queueList.cs プロジェクト: xiaoyao66/fastCSharp
        /// <summary>
        /// 获取数据集合
        /// </summary>
        /// <param name="key">关键字</param>
        /// <returns>数据集合</returns>
        protected list <valueType> getList(keyType key)
        {
            list <valueType> list = queueCache.Get(key, null);

            if (list == null)
            {
                list            = SqlTool.Where(getWhere(key), memberMap).getList() ?? new list <valueType>();
                queueCache[key] = list;
                if (queueCache.Count > maxCount)
                {
                    queueCache.Pop();
                }
            }
            return(list);
        }
コード例 #4
0
        /// <summary>
        /// 获取数据集合
        /// </summary>
        /// <param name="key">关键字</param>
        /// <returns>数据集合</returns>
        protected listOrderLadyValue <valueType> getCache(keyType key)
        {
            listOrderLadyValue <valueType> cache = queueCache.Get(key, default(listOrderLadyValue <valueType>));

            if (cache.List == null)
            {
                cache.List      = SqlTool.Where(getWhere(key), memberMap).getList() ?? new list <valueType>();
                queueCache[key] = cache;
                if (queueCache.Count > maxCount)
                {
                    queueCache.Pop();
                }
            }
            return(cache);
        }
コード例 #5
0
ファイル: identityTree.cs プロジェクト: iLanceS/fastCSharp
        /// <summary>
        /// 重新加载数据
        /// </summary>
        protected override void reset()
        {
            valueType[] values      = SqlTool.Where(null, memberMap).getArray();
            int         maxIdentity = values.maxKey(value => GetKey(value), 0);

            if (memberGroup == 0)
            {
                SqlTool.Identity64 = maxIdentity + baseIdentity;
            }
            int length = maxIdentity >= identityArray.ArraySize ? 1 << ((uint)maxIdentity).bits() : identityArray.ArraySize;
            identityArray <valueType> newValues = new identityArray <valueType>(length);

            pointer.size newCounts = unmanaged.Get(length * sizeof(int), true);
            try
            {
                int *intCounts = newCounts.Int;
                foreach (valueType value in values)
                {
                    setMemberCacheAndValue(value);
                    int identity = GetKey(value);
                    newValues[identity] = value;
                    intCounts[identity] = 1;
                }
                for (int step = 2; step != length; step <<= 1)
                {
                    for (int index = step, countStep = step >> 1; index != length; index += step)
                    {
                        intCounts[index] += intCounts[index - countStep];
                    }
                }
                unmanaged.Free(ref counts);
                this.values = newValues;
                counts      = newCounts;
                size        = length;
                Count       = values.Length;
                newCounts.Null();
            }
            catch (Exception error)
            {
                log.Error.Add(error, null, true);
            }
            finally
            {
                unmanaged.Free(ref newCounts);
            }
        }
コード例 #6
0
ファイル: identityTree.cs プロジェクト: xiaoyao66/fastCSharp
        /// <summary>
        /// 重新加载数据
        /// </summary>
        private void reset()
        {
            valueType[] values      = SqlTool.Where(null, memberMap).getArray();
            int         maxIdentity = values.maxKey(value => getIdentity(value), 0);
            int         length      = maxIdentity >= 1024 ? 1 << ((uint)maxIdentity).bits() : 1024;

            valueType[] newValues = new valueType[length];
            int *       newCounts = unmanaged.Get(length * sizeof(int)).Int;
            bool        isFree    = false;

            try
            {
                foreach (valueType value in values)
                {
                    int identity = getIdentity(value);
                    newValues[identity] = value;
                    newCounts[identity] = 1;
                }
                for (int step = 2; step != length; step <<= 1)
                {
                    for (int index = step, countStep = step >> 1; index != length; index += step)
                    {
                        newCounts[index] += newCounts[index - countStep];
                    }
                }
                unmanaged.Free(counts);
                isFree      = true;
                this.values = newValues;
                counts      = newCounts;
                size        = length;
                Count       = values.Length;
            }
            catch (Exception error)
            {
                log.Default.Add(error, null, true);
            }
            finally
            {
                if (!isFree)
                {
                    unmanaged.Free(newCounts);
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        protected override void reset()
        {
            valueType[] values = SqlTool.Where(null, memberMap).getFindArray(isValue);
            Dictionary <int, valueType> newValues = fastCSharp.dictionary.CreateInt <valueType>(values.Length);
            int maxIdentity = 0;

            foreach (valueType value in values)
            {
                setMemberCacheAndValue(value);
                int identity = GetKey(value);
                if (identity > maxIdentity)
                {
                    maxIdentity = identity;
                }
                newValues.Add(identity, value);
            }
            if (memberGroup == 0)
            {
                SqlTool.Identity64 = maxIdentity + baseIdentity;
            }
            this.dictionary.Set(newValues);
            Count = values.Length;
            ++this.dictionary.Version;
        }
コード例 #8
0
ファイル: identityArray.cs プロジェクト: iLanceS/fastCSharp
 /// <summary>
 /// 重新加载数据
 /// </summary>
 protected override void reset()
 {
     reset(SqlTool.Where(null, memberMap).getArray());
 }
コード例 #9
0
 /// <summary>
 /// 重新加载数据
 /// </summary>
 private void reset()
 {
     reset(SqlTool.Where(null, memberMap).getArray());
 }
コード例 #10
0
 /// <summary>
 /// 重新加载数据
 /// </summary>
 protected override void reset()
 {
     reset(SqlTool.Where(null, memberMap).getFindArray(isValue));
 }
コード例 #11
0
 /// <summary>
 /// 重新加载数据
 /// </summary>
 private void reset()
 {
     reset(SqlTool.Where(null, memberMap).getFindArray(isValue));
 }
コード例 #12
0
ファイル: memberKey.cs プロジェクト: iLanceS/fastCSharp
 /// <summary>
 /// 重新加载数据
 /// </summary>
 protected override void reset()
 {
     foreach (valueType value in SqlTool.Where(null, memberMap)) insert(value);
 }
コード例 #13
0
 /// <summary>
 /// 重新加载数据
 /// </summary>
 protected void reset()
 {
     dictionary = SqlTool.Where(null, memberMap).getDictionary(getKey);
     ++keyVersion;
 }