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

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

?? versionedstorage.cs

?? Perst開源實時數據庫
?? CS
?? 第 1 頁 / 共 4 頁
字號:
                                    }
                                }
                                IEnumerator[] occurences = new IEnumerator[keywords.Count];
                                for (int i = 0; i < occurences.Length; i++) 
                                { 
                                    Key key = new Key((string)keywords[i]);
                                    occurences[i] = root.inverseIndex.GetEnumerator(key, key);
                                }
                                return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, db.Merge(occurences));
                            }
                            break;
                    }

                    PropDef def = (PropDef)root.propDefIndex[prop.name];
                    if (def == null) 
                    { 
                        return new object[0]; // empty selection
                    }
                    if (val is Range) 
                    { 
                        Range range = (Range)val;
                        if (range.from is double) 
                        {
                            Key fromKey = new Key(new object[]{def, range.from}, range.fromInclusive);
                            Key tillKey = new Key(new object[]{def, range.till}, range.tillInclusive);
                            return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                                root.numPropIndex.GetEnumerator(fromKey, tillKey));
                        } 
                        else if (range.from is DateTime) 
                        {
                            Key fromKey = new Key(new object[]{def, range.from}, range.fromInclusive);
                            Key tillKey = new Key(new object[]{def, range.till}, range.tillInclusive);
                            return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                                root.timePropIndex.GetEnumerator(fromKey, tillKey));
                        } 
                        else 
                        { 
                            Key fromKey = new Key(new object[]{def, range.from}, range.fromInclusive);
                            Key tillKey = new Key(new object[]{def, range.till}, range.tillInclusive);
                            return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                                root.strPropIndex.GetEnumerator(fromKey, tillKey));
                        }
                    } 
                    else if (val is string) 
                    {
                        string str = (string)val;
                        int wc = str.IndexOf('*');
                        if (wc < 0) 
                        { 
                            Key key = new Key(new object[]{def, str});
                            return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                                root.strPropIndex.GetEnumerator(key, key));
                                
                        } 
                        else if (wc > 0) 
                        { 
                            string prefix = str.Substring(0, wc);
                            Key fromKey = new Key(new object[]{def, prefix});
                            Key tillKey = new Key(new object[]{def, prefix + Char.MaxValue}, false);                        
                            return new SearchResult(root, typeVh, uri, wc == str.Length-1 ? restOfPatterns : patterns, kind, timestamp, 
                                root.strPropIndex.GetEnumerator(fromKey, tillKey));
                        }                             
                    }
                    else if (val is double)
                    {
                        Key key = new Key(new object[]{def, val});
                        return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                            root.numPropIndex.GetEnumerator(key, key));
                    } 
                    else if (val is DateTime) 
                    {
                        Key key = new Key(new object[]{def, val});
                        return new SearchResult(root, typeVh, uri, restOfPatterns, kind, timestamp, 
                            root.timePropIndex.GetEnumerator(key, key));
                    }
                    else if (val is NameVal) 
                    { 
                        IEnumerable iterator = SearchReferenceProperty(typeVh, uri, patterns, kind, timestamp, (NameVal)val, false, def, new ArrayList());
                        if (iterator != null) 
                        {
                            return iterator;
                        }
                    }
                    else if (val is NameVal[]) 
                    { 
                        NameVal[] props = (NameVal[])val;
                        if (props.Length > 0) 
                        {
                            IEnumerable iterator = SearchReferenceProperty(typeVh, uri, patterns, kind, timestamp, props[0], props.Length > 1, def, new ArrayList());
                            if (iterator != null) 
                            {
                                return iterator;
                            }
                        }
                    }
                    
                }
                if (kind == SearchKind.LatestVersion) 
                { 
                    return new SearchResult(root, typeVh, uri, patterns, kind, timestamp, root.latest.GetEnumerator());   
                }
                return new SearchResult(root, typeVh, uri, patterns, kind, timestamp, root.timeIndex.GetEnumerator());           
            } 
            finally 
            { 
                root.Unlock();
            }
        }
                        
        class ReferenceIterator:IEnumerable,IEnumerator 
        {
            PropDef[]     defs;
            IEnumerator[] iterators;
            int           pos;
            Thing         currThing;
            SearchKind    kind;
            DateTime      timestamp; 
            DatabaseRoot  root;
            Hashtable     visited;

            public IEnumerator GetEnumerator() 
            {
                return this;
            }

            public ReferenceIterator(DatabaseRoot root, PropDef[] defs, IEnumerator iterator, SearchKind kind, DateTime timestamp) 
            {
                this.root = root;
                this.defs = defs;
                this.kind = kind;
                this.timestamp = timestamp;
                iterators = new IEnumerator[defs.Length+1];
                iterators[iterators.Length-1] = iterator;
                Reset();
            }

            public void Reset() 
            {
                visited = new Hashtable();
                currThing = null;
                pos = iterators.Length-1;
                iterators[pos].Reset();
            }

            public object Current 
            {
                get 
                {
                    if (currThing == null) 
                    { 
                        throw new InvalidOperationException("No current element");
                    }
                    return currThing;
                }
            }


            public bool MoveNext() 
            {
                while (true) 
                {
                    while (pos < iterators.Length && !iterators[pos].MoveNext()) 
                    {
                        pos += 1;
                    }
                    if (pos == iterators.Length) 
                    { 
                        currThing = null;
                        return false;
                    } 
                    Thing thing = (Thing)iterators[pos].Current;
                    switch (kind) 
                    {
                        case SearchKind.LatestVersion:
                            if (!thing.IsLatest()) 
                            {
                                continue;
                            }
                            break;
                        case SearchKind.LatestBefore:
                            if (thing.timestamp > timestamp) 
                            { 
                                continue;
                            }
                            break;
                        case SearchKind.OldestAfter:
                            if (thing.timestamp < timestamp) 
                            { 
                                continue;
                            }
                            break;
                    }
                    if (pos == 0) 
                    { 
                        if (visited.ContainsKey(thing.Oid)) 
                        {
                            continue;
                        } 
                        else 
                        {
                            visited[thing.Oid] = true;
                        }
                        currThing = thing;
                        return true;
                    }
                    pos -= 1;
                    Key key = new Key(new object[]{defs[pos], thing.vh});
                    iterators[pos] = root.refPropIndex.GetEnumerator(key, key);
                }
            }
        }
       
        private IEnumerable SearchReferenceProperty(VersionHistory type, string uri, NameVal[] patterns, SearchKind kind, DateTime timestamp, NameVal prop, bool compound, PropDef def, ArrayList refs)
        {
            refs.Add(def);

            NameVal[] restOfPatterns = compound ? patterns : SubArray(patterns);

            object val = prop.val;
            switch (prop.name) 
            {
                case Symbols.Timestamp: 
            
                    if (val is Range) 
                    { 
                        Range range = (Range)val;
                        if (range.from is DateTime) 
                        {
                            Key fromKey = new Key((DateTime)range.from, range.fromInclusive);
                            Key tillKey = new Key((DateTime)range.till, range.tillInclusive);
                            return new SearchResult(root, type, uri, restOfPatterns, kind, timestamp, 
                                new ReferenceIterator(root, (PropDef[])refs.ToArray(typeof(PropDef)), 
                                root.timeIndex.GetEnumerator(fromKey, tillKey), kind, timestamp));
                        }
                    } 
                    else if (val is DateTime) 
                    {
                        Key key = new Key((DateTime)val);
                        return new SearchResult(root, type, uri, restOfPatterns, kind, timestamp, 
                            new ReferenceIterator(root, (PropDef[])refs.ToArray(typeof(PropDef)), 
                            root.timeIndex.GetEnumerator(key, key), kind, timestamp));                            
                    } 
                    return new object[0]; // empty selection
                case Symbols.Rectangle:
                    if (val is NameVal[]) 
                    {
                        NameVal[] coord = (NameVal[])val;
                        if (coord.Length == 4) 
                        {
                            RectangleR2 r = new RectangleR2((double)coord[0].val, 
                                (double)coord[1].val, 
                                (double)coord[2].val, 
                                (double)coord[3].val);
                            return new SearchResult(root, type, uri, restOfPatterns, kind, timestamp, 
                                new ReferenceIterator(root, (PropDef[])refs.ToArray(typeof(PropDef)), 
                                root.spatialIndex.Overlaps(r).GetEnumerator(), kind, timestamp));
                        }
                    }
                    break;
                case Symbols.Point:
                    if (val is NameVal[]) 
                    {
                        NameVal[] coord = (NameVal[])val;
                        if (coord.Length == 2) 
                        {
                            double x = (double)coord[0].val;
                            double y = (double)coord[1].val;
                            RectangleR2 r = new RectangleR2(x, y, x, y);
                            return new SearchResult(root, type, uri, restOfPatterns, kind, timestamp, 
                                new ReferenceIterator(root, (PropDef[])refs.ToArray(typeof(PropDef)), 
                                root.spatialIndex.Overlaps(r).GetEnumerator(), kind, timestamp));
                        }
                    }
                    break;
                case Symbols.Keyword:
                    if (val is string) 
                    {
                        ArrayList keywords = new ArrayList();
                        foreach (string keyword in ((string)val).ToLower().Split(keywordSeparators)) 
                        {
                            if (keyword.Length > 0 && !keywordStopList.ContainsKey(keyword))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜不卡av免费| 久久精品夜色噜噜亚洲a∨| 蜜臀久久久久久久| 国产精品国产自产拍在线| 欧美体内she精视频| 不卡的av在线播放| 久久爱www久久做| 亚洲高清免费观看 | 日韩欧美国产综合| 在线精品视频一区二区三四| 国内精品久久久久影院薰衣草 | 欧美va在线播放| 色综合久久久久久久久| 岛国精品在线观看| 国产一区二区不卡| 国产一区二区三区香蕉| 美女视频黄 久久| 麻豆精品在线观看| 美女久久久精品| 久久国产精品99久久久久久老狼| 亚洲婷婷综合久久一本伊一区 | 久久久国际精品| 久久奇米777| 国产精品久久久一本精品| 中文字幕精品一区二区精品绿巨人| 精品国产一区二区三区不卡| 欧美精品一区二区三区一线天视频 | 欧洲国产伦久久久久久久| 在线精品观看国产| 欧美图区在线视频| 欧美肥妇free| 久久蜜桃一区二区| 亚洲人123区| 一区二区三区中文在线观看| 亚洲宅男天堂在线观看无病毒| 午夜欧美一区二区三区在线播放| 午夜不卡在线视频| 国产91精品免费| 色婷婷久久久综合中文字幕| 欧美伦理视频网站| ...中文天堂在线一区| 天天影视涩香欲综合网| 国产91丝袜在线播放| 亚洲大型综合色站| 一区二区三区不卡视频| 奇米影视一区二区三区小说| 国产精品69毛片高清亚洲| 色综合久久中文综合久久97| 欧美一区二区三区小说| 亚洲视频综合在线| 国产精品456露脸| 9191精品国产综合久久久久久 | 亚洲精品国久久99热| 婷婷丁香久久五月婷婷| www.av精品| 欧美www视频| 日本色综合中文字幕| 成人激情电影免费在线观看| 精品对白一区国产伦| 一级精品视频在线观看宜春院| 精品无人码麻豆乱码1区2区| 一本大道综合伊人精品热热| 国产日韩欧美不卡| 日韩中文字幕亚洲一区二区va在线 | 亚洲青青青在线视频| 国产精品18久久久久久久久| 91精品国产综合久久精品app| 国产精品伦理在线| 久久成人综合网| 日韩欧美一区二区久久婷婷| 亚洲成人免费视频| 欧美综合一区二区三区| 亚洲欧美日韩精品久久久久| 99久久婷婷国产综合精品| 日本一区二区三级电影在线观看 | 日韩黄色免费网站| 在线观看日韩高清av| 一区二区三区 在线观看视频| 色综合天天在线| 亚洲成精国产精品女| 91精品在线麻豆| 裸体歌舞表演一区二区| 久久精品亚洲精品国产欧美kt∨| 国产精品白丝jk白祙喷水网站| 国产视频一区不卡| 波多野结衣亚洲一区| 一卡二卡三卡日韩欧美| 欧美伦理视频网站| 国产乱子轮精品视频| 国产视频在线观看一区二区三区| 成人美女在线视频| 亚洲国产va精品久久久不卡综合 | 精品少妇一区二区三区在线视频| 国产精品一线二线三线| **性色生活片久久毛片| 欧美乱妇20p| 成人综合在线网站| 一区二区三区中文字幕| 91精品欧美综合在线观看最新| 国产精品影视天天线| 亚洲精品久久7777| 日韩精品自拍偷拍| 色999日韩国产欧美一区二区| 婷婷中文字幕综合| 欧美激情一区三区| 精品日韩一区二区| 成人激情电影免费在线观看| 中文字幕欧美激情一区| 成人午夜电影小说| 精品综合久久久久久8888| 一个色妞综合视频在线观看| 国产午夜亚洲精品午夜鲁丝片| 欧美一区二区三区在线观看视频| 欧美日韩一区三区四区| 亚瑟在线精品视频| 有坂深雪av一区二区精品| 国产欧美精品一区二区色综合| 欧美大片在线观看一区| 欧美肥妇毛茸茸| 欧美日韩一区高清| 欧美又粗又大又爽| 欧美性猛片aaaaaaa做受| 91福利在线免费观看| 91久久香蕉国产日韩欧美9色| k8久久久一区二区三区| 99久久精品国产导航| 不卡一区在线观看| av不卡在线观看| 91在线视频免费91| 国产91综合一区在线观看| 懂色av噜噜一区二区三区av| 国产一区二区在线影院| 欧美一区二区三区在线电影| 在线亚洲+欧美+日本专区| 色久优优欧美色久优优| 欧美自拍偷拍一区| 欧美在线一区二区三区| 欧美日韩色综合| 精品理论电影在线| 国产精品美日韩| 亚洲成人先锋电影| 国产永久精品大片wwwapp| 波多野结衣欧美| 69堂成人精品免费视频| 久久久久久久综合色一本| 国产精品久久免费看| 日韩电影免费一区| 成人激情av网| 日韩一区国产二区欧美三区| 国产精品日韩成人| 日日摸夜夜添夜夜添精品视频| 成人午夜激情视频| 3atv一区二区三区| 亚洲人123区| 蜜桃精品视频在线| 在线视频你懂得一区| 久久久www成人免费毛片麻豆| 午夜亚洲福利老司机| 国产不卡视频在线观看| 欧美美女喷水视频| 国产亚洲人成网站| 久久 天天综合| 欧美日本在线观看| 91精品一区二区三区在线观看| 中文字幕色av一区二区三区| 麻豆视频一区二区| 欧美精品v国产精品v日韩精品| 亚洲三级在线免费观看| 高清国产一区二区三区| 久久久不卡网国产精品二区| 欧美a级理论片| 日韩三级高清在线| 日本系列欧美系列| 9191久久久久久久久久久| 亚洲成人动漫一区| 不卡在线观看av| 欧美一二三四在线| 午夜精品久久久久久久99樱桃| 99精品在线观看视频| 亚洲天堂精品在线观看| 97超碰欧美中文字幕| 一区二区三区在线影院| 91国产成人在线| 五月天亚洲精品| 日韩免费视频一区二区| 国产精品女人毛片| 激情久久久久久久久久久久久久久久| 91精品国产麻豆国产自产在线| 日韩电影在线观看网站| 精品黑人一区二区三区久久| 国产最新精品免费| 亚洲精品国久久99热| 在线电影国产精品| 国产一区二区在线免费观看| 国产精品国产三级国产普通话蜜臀| 97精品视频在线观看自产线路二| 午夜精品久久久久| 久久一区二区视频| 91网站在线观看视频| 免费成人深夜小野草|