亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? thickindex.cs

?? Perst開源實(shí)時(shí)數(shù)據(jù)庫
?? CS
?? 第 1 頁 / 共 2 頁
字號(hào):
using System;
#if USE_GENERICS
using System.Collections.Generic;
#endif
using System.Collections;
using Perst;

namespace Perst.Impl
{
#if USE_GENERICS
    class ThickIndex<K,V> : PersistentCollection<V>, Index<K,V> where V:class,IPersistent
#else
    class ThickIndex : PersistentCollection, Index 
#endif
    { 
#if USE_GENERICS
        private Index<K,IPersistent> index;
#else
        private Index index;
#endif
        private int   nElems;

        const int BTREE_THRESHOLD = 128;

#if USE_GENERICS
        internal ThickIndex(StorageImpl db) 
            : base(db)
        {
            index = db.CreateIndex<K,IPersistent>(true);
        }
#else
        internal ThickIndex(Type keyType, StorageImpl db) 
            : base(db)
        {
            index = db.CreateIndex(keyType, true);
        }
#endif
    
        ThickIndex() {}

        public override int Count 
        { 
            get 
            {
                return nElems;
            }
        }

#if USE_GENERICS
        public V this[K key] 
#else
        public IPersistent this[object key] 
#endif
        {
            get 
            {
                return Get(key);
            }
            set 
            {
                Set(key, value);
            }
        } 
    
#if USE_GENERICS
        public V[] this[K from, K till] 
#else
        public IPersistent[] this[object from, object till] 
#endif
        {
            get 
            {
                return Get(from, till);
            }
        }

#if USE_GENERICS
        public V Get(Key key) 
#else
        public IPersistent Get(Key key) 
#endif
        {
            IPersistent s = index.Get(key);
            if (s == null) 
            { 
                return null;
            }
#if USE_GENERICS
            Relation<V,V> r = s as Relation<V,V>;
#else
            Relation r = s as Relation;
#endif
            if (r != null)
            { 
                if (r.Count == 1) 
                { 
                    return r[0];
                }
            }
            throw new StorageError(StorageError.ErrorCode.KEY_NOT_UNIQUE);
        }
                  
#if USE_GENERICS
        public V[] Get(Key from, Key till) 
#else
        public IPersistent[] Get(Key from, Key till) 
#endif
        {
            return extend(index.Get(from, till));
        }

#if USE_GENERICS
        public V Get(K key) 
#else
        public IPersistent Get(object key) 
#endif
        {
            return Get(KeyBuilder.getKeyFromObject(key));
        }
    
#if USE_GENERICS
        public V[] Get(K from, K till) 
#else
        public IPersistent[] Get(object from, object till) 
#endif
        {
            return Get(KeyBuilder.getKeyFromObject(from), KeyBuilder.getKeyFromObject(till));
        }

#if USE_GENERICS
        private V[] extend(IPersistent[] s) 
        { 
            List<V> list = new List<V>();
            for (int i = 0; i < s.Length; i++) 
            { 
                list.AddRange((ICollection<V>)s[i]);
            }
            return list.ToArray();
        }
#else
        private IPersistent[] extend(IPersistent[] s) 
        { 
            ArrayList list = new ArrayList();
            for (int i = 0; i < s.Length; i++) 
            { 
                list.AddRange((ICollection)s[i]);
            }
            return (IPersistent[])list.ToArray(typeof(IPersistent));
        }
#endif

                      
#if USE_GENERICS
        public V[] GetPrefix(string prefix) 
#else
        public IPersistent[] GetPrefix(string prefix) 
#endif
        { 
            return extend(index.GetPrefix(prefix));
        }
    
#if USE_GENERICS
        public V[] PrefixSearch(string word) 
#else
        public IPersistent[] PrefixSearch(string word) 
#endif
        { 
            return extend(index.PrefixSearch(word));
        }
           
        public int Size() 
        { 
            return nElems;
        }
    
#if USE_GENERICS
        public override void Clear() 
#else
        public void Clear() 
#endif
        { 
            foreach (IPersistent o in this) 
            { 
                o.Deallocate();
            }
            index.Clear();
            nElems = 0;
            Modify();
        }

#if USE_GENERICS
        public V[] ToArray() 
#else
        public IPersistent[] ToArray() 
#endif
        { 
            return extend(index.ToArray());
        }
        
        public Array ToArray(Type elemType) 
        { 
            ArrayList list = new ArrayList();
            foreach (ICollection c in index) 
            { 
                list.AddRange(c);
            }
            return list.ToArray(elemType);
        }

#if USE_GENERICS
        class ExtendEnumerator : IEnumerator<V>, IEnumerable<V>, IEnumerable, PersistentEnumerator
#else
        class ExtendEnumerator : IEnumerable, PersistentEnumerator
#endif
        {  
            public void Dispose() {}

            public bool MoveNext() 
            { 
                while (!inner.MoveNext()) 
                {                 
                    if (outer.MoveNext()) 
                    {
#if USE_GENERICS
                        inner = ((IEnumerable<V>)outer.Current).GetEnumerator();
#else
                        inner = ((IEnumerable)outer.Current).GetEnumerator();
#endif
                    } 
                    else 
                    { 
                        return false;
                    }
                }
                return true;
            }

#if USE_GENERICS
            object IEnumerator.Current
            {
                get
                {
                    return inner.Current;
                }
            }

            public V Current 
#else
            public object Current 
#endif
            {
                get 
                {
                    return inner.Current;
                }
            }

            public int CurrentOid 
            {
                get 
                {
                    return ((PersistentEnumerator)inner).CurrentOid;
                }
            }

            public void Reset() 
            {
#if !USE_GENERICS
                outer.Reset();
#endif
                if (outer.MoveNext()) 
                {
#if USE_GENERICS
                    inner = ((IEnumerable<V>)outer.Current).GetEnumerator();
#else
                    inner = ((IEnumerable)outer.Current).GetEnumerator();
#endif
                }
            }

#if USE_GENERICS
            IEnumerator IEnumerable.GetEnumerator()
            {
                return this;
            }

            public IEnumerator<V> GetEnumerator() 
#else
            public IEnumerator GetEnumerator() 
#endif
            {
                return this;
            }

#if USE_GENERICS
            internal ExtendEnumerator(IEnumerator<IPersistent> enumerator) 
#else
            internal ExtendEnumerator(IEnumerator enumerator) 
#endif
            { 
                outer = enumerator;
                Reset();
            }

#if USE_GENERICS
            private IEnumerator<IPersistent> outer;
            private IEnumerator<V>           inner;
#else
            private IEnumerator outer;
            private IEnumerator inner;
#endif
        }


        class ExtendDictionaryEnumerator : IDictionaryEnumerator 
        {  
            public object Current 
            {
                get 
                {
                    return Entry;
                }
            }

            public DictionaryEntry Entry 
            {
                get 
                {
                    return new DictionaryEntry(key, inner.Current);
                }
            }

            public object Key 
            {
                get 
                {
                    return key;
                }
            }

            public object Value 
            {
                get 
                {
                    return inner.Current;
                }
            }

            public void Dispose() {}

            public bool MoveNext() 
            { 
                while (!inner.MoveNext()) 
                {                 
                    if (outer.MoveNext()) 
                    {
                        key = outer.Key;
#if USE_GENERICS
                        inner = ((IEnumerable<V>)outer.Value).GetEnumerator();
#else
                        inner = ((IEnumerable)outer.Value).GetEnumerator();
#endif
                    } 
                    else 
                    { 
                        return false;
                    }
                }
                return true;
            }

            public virtual void Reset() 
            {
#if !USE_GENERICS
                outer.Reset();
#endif
                if (outer.MoveNext()) 
                {
                    key = outer.Key;
#if USE_GENERICS
                    inner = ((IEnumerable<V>)outer.Value).GetEnumerator();
#else
                    inner = ((IEnumerable)outer.Value).GetEnumerator();
#endif
                }
            }
       
            internal ExtendDictionaryEnumerator(IDictionaryEnumerator enumerator) 
            { 
                outer = enumerator;
                Reset();
            }

            private IDictionaryEnumerator outer;
#if USE_GENERICS
            private IEnumerator<V>        inner;
#else
            private IEnumerator           inner;
#endif
            private object                key;
        }

        class ExtendDictionaryStartFromEnumerator : ExtendDictionaryEnumerator
        {  
#if USE_GENERICS
            internal ExtendDictionaryStartFromEnumerator(ThickIndex<K,V> index, int start, IterationOrder order) 
#else
            internal ExtendDictionaryStartFromEnumerator(ThickIndex index, int start, IterationOrder order) 
#endif
                : base(index.GetDictionaryEnumerator(null, null, order))
            { 
                this.index = index;
                this.start = start;
                this.order = order;
                Reset();
            }
            
            public override void Reset()
            {
                base.Reset();
                int skip = (order == IterationOrder.AscentOrder) ? start : index.Count - start - 1;
                while (--skip >= 0 && MoveNext());
            } 
                
#if USE_GENERICS
            ThickIndex<K,V> index;
#else
            ThickIndex index;
#endif
            IterationOrder order;
            int start;
        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本aⅴ亚洲精品中文乱码| 亚洲欧美激情在线| 久久精品免费在线观看| 精品日韩av一区二区| 在线不卡中文字幕播放| 欧美高清激情brazzers| 911精品产国品一二三产区| 91麻豆精品国产| 精品免费99久久| 一级特黄大欧美久久久| 久久99精品久久只有精品| 91浏览器打开| 国产亚洲欧美日韩在线一区| 午夜视频一区二区三区| eeuss国产一区二区三区| 精品不卡在线视频| 亚洲尤物在线视频观看| 国产xxx精品视频大全| 欧美丰满嫩嫩电影| 国产精品久久久久久久久动漫| 日韩精品亚洲专区| 777午夜精品视频在线播放| 亚洲色图欧美在线| 91美女在线看| 久久综合色鬼综合色| 免费成人你懂的| 欧美精品九九99久久| 亚洲人精品一区| 95精品视频在线| 亚洲三级电影全部在线观看高清| 国产成人一区二区精品非洲| 日韩欧美一级片| 久久国内精品视频| 国产欧美综合在线| 成人性生交大片免费看视频在线| xnxx国产精品| 国产乱人伦偷精品视频不卡 | 精品国产3级a| 91在线国产福利| 亚洲精品美国一| 欧美精品久久天天躁| 免费人成在线不卡| 久久伊人中文字幕| 精品在线一区二区| 国产精品午夜久久| 色偷偷久久一区二区三区| 亚洲 欧美综合在线网络| 日韩三级伦理片妻子的秘密按摩| 久久69国产一区二区蜜臀| 国产精品毛片大码女人| 欧美日韩另类一区| 久久精品国产亚洲高清剧情介绍| 久久精子c满五个校花| 91成人国产精品| 国产伦精品一区二区三区视频青涩| 国产日韩欧美精品一区| 91激情在线视频| 亚洲综合一区二区精品导航| 麻豆精品在线观看| 亚洲精品videosex极品| 亚洲精品视频在线| 日韩三级电影网址| 成人伦理片在线| 另类综合日韩欧美亚洲| 亚洲日本va在线观看| 日韩欧美亚洲国产精品字幕久久久 | 久久精品人人爽人人爽| 在线观看成人小视频| 国产剧情一区在线| 日本美女一区二区三区| 婷婷开心激情综合| 亚洲免费在线视频| 亚洲三级免费观看| 中文字幕 久热精品 视频在线 | www.亚洲国产| 激情图片小说一区| 国产在线播放一区三区四| 精品一区二区免费在线观看| 高清日韩电视剧大全免费| 99麻豆久久久国产精品免费| 国产成人精品亚洲777人妖| 国产麻豆精品在线| 国产精品综合二区| 夜色激情一区二区| 日本美女一区二区三区| 日韩电影免费在线| 久久99精品久久久久久动态图 | 日本精品一级二级| 欧美一区二区三区男人的天堂| 国产精品18久久久久久久久 | 免费成人av资源网| 五月婷婷另类国产| 人人精品人人爱| 韩国精品免费视频| 成人午夜短视频| 91免费国产在线| 欧美一级午夜免费电影| 2020国产精品| 亚洲国产一区二区视频| 天天综合日日夜夜精品| 狠狠色狠狠色合久久伊人| 波多野结衣中文一区| 日本高清不卡一区| 欧美大片免费久久精品三p| 精品乱人伦小说| 亚洲激情图片小说视频| 免费看日韩a级影片| 成人91在线观看| 91精品免费在线| 亚洲老妇xxxxxx| 国产综合色产在线精品| 欧美自拍丝袜亚洲| 国产日韩av一区二区| 五月激情综合婷婷| 91网站黄www| 欧美激情一区二区三区| 麻豆精品久久久| 欧美美女直播网站| 亚洲精品日韩一| 成人蜜臀av电影| 国产午夜精品一区二区三区嫩草| 亚洲大片一区二区三区| 91视频www| 亚洲国产电影在线观看| 国产毛片精品视频| 久久免费美女视频| 国产做a爰片久久毛片| 91精品在线一区二区| 日本亚洲视频在线| 欧美日韩不卡一区二区| 午夜精品福利视频网站| 91黄色在线观看| 亚洲午夜精品在线| 欧美日韩精品福利| 亚洲成av人在线观看| 欧美日韩国产另类不卡| 奇米888四色在线精品| 26uuu亚洲综合色欧美| 亚洲一级二级在线| 91免费版在线看| 亚洲免费在线视频| 色婷婷亚洲一区二区三区| 国产丝袜欧美中文另类| 激情五月婷婷综合网| 国产情人综合久久777777| 91免费看片在线观看| 偷拍一区二区三区| 久久无码av三级| 9i在线看片成人免费| 亚洲国产日韩精品| 国产欧美一区二区三区网站| 色综合天天综合色综合av | 亚洲女人的天堂| 91麻豆精品国产91久久久久久久久 | 在线一区二区视频| 粉嫩在线一区二区三区视频| 亚洲欧美激情视频在线观看一区二区三区 | 日本一区二区三区在线观看| 欧美日本一道本在线视频| 国产**成人网毛片九色| 久久国产精品一区二区| 亚洲午夜久久久久久久久久久| 久久久综合网站| 日韩免费一区二区三区在线播放| 99久久精品99国产精品| 国产成人在线电影| 国产精品夜夜嗨| 精品一区二区影视| 青青国产91久久久久久| 日韩在线卡一卡二| 日韩电影在线免费观看| 免费成人av资源网| 精品亚洲成a人在线观看 | 日韩一级视频免费观看在线| 欧美日韩激情在线| 欧美日本一区二区| 欧美白人最猛性xxxxx69交| 91精品国产麻豆国产自产在线| 欧美精品v日韩精品v韩国精品v| 91精品午夜视频| 91福利在线观看| 在线精品视频免费播放| 91久久线看在观草草青青| 色综合色综合色综合| 欧美肥妇free| 日韩免费一区二区| 日本一区二区三区在线观看| 成人欧美一区二区三区黑人麻豆| ...中文天堂在线一区| 一区二区三区在线观看动漫| 日韩中文字幕1| 成人毛片在线观看| 欧美群妇大交群中文字幕| 久久久一区二区三区捆绑**| 亚洲人吸女人奶水| 久久电影网电视剧免费观看| 成人丝袜18视频在线观看| 欧美午夜理伦三级在线观看| 国产欧美一区在线| 亚洲一区二区三区在线|