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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? thickindex.cs

?? Perst開源實時數據庫
?? CS
?? 第 1 頁 / 共 2 頁
字號:
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;
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久漫画| 欧美精品一区二区三区蜜桃视频| 奇米精品一区二区三区在线观看| 久久久91精品国产一区二区精品| 欧美在线观看视频一区二区| 国产一区二区视频在线播放| 亚洲h在线观看| 国产精品网站导航| 久久综合狠狠综合| 欧美日韩一区三区| 91网站最新地址| 韩国成人在线视频| 日韩av不卡一区二区| 亚洲精品五月天| 国产精品久久精品日日| 亚洲精品一区在线观看| 欧美日韩国产首页在线观看| 99久久精品国产网站| 国产精品一二三四| 麻豆国产精品一区二区三区| 亚洲国产欧美另类丝袜| 成人免费在线播放视频| 国产亚洲综合在线| 精品国产91久久久久久久妲己| 欧美日韩国产在线播放网站| 欧美在线一区二区三区| 不卡视频在线看| 国产.欧美.日韩| 国产精品白丝jk黑袜喷水| 蜜臀91精品一区二区三区 | 久久久不卡网国产精品一区| 在线成人av影院| 欧美久久久久久蜜桃| 欧美视频自拍偷拍| 欧美色电影在线| 欧美中文字幕一区| 色婷婷久久久亚洲一区二区三区| 成人一区二区三区视频在线观看| 国产精品资源在线看| 韩国毛片一区二区三区| 激情偷乱视频一区二区三区| 九九视频精品免费| 国产剧情一区在线| 国产成人自拍网| 国产不卡高清在线观看视频| 国产精品小仙女| 不卡一区二区在线| 一道本成人在线| 欧美视频一区二| 日韩免费高清视频| 久久精品一二三| 一区在线观看视频| 亚洲精品欧美专区| 午夜精品一区二区三区三上悠亚| 日本v片在线高清不卡在线观看| 三级成人在线视频| 国产一区欧美二区| av不卡一区二区三区| 色av成人天堂桃色av| 欧美午夜不卡在线观看免费| 日韩无一区二区| 久久伊人蜜桃av一区二区| 欧美国产激情一区二区三区蜜月| 国产精品久久久久久亚洲毛片 | 久久先锋影音av| 欧美极品xxx| 一区二区三区精品在线| 亚洲国产精品久久艾草纯爱| 日本不卡一区二区三区高清视频| 激情综合色综合久久综合| 国产激情视频一区二区在线观看 | 久久久国际精品| 国产欧美1区2区3区| 亚洲免费观看高清完整版在线观看| 亚洲国产三级在线| 国产一区二区剧情av在线| 99re在线精品| 精品久久久久久久久久久久久久久| 国产精品久久午夜| 日韩精彩视频在线观看| 成人h版在线观看| 欧美日韩精品综合在线| 国产清纯在线一区二区www| 一区二区三区蜜桃| 国内精品第一页| 精品视频1区2区| 国产午夜一区二区三区| 亚洲国产欧美日韩另类综合 | 中文字幕第一区二区| 亚洲一区二区三区四区在线 | 欧美精品三级在线观看| 久久久亚洲精品石原莉奈| 一色桃子久久精品亚洲| 久久91精品久久久久久秒播| 99久久婷婷国产| 精品国产a毛片| 午夜不卡av免费| 成人av片在线观看| 日韩丝袜情趣美女图片| 一区二区三区电影在线播| 国产精品一区二区黑丝| 91精品国产91久久综合桃花| 国产精品理论在线观看| 麻豆久久久久久| 91福利在线看| 亚洲欧美自拍偷拍| 狠狠色2019综合网| 在线成人av影院| 亚洲一区二区欧美日韩| 不卡一卡二卡三乱码免费网站| 精品久久久久久久久久久久久久久| 一区二区成人在线观看| 国产成人亚洲综合色影视| 欧美成人猛片aaaaaaa| 日日夜夜免费精品视频| 在线观看成人小视频| 亚洲欧洲成人自拍| 国产成人av一区二区三区在线| 欧美一区二区三级| 日韩黄色一级片| 欧美丝袜自拍制服另类| 亚洲在线观看免费| 色婷婷久久久久swag精品 | 国产精品久久久久久久久搜平片 | 国产精品乱码一区二区三区软件 | 91亚洲男人天堂| 国产日韩av一区| 大白屁股一区二区视频| 久久久精品欧美丰满| 国产精品一区二区无线| 日韩欧美一二三区| 捆绑变态av一区二区三区| 欧美一区二区啪啪| 美美哒免费高清在线观看视频一区二区 | 五月婷婷欧美视频| 欧美午夜精品一区二区三区| 亚洲综合一区二区三区| 91女人视频在线观看| 亚洲天堂免费在线观看视频| 91丨porny丨户外露出| 18成人在线观看| 91黄色在线观看| 污片在线观看一区二区| 欧美一区二区三区性视频| 免费在线观看成人| 精品日韩一区二区| 国产福利一区在线| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 一区二区欧美在线观看| 色婷婷av一区| 亚洲sss视频在线视频| 欧美一区二区精美| 国产麻豆日韩欧美久久| 国产视频亚洲色图| 波多野结衣在线aⅴ中文字幕不卡| 国产精品高清亚洲| 日本韩国视频一区二区| 亚洲成在线观看| 欧美成人三级在线| jlzzjlzz欧美大全| 亚洲国产精品视频| 日韩精品在线一区二区| 国产成人午夜片在线观看高清观看 | 欧美福利电影网| 久88久久88久久久| 亚洲国产精品99久久久久久久久| 91麻豆6部合集magnet| 午夜伦理一区二区| 国产亚洲一区二区在线观看| 成av人片一区二区| 午夜精品久久久久影视| 久久久三级国产网站| 99精品国产视频| 日本成人中文字幕| 国产精品色哟哟| 欧美精品一级二级三级| 国产一二精品视频| 亚洲午夜精品网| 久久久五月婷婷| 欧美日韩精品电影| 成人性生交大片免费看中文网站| 亚洲精品老司机| 久久婷婷国产综合精品青草| 97se亚洲国产综合自在线不卡| 手机精品视频在线观看| 国产偷国产偷精品高清尤物| 欧美日韩免费观看一区三区| 国产一区在线观看视频| 亚洲高清在线视频| 欧美—级在线免费片| 欧美一区二区三区思思人| 成人app网站| 美女尤物国产一区| 一区二区三区在线免费| wwwwxxxxx欧美| 欧美日韩国产乱码电影| 东方欧美亚洲色图在线| 美国十次综合导航| 亚洲网友自拍偷拍| 国产精品美女久久久久aⅴ国产馆|