Example #1
0
        public void CanReadIndiciesBack_SmallFile()
        {
            var pulse = new Subject<Unit>();
            var scheduler = new TestScheduler();

            using (var file = new TestFile())
            {
                file.Append(Enumerable.Range(1, 100).Select(i => $"This is line number {i.ToString("00000000")}").ToArray());

                using (var indexer = new Indexer(file.Info.WatchFile(pulse).WithSegments(), scheduler: scheduler))
                {
                    IndexCollection result = null;
                    using (indexer.Result.Subscribe(indicies => result = indicies))

                    {
                        pulse.Once();

                        var head = result.ReadLines(new ScrollRequest(10, 0));
                        var headText = head.Select(l => l.Text).ToArray();
                        var headExpected = Enumerable.Range(1, 10).Select(i => $"This is line number {i.ToString("00000000")}");
                        headText.ShouldAllBeEquivalentTo(headExpected);

                        var tail = result.ReadLines(new ScrollRequest(10));
                        var tailText = tail.Select(l => l.Text).ToArray();
                        var tailExpected = Enumerable.Range(91, 10).Select(i => $"This is line number {i.ToString("00000000")}").ToArray();
                        tailText.ShouldAllBeEquivalentTo(tailExpected);

                        var mid = result.ReadLines(new ScrollRequest(10, 20));
                        var midText = mid.Select(l => l.Text).ToArray();
                        var midExpected = Enumerable.Range(21, 10).Select(i => $"This is line number {i.ToString("00000000")}").ToArray();
                        midText.ShouldAllBeEquivalentTo(midExpected);
                    }
                }
            }
        }
Example #2
0
        public void IndexerTest()
        {
            using (var indexer = new Indexer(this.Directory)) {

                var guids = new List<Guid>();
                guids.Add(IndexTest(indexer, TestDir + "Tika.rtf", "almonds"));
                guids.Add(IndexTest(indexer, TestDir + "Tika.pdf", "almonds"));
                guids.Add(IndexTest(indexer, TestDir + "Tika.docx", "almonds"));
                guids.Add(IndexTest(indexer, TestDir + "Tika.odt", "almonds"));
                guids.Add(IndexTest(indexer, TestDir + "Tika.pptx", "almonds"));
                guids.Add(IndexTest(indexer, TestDir + "Tika.xlsx", "almonds"));

                foreach (var guid in guids) {
                    indexer.Writer.DeleteDocuments(new Term("Id", guid.ToString()));
                    indexer.Refresh();
                    var docs = indexer.Searcher
                        .Search(new TermQuery(new Term(indexer.DocumentContentField, "almonds")), 1000)
            #if LuceneV290
                        .scoreDocs
                        .Select(sd => indexer.Searcher.Doc(sd.doc))
            #else
                        .ScoreDocs
                        .Select(sd => indexer.Searcher.Doc(sd.Doc))
            #endif
                        .ToArray();
                    Assert.IsFalse(docs.Any(d => d.GetField("Id").AsString() == guid.ToString()));

                }

            }
        }
Example #3
0
 public void Start()
 {
     _graphClient = CreateGraphClient();
     _indexer = CreateIndexer();
     _eventHandlerMapping = CreateEventHandlerMapping();
     ConnectToEventstore();
 }
Example #4
0
        public void Indexer_Index()
        {
            var indexsource = new FeedsDbContextIndexSource(new FeedsDbEntities(), 100);
            var indexer = new Indexer<Document>(indexsource);

            indexer.Index();
        }
Example #5
0
		internal DfaState()
		{
			Indexer<DfaState>.Add(this);

			_trasition = new Indexer<DfaState>.Array(byte.MaxValue + 1);
			_nfaStates = null;
		}
Example #6
0
		internal DfaState(Int32[] nfaIds)
		{
			Indexer<DfaState>.Add(this);

			_trasition = new Indexer<DfaState>.Array(byte.MaxValue + 1);
			_nfaStates = new Indexer<State>.Array(nfaIds);
		}
Example #7
0
 /// <summary>Initializes a new team</summary>
 /// <remarks><see cref="Name"/> initializes according to <i>teamNumber</i>; <b>0</b> = "Imperial", <b>1</b> = "Rebel", other = "Team #"</remarks>
 /// <param name="teamNumber">Team index being initialized. Corrects to <b>0-9</b> as required</param>
 public Team(int teamNumber)
 {
     if (teamNumber <= 0) { _name = "Imperial"; _alliedWithTeam[0] = true; }
     else if (teamNumber == 1) _name = "Rebel";
     else _name = "Team " + (teamNumber > 8 ? 10 : teamNumber + 1);
     for (int i = 0; i < 6; i++) _endOfMissionMessages[i] = "";
     _eomMessageIndexer = new Indexer<string>(_endOfMissionMessages, 63);
 }
Example #8
0
 public void Clamp1D()
 {
     List<int> data = new List<int>() { 0, 1, 2, 3 };
     Indexer<int> idx = new Indexer<int>(data, ClampMode.Clamp);
     Assert.AreEqual(0, idx[-1]);
     Assert.AreEqual(1, idx[1]);
     Assert.AreEqual(3, idx[5]);
 }
Example #9
0
 public void SetUp()
 {
     _dictionary = new Dictionary<string, Guid>();
     _guid = Guid.NewGuid();
     _key = "some key";
     _dictionary.Add(_key, _guid);
     _indexer = new Indexer<string, Guid>(s => _dictionary[s], (s, g) => _guid = g);
 }
        public static IEnumerable<IRequestData> For(IRequestData data, string prefix)
        {
            var indexer = new Indexer(prefix);

            while (data.HasChildRequest(indexer.Prefix))
            {
                yield return data.GetChildRequest(indexer.Prefix);
                indexer.Increment();
            }
        }
Example #11
0
 public Scanner(Settings settings)
 {
     indexer = new Indexer();
     indexer.MinLength = settings.MinLength;
     if (settings.UseStopWords)
     {
         TextReader rdr = new TextReader("stopwords.txt");
         indexer.SetStopWords(rdr.GetText());
     }
 }
Example #12
0
 public void Repeat1D()
 {
     List<int> data = new List<int>() { 0, 1, 2, 3 };
     Indexer<int> idx = new Indexer<int>(data, ClampMode.Repeat);
     Assert.AreEqual(3, idx[-1]);
     Assert.AreEqual(2, idx[-2]);
     Assert.AreEqual(1, idx[1]);
     Assert.AreEqual(1, idx[5]);
     Assert.AreEqual(0, idx[8]);
 }
Example #13
0
	public static int Main (string[] args)
	{
		Indexer indexer = new Indexer ();

		foreach (string filename in args) {
			Console.WriteLine ("\nparse: " + filename);
			indexer.Parse (filename);
		}

		return 0;
	}
    public override Expression VisitIndexer(Indexer indexer) 
    {
      ExpressionList ops = this.VisitExpressionList(indexer.Operands);
      System.Diagnostics.Debug.Assert(ops != null, "VisitExpressionList must return non-null if passed non-null");
      indexer.Operands = ops;

      Expression obj = this.VisitExpression(indexer.Object);
      System.Diagnostics.Debug.Assert(obj != null, "VisitExpression must return non-null if passed non-null");
      indexer.Object = obj;
      return indexer;
    }
Example #15
0
        public void IndexerTest()
        {
            const int length = 5;
            var list = Enumerable.Range(0, length).ToList();
            var indexer = new Indexer<int>(()=>list.Count, (i)=>list[i], (i,v) => list[i] = v);

            indexer.Count.Is(length);
            for (int i = 0; i < indexer.Count; i++)
            {
                indexer[i].Is(i);
                indexer[i] = i * i;
                indexer[i].Is(i*i);
            }
        }
Example #16
0
 public void Wrap2D()
 {
     List<int> data = new List<int>() {
         00, 01, 02,
         10, 11, 12,
         20, 21, 22 };
     Indexer<int> idx = new Indexer<int>(data, 3);
     Assert.AreEqual(20, idx[-1, 0]);
     Assert.AreEqual(2, idx[0, -1]);
     Assert.AreEqual(0, idx[0, 0]);
     Assert.AreEqual(12, idx[1, 2]);
     Assert.AreEqual(20, idx[1, 3]);
     Assert.AreEqual(10, idx[3, 3]);
 }
Example #17
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (isearcher != null) isearcher.Close();
            isearcher = null;

            folderBrowserDialog1.ShowNewFolderButton = false;
            if (folderBrowserDialog1.ShowDialog() != DialogResult.OK || folderBrowserDialog1.SelectedPath == string.Empty)
            {
                return;

            }
            textBox1.Text = folderBrowserDialog1.SelectedPath;
            Indexer indexer = new Indexer(_indexTarget);
            indexer.UpdateCallback = new IndexerUpdateCallback(this.UpdateIndexingInfo);
            indexer.IndexDirectory(folderBrowserDialog1.SelectedPath);
        }
Example #18
0
 /// <summary>Initializes a new FlightGroup</summary>
 /// <remarks>All <see cref="Orders"/> set to <b>100%</b> <see cref="BaseFlightGroup.BaseOrder.Throttle"/>, <see cref="Goals"/> are all set to <b>NONE</b>, SP1 <b>Enabled</b>, <see cref="Unknowns"/> are <b>0/false</b></remarks>
 public FlightGroup()
 {
     _stringLength = 0x14;
     for (int i = 0; i < _orders.Length; i++) _orders[i] = new Order();
     for (int i = 0; i < _roles.Length; i++) _roles[i] = "";
     for (int i = 0; i < _arrDepTriggers.Length; i++) _arrDepTriggers[i] = new Mission.Trigger();
     for (int i = 0; i < _skipToOrder4Trigger.Length; i++) { _skipToOrder4Trigger[i] = new Mission.Trigger(); _skipToOrder4Trigger[i].Condition = 10; }
     for (int i = 0; i < _goals.Length; i++) _goals[i] = new Goal();
     _optLoad[0] = true;
     _optLoad[8] = true;
     _optLoad[12] = true;
     for (int i = 0; i < _waypoints.Length; i++) _waypoints[i] = new Waypoint();
     _waypoints[(int)WaypointIndex.Start1].Enabled = true;
     _rolesIndexer = new Indexer<string>(_roles, 4);
     _loadoutIndexer = new LoadoutIndexer(_optLoad);
 }
Example #19
0
 public void IndexerGerTest()
 {
     using (var indexer = new Indexer(this.Directory)) {
         // TODO: use the right analyser here; document contains "donaudampfschiff...."
         // this is missing: indexer.Analyser = new Lucene.Net.Analysis.Compound.HyphenationCompoundWordTokenFilter(indexer.Version);
         // IndexTest(indexer, TestDir + "TikaGer.odt", "donau");
     #if LuceneV303
         indexer.Analyser = new Lucene.Net.Analysis.De.GermanAnalyzer(indexer.Version);
         indexer.Analyser = new Lucene.Net.Analysis.Snowball.SnowballAnalyzer(indexer.Version,"German");
     #endif
     #if LuceneV290
         indexer.Analyser = new Lucene.Net.Analysis.Snowball.SnowballAnalyzer("German");
     #endif
         // remark: document contains "Wörter", so find it with:
         IndexTest(indexer, TestDir + "TikaGer.docx", "wort");
     }
 }
Example #20
0
        public void IndexerTest2()
        {
            const int length = 5;
            var list = Enumerable.Range(5, length).ToList();

            var indexerAllNull = new Indexer<int>(null, null);
            indexerAllNull[0].Is(0);        // 未定義はdefault(T)が返る
            indexerAllNull.Count.Is(0);     // 未定義は0が返る
            AssertEx.Throws<NotSupportedException>(() => indexerAllNull[0] = 0);

            var indexerCountNull = new Indexer<int>(null, i => list[i]);
            indexerCountNull[0].Is(5);
            indexerCountNull.Count.Is(0);   // 未定義は0が返る
            AssertEx.Throws<NotSupportedException>(() => indexerCountNull[0] = 0);
            // この例外は、Indexerが出しているのではなく、setterのActionがListにアクセスして発生する
            AssertEx.Throws <ArgumentOutOfRangeException>(() => indexerCountNull[5].Is(0));
        }
Example #21
0
 public Core GetTargetOf(Core core)
 {
     int x, y;
     Indexer<Entry> c = new Indexer<Entry>(_entries, _width, ClampMode.Repeat);
     c.Find(e => e.Core == core, out x, out y);
     switch (core.Target)
     {
         case Core.Focus.Up:
             return c[y - 1, x].Core;
         case Core.Focus.Right:
             return c[y, x + 1].Core;
         case Core.Focus.Down:
             return c[y + 1, x].Core;
         case Core.Focus.Left:
             return c[y, x - 1].Core;
         default:
             return core;
     }
 }
        public void Start() 
        {
            //NServiceBus
            BusConfiguration busConfiguration = new BusConfiguration();
                        
            
            busConfiguration.UsePersistence<InMemoryPersistence>();
            busConfiguration.EnableInstallers();

            var startableBus = NServiceBus.Bus.Create(busConfiguration);
            bus = startableBus.Start();


            indexer = new Indexer();
            indexer.Init();
            connection = Configuration.CreateConnection();

            eventHandlerMapping = CreateEventHandlerMapping();
            ConnectToEventstore();
        
        }
Example #23
0
        public static IObservable<ILineProvider> Index(this IObservable<FileSegmentCollection> source)
        {
            var indexFactory = source
                .Publish(shared =>
                {
                    var diff = shared.Select(fsc => fsc.SizeDiff);

                    var idx = Observable.Create<IndexCollection>(observer =>
                    {
                        var indexer = new Indexer(shared);
                        var notifier = indexer.Result.SubscribeSafe(observer);
                        return new CompositeDisposable(indexer, notifier);
                    });

                    return idx.CombineLatest(diff, (index, sizeDiff) => new { index, sizeDiff });
                });

            //this is the beast which allows the indexer to be recreated when a log file rolls
            return indexFactory
                .TakeWhile(x => x.sizeDiff >= 0).Repeat()
                .Select(x => x.index);
        }
Example #24
0
        public static IObservable<ILineProvider> Index(this IObservable<FileSegmentCollection> source)
        {
            if (source == null) throw new ArgumentNullException(nameof(source));

            var published = source.Replay(1).RefCount();
            var nameChanged = published.Select(fsc => fsc.Info.Name).DistinctUntilChanged().Skip(1);
            var diff = published.Select(fsc => fsc.SizeDiff);

            var idx = Observable.Create<IndexCollection>(observer =>
            {
                var indexer = new Indexer(published);
                var notifier = indexer.Result.SubscribeSafe(observer);
                return new CompositeDisposable(indexer, notifier);
            });

            var searchFactory = idx.CombineLatest(diff, (search, sizeDiff) => new { search, sizeDiff });

            //this is the magic which allows the search to be recreated when a log file rolls
            return searchFactory
                .TakeUntil(nameChanged)
                .TakeWhile(x => x.sizeDiff >= 0).Repeat()
                .Select(x => x.search);
        }
Example #25
0
        public static void Index(List <T> data, bool immediately = true)
        {
            if (!Support || !data.Any())
            {
                return;
            }

            try
            {
                Indexer.Index(data, immediately);
            }
            catch (AggregateException e)
            {
                if (e.InnerExceptions.Count == 0)
                {
                    throw;
                }

                var inner = e.InnerExceptions.OfType <ElasticsearchClientException>().FirstOrDefault();
                Logger.Error(inner);

                if (inner != null)
                {
                    Logger.Error("inner", inner.Response.OriginalException);

                    if (inner.Response.HttpStatusCode == 413)
                    {
                        data.ForEach(r => Index(r, immediately));
                    }
                }
                else
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// Create indexer if it doesn't exist in Azure Search service.
        /// </summary>
        /// <returns><see cref="Task"/> That represents indexer is created if not available in Azure Search service.</returns>
        private async Task CreateIndexerAsync()
        {
            try
            {
                if (await this.searchServiceClient.Indexers.ExistsAsync(PersonalGoalIndexerName))
                {
                    await this.searchServiceClient.Indexers.DeleteAsync(PersonalGoalIndexerName);
                }

                var indexer = new Indexer()
                {
                    Name            = PersonalGoalIndexerName,
                    DataSourceName  = PersonalGoalDataSourceName,
                    TargetIndexName = PersonalGoalIndexName,
                };

                await this.searchServiceClient.Indexers.CreateAsync(indexer);
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, $"Failed to create index: {ex.Message}");
                throw;
            }
        }
        private void DoThreadJob()
        {
            if (Info.Job == TaskJob.ImageJob && tempImage != null)
            {
                DoAfterCaptureJobs();
            }
            else if (Info.Job == TaskJob.TextUpload && !string.IsNullOrEmpty(tempText))
            {
                if (tempText.Length <= 260 && Directory.Exists(tempText)) // TODO: Should be optional setting?
                {
                    Info.FileName = Path.ChangeExtension(Info.FileName, Info.TaskSettings.IndexerSettings.Output.ToString().ToLower());
                    Info.TaskSettings.IndexerSettings.BinaryUnits = Program.Settings.BinaryUnits;
                    tempText = Indexer.Index(tempText, Info.TaskSettings.IndexerSettings);
                }

                byte[] byteArray = Encoding.UTF8.GetBytes(tempText);
                Data = new MemoryStream(byteArray);
            }

            if (Info.IsUploadJob && Data != null && Data.CanSeek)
            {
                Data.Position = 0;
            }
        }
        public void CanReadIndiciesBack_LargeFile()
        {
            var pulse     = new Subject <Unit>();
            var scheduler = new TestScheduler();

            using (var file = new TestFile())
            {
                file.Append(Enumerable.Range(1, 10000).Select(i => $"This is line number {i.ToString("00000000")}").ToArray());

                using (var indexer = new Indexer(file.Info.WatchFile(pulse).WithSegments(), tailSize: 1000, scheduler: scheduler))
                {
                    IndexCollection result = null;
                    using (indexer.Result.Subscribe(indicies => result = indicies))

                    {
                        //start off the head scanner
                        scheduler.AdvanceBy(1);

                        var head         = result.ReadLines(new ScrollRequest(10, 0));
                        var headText     = head.Select(l => l.Text).ToArray();
                        var headExpected = Enumerable.Range(1, 10).Select(i => $"This is line number {i.ToString("00000000")}");
                        headText.ShouldAllBeEquivalentTo(headExpected);

                        var tail         = result.ReadLines(new ScrollRequest(10));
                        var tailText     = tail.Select(l => l.Text).ToArray();
                        var tailExpected = Enumerable.Range(9991, 10).Select(i => $"This is line number {i.ToString("00000000")}").ToArray();
                        tailText.ShouldAllBeEquivalentTo(tailExpected);

                        var mid         = result.ReadLines(new ScrollRequest(10, 100));
                        var midText     = mid.Select(l => l.Text).ToArray();
                        var midExpected = Enumerable.Range(101, 10).Select(i => $"This is line number {i.ToString("00000000")}").ToArray();
                        midText.ShouldAllBeEquivalentTo(midExpected);
                    }
                }
            }
        }
Example #29
0
        public void NextPlayer_CreatePlayers_FurthestAwayWillPlay()
        {
            //Arrange
            Indexer.ResetPlayersId();
            string sorePlayer;
            string expectedPlayerName = "Barry";
            Golf   myGolf             = new Golf();
            Player myPlayer           = new Player(Indexer.NextPlayerId(), "Harry");

            myPlayer.LengthToGo = 100;
            myGolf.AddPlayer(myPlayer);
            myPlayer            = new Player(Indexer.NextPlayerId(), "Barry");
            myPlayer.LengthToGo = 200;
            myGolf.AddPlayer(myPlayer);
            myPlayer            = new Player(Indexer.NextPlayerId(), "Jerry");
            myPlayer.LengthToGo = 50;
            myGolf.AddPlayer(myPlayer);

            //Act
            sorePlayer = myGolf.NextPlayer().Name;

            //Assert
            Assert.Equal(expectedPlayerName, sorePlayer);
        }
Example #30
0
        public async Task <IDatabase> GetOrAddDataBaseAsync(string dbName)
        {
            var indexLocation = new MdLocator(System.Text.Encoding.UTF8.GetBytes($"{dbName}_indexer"), DataProtocol.DEFAULT_PROTOCOL, null, null);
            var indexMd       = await MdAccess.LocateAsync(indexLocation).ConfigureAwait(false);

            if (!indexMd.HasValue)
            {
                throw new System.Exception(indexMd.ErrorMsg);
            }
            var indexHead = new MdHead(indexMd.Value, dbName);
            var indexer   = await Indexer.GetOrAddAsync(indexHead);

            var dbLocation = new MdLocator(System.Text.Encoding.UTF8.GetBytes(dbName), DataProtocol.DEFAULT_PROTOCOL, null, null);
            var dbMd       = await MdAccess.LocateAsync(dbLocation).ConfigureAwait(false);

            if (!dbMd.HasValue)
            {
                throw new System.Exception(dbMd.ErrorMsg);
            }
            var dbHead   = new MdHead(dbMd.Value, dbName);
            var dbResult = await Database.GetOrAddAsync(dbHead, indexer);

            return(dbResult.Value);
        }
Example #31
0
        public void Remove_ByValues_RemovedFromForward_RemovedFromInverted()
        {
            var query   = "query";
            var index   = new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString() };
            var forward = new Mock <IIndex <string, string> >(MockBehavior.Strict);

            forward
            .Setup(x => x.Remove(query, index))
            .Returns(true)
            .Raises(x => x.Removed += null, query, index);

            var inverted = new Mock <IIndex <string, string> >(MockBehavior.Strict);

            foreach (var i in index)
            {
                inverted.Setup(x => x.Remove(i, query)).Returns(true);
            }

            using var indexer = new Indexer <string, string>(forward.Object, inverted.Object);
            indexer.Remove(query, index);

            forward.VerifyAll();
            inverted.VerifyAll();
        }
Example #32
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override IEnumerator <Point3i> GetEnumerator()
        {
            ThrowIfDisposed();
            Indexer indexer = new Indexer(this);

            int dims = Dims();

            if (dims == 2)
            {
                int rows = Rows;
                int cols = Cols;
                for (int r = 0; r < rows; r++)
                {
                    for (int c = 0; c < cols; c++)
                    {
                        yield return(indexer[r, c]);
                    }
                }
            }
            else
            {
                throw new NotImplementedException("GetEnumerator supports only 2-dimensional Mat");
            }
        }
 public virtual void Visit(Indexer i)
 {
 }
Example #34
0
        public override void IndexAll()
        {
            var fileDao = DaoFactory.GetFileDao <int>() as FileDao;

            (int, int, int) getCount(DateTime lastIndexed)
            {
                var dataQuery = GetBaseQuery(lastIndexed)
                                .Where(r => r.DbFile.Version == 1)
                                .OrderBy(r => r.DbFile.Id)
                                .Select(r => r.DbFile.Id);

                var minid = dataQuery.FirstOrDefault();

                dataQuery = GetBaseQuery(lastIndexed)
                            .Where(r => r.DbFile.Version == 1)
                            .OrderByDescending(r => r.DbFile.Id)
                            .Select(r => r.DbFile.Id);

                var maxid = dataQuery.FirstOrDefault();

                var count = GetBaseQuery(lastIndexed)
                            .Where(r => r.DbFile.Version == 1)
                            .Count();

                return(new(count, maxid, minid));
            }

            List <DbFile> getData(long start, long stop, DateTime lastIndexed)
            {
                return(GetBaseQuery(lastIndexed)
                       .Where(r => r.DbFile.Id >= start && r.DbFile.Id <= stop && r.DbFile.CurrentVersion)
                       .Select(r => r.DbFile)
                       .ToList());
            }

            List <int> getIds(DateTime lastIndexed)
            {
                var start  = 0;
                var result = new List <int>();

                while (true)
                {
                    var dataQuery = GetBaseQuery(lastIndexed)
                                    .Where(r => r.DbFile.Id >= start)
                                    .Where(r => r.DbFile.Version == 1)
                                    .OrderBy(r => r.DbFile.Id)
                                    .Select(r => r.DbFile.Id)
                                    .Skip(BaseIndexer <DbFile> .QueryLimit);

                    var id = dataQuery.FirstOrDefault();
                    if (id != 0)
                    {
                        start = id;
                        result.Add(id);
                    }
                    else
                    {
                        break;
                    }
                }

                return(result);
            }

            IQueryable <FileTenant> GetBaseQuery(DateTime lastIndexed) => fileDao.FilesDbContext.Files
            .Where(r => r.ModifiedOn >= lastIndexed)
            .Join(fileDao.FilesDbContext.Tenants, r => r.TenantId, r => r.Id, (f, t) => new FileTenant {
                DbFile = f, DbTenant = t
            })
            .Where(r => r.DbTenant.Status == ASC.Core.Tenants.TenantStatus.Active);

            try
            {
                var j     = 0;
                var tasks = new List <Task>();

                foreach (var data in Indexer.IndexAll(getCount, getIds, getData))
                {
                    if (Settings.Threads == 1)
                    {
                        data.ForEach(r =>
                        {
                            TenantManager.SetCurrentTenant(r.TenantId);
                            fileDao.InitDocument(r);
                        });
                        Index(data);
                    }
                    else
                    {
                        //TODO: refactoring
                        data.ForEach(r =>
                        {
                            TenantManager.SetCurrentTenant(r.TenantId);
                            fileDao.InitDocument(r);
                        });

                        tasks.Add(IndexAsync(data));
                        j++;
                        if (j >= Settings.Threads)
                        {
                            Task.WaitAll(tasks.ToArray());
                            tasks = new List <Task>();
                            j     = 0;
                        }
                    }
                }

                if (tasks.Any())
                {
                    Task.WaitAll(tasks.ToArray());
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                throw;
            }
        }
        public override void IndexAll()
        {
            var entityDao = DaoFactory.GetRelationshipEventDao();

            IQueryable <DbRelationshipEvent> GetBaseQuery(DateTime lastIndexed) =>
            entityDao.CrmDbContext.RelationshipEvent
            .Where(r => r.LastModifedOn >= lastIndexed)
            .Join(entityDao.CrmDbContext.Tenants, r => r.TenantId, r => r.Id, (f, t) => new { DbEntity = f, DbTenant = t })
            .Where(r => r.DbTenant.Status == ASC.Core.Tenants.TenantStatus.Active)
            .Select(r => r.DbEntity);

            (int, int, int) getCount(DateTime lastIndexed)
            {
                var q = GetBaseQuery(lastIndexed);

                var count = q.Count();
                var min   = count > 0 ? q.Min(r => r.Id) : 0;
                var max   = count > 0 ? q.Max(r => r.Id) : 0;

                return(count, max, min);
            }

            List <DbRelationshipEvent> getData(long start, long stop, DateTime lastIndexed) =>
            GetBaseQuery(lastIndexed)
            .Where(r => r.Id >= start && r.Id <= stop)
            .ToList();

            List <int> getIds(DateTime lastIndexed)
            {
                long start = 0;

                var result = new List <int>();

                while (true)
                {
                    var id = GetBaseQuery(lastIndexed)
                             .AsNoTracking()
                             .Where(r => r.Id >= start)
                             .OrderBy(x => x.Id)
                             .Skip(BaseIndexer <DbRelationshipEvent> .QueryLimit)
                             .Select(x => x.Id)
                             .FirstOrDefault();

                    if (id != 0)
                    {
                        start = id;
                        result.Add(id);
                    }
                    else
                    {
                        break;
                    }
                }

                return(result);
            }

            try
            {
                foreach (var data in Indexer.IndexAll(getCount, getIds, getData))
                {
                    Index(data);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                throw;
            }
        }
Example #36
0
        public Matrix(TElement[] array, int row, int column)
        {
            if (array == null)
            {
                throw new ArgumentNullException(nameof(array));
            }
            if (row < 0)
            {
                throw new ArgumentOutOfRangeException($"{nameof(row)}", $"{nameof(row)} should be positive value.");
            }
            if (column < 0)
            {
                throw new ArgumentOutOfRangeException($"{nameof(column)}", $"{nameof(column)} should be positive value.");
            }
            if (array.Length != row * column)
            {
                throw new ArgumentOutOfRangeException($"{nameof(array)}.Length should equal to {nameof(row)} x {nameof(column)}.");
            }

            if (!TryParse(typeof(TElement), out var type))
            {
                throw new NotSupportedException($"{typeof(TElement).Name} does not support");
            }

            this._MatrixElementTypes = type;
            this._ElementType        = type.ToNativeMatrixElementType();

            unsafe
            {
                switch (this._ElementType)
                {
                case NativeMethods.MatrixElementType.UInt8:
                {
                    var tmp = array as byte[];

                    fixed(byte *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.UInt16:
                {
                    var tmp = array as ushort[];

                    fixed(ushort *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.UInt32:
                {
                    var tmp = array as uint[];

                    fixed(uint *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.Int8:
                {
                    var tmp = array as sbyte[];

                    fixed(sbyte *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.Int16:
                {
                    var tmp = array as short[];

                    fixed(short *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.Int32:
                {
                    var tmp = array as int[];

                    fixed(int *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.Float:
                {
                    var tmp = array as float[];

                    fixed(float *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.Double:
                {
                    var tmp = array as double[];

                    fixed(double *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.RgbPixel:
                {
                    var tmp = array as RgbPixel[];

                    fixed(RgbPixel *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.BgrPixel:
                {
                    var tmp = array as BgrPixel[];

                    fixed(BgrPixel *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.RgbAlphaPixel:
                {
                    var tmp = array as RgbAlphaPixel[];

                    fixed(RgbAlphaPixel *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.HsiPixel:
                {
                    var tmp = array as HsiPixel[];

                    fixed(HsiPixel *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;

                case NativeMethods.MatrixElementType.LabPixel:
                {
                    var tmp = array as LabPixel[];

                    fixed(LabPixel *src = &tmp[0])
                    this.NativePtr = NativeMethods.matrix_new2(this._ElementType, row, column, (IntPtr)src);
                }
                break;
                }
            }

            this._Indexer = this.CreateIndexer(type);
        }
Example #37
0
 public ListenableCloudTable GetWalletRuleListenable()
 {
     return(new ListenableCloudTable(null, ServiceBus, Indexer.GetTable("walletrules").Name));
 }
Example #38
0
 public virtual Expression VisitIndexer(Indexer indexer, Indexer changes, Indexer deletions, Indexer insertions){
   this.UpdateSourceContext(indexer, changes);
   if (indexer == null) return changes;
   if (changes != null){
     if (deletions == null || insertions == null)
       Debug.Assert(false);
     else{
     }
   }else if (deletions != null)
     return null;
   return indexer;
 }
Example #39
0
 private Indexer CreateIndexer()
 {
     var indexer = new Indexer();
     indexer.Init();
     return indexer;
 }
    public virtual Differences VisitIndexer(Indexer indexer1, Indexer indexer2){
      Differences differences = new Differences(indexer1, indexer2);
      if (indexer1 == null || indexer2 == null){
        if (indexer1 != indexer2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++;
        return differences;
      }
      Indexer changes = (Indexer)indexer2.Clone();
      Indexer deletions = (Indexer)indexer2.Clone();
      Indexer insertions = (Indexer)indexer2.Clone();

      Differences diff = this.VisitExpression(indexer1.Object, indexer2.Object);
      if (diff == null){Debug.Assert(false); return differences;}
      changes.Object = diff.Changes as Expression;
      deletions.Object = diff.Deletions as Expression;
      insertions.Object = diff.Insertions as Expression;
      Debug.Assert(diff.Changes == changes.Object && diff.Deletions == deletions.Object && diff.Insertions == insertions.Object);
      differences.NumberOfDifferences += diff.NumberOfDifferences;
      differences.NumberOfSimilarities += diff.NumberOfSimilarities;

      ExpressionList exprChanges, exprDeletions, exprInsertions;
      diff = this.VisitExpressionList(indexer1.Operands, indexer2.Operands, out exprChanges, out exprDeletions, out exprInsertions);
      if (diff == null){Debug.Assert(false); return differences;}
      changes.Operands = exprChanges;
      deletions.Operands = exprDeletions;
      insertions.Operands = exprInsertions;
      differences.NumberOfDifferences += diff.NumberOfDifferences;
      differences.NumberOfSimilarities += diff.NumberOfSimilarities;

      if (differences.NumberOfDifferences == 0){
        differences.Changes = null;
        differences.Deletions = null;
        differences.Insertions = null;
      }else{
        differences.Changes = changes;
        differences.Deletions = deletions;
        differences.Insertions = insertions;
      }
      return differences;
    }
 public async Task IncrementDownloadCountAsync(IPackage package, CancellationToken cancellationToken)
 {
     await Indexer.IncrementDownloadCountAsync(package, cancellationToken);
 }
Example #42
0
 public override void Visit(Indexer i)
 {
     VisitProperty(i);
 }
        public static void RadixSortBucket(NativeSlice <int> unsortedSrcIndices, NativeArray <float> xmins)
        {
            var count = unsortedSrcIndices.Length;

            if (count <= 0)
            {
                return;
            }

            NativeArray <int> counts1    = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.ClearMemory);
            NativeArray <int> counts2    = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.ClearMemory);
            NativeArray <int> counts3    = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.ClearMemory);
            NativeArray <int> counts4    = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.ClearMemory);
            NativeArray <int> prefixSum1 = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
            NativeArray <int> prefixSum2 = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
            NativeArray <int> prefixSum3 = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
            NativeArray <int> prefixSum4 = new NativeArray <int>(256, Allocator.Temp, NativeArrayOptions.UninitializedMemory);

            NativeArray <Indexer> frontArray = new NativeArray <Indexer>(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
            NativeArray <Indexer> backArray  = new NativeArray <Indexer>(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory);

            //Counts
            for (int i = 0; i < count; i++)
            {
                var keys = Keys(xmins[unsortedSrcIndices[i]]);
                counts1[keys.byte1] = counts1[keys.byte1] + 1;
                counts2[keys.byte2] = counts2[keys.byte2] + 1;
                counts3[keys.byte3] = counts3[keys.byte3] + 1;
                counts4[keys.byte4] = counts4[keys.byte4] + 1;
                frontArray[i]       = new Indexer {
                    key = keys, index = unsortedSrcIndices[i]
                };
            }

            //Sums
            calculatePrefixSum(counts1, prefixSum1);
            calculatePrefixSum(counts2, prefixSum2);
            calculatePrefixSum(counts3, prefixSum3);
            calculatePrefixSum(counts4, prefixSum4);

            for (int i = 0; i < count; i++)
            {
                byte key  = frontArray[i].key.byte1;
                int  dest = prefixSum1[key];
                backArray[dest] = frontArray[i];
                prefixSum1[key] = prefixSum1[key] + 1;
            }

            for (int i = 0; i < count; i++)
            {
                byte key  = backArray[i].key.byte2;
                int  dest = prefixSum2[key];
                frontArray[dest] = backArray[i];
                prefixSum2[key]  = prefixSum2[key] + 1;
            }

            for (int i = 0; i < count; i++)
            {
                byte key  = frontArray[i].key.byte3;
                int  dest = prefixSum3[key];
                backArray[dest] = frontArray[i];
                prefixSum3[key] = prefixSum3[key] + 1;
            }

            for (int i = 0; i < count; i++)
            {
                byte key  = backArray[i].key.byte4;
                int  dest = prefixSum4[key];
                int  src  = backArray[i].index;
                unsortedSrcIndices[dest] = src;
                prefixSum4[key]          = prefixSum4[key] + 1;
            }
        }
Example #44
0
 private CloudTable GetChainCacheCloudTable()
 {
     return(Indexer.GetTable("rapidchainchache"));
 }
Example #45
0
 private CloudTable GetCrudTable()
 {
     return(Indexer.GetTable("crudtable"));
 }
Example #46
0
 public CloudTable GetCallbackTable()
 {
     return(Indexer.GetTable("rapidcallbacks"));
 }
Example #47
0
 private AssignmentStatement/*!*/ ParseArrayElementAssignment(OpCode opCode) {
   Expression rhvalue = PopOperand();
   ExpressionList indexers = new ExpressionList(1);
   indexers.Add(PopOperand());
   Expression array = PopOperand();
   Indexer indexer = new Indexer(array, indexers);
   TypeNode t = CoreSystemTypes.Object;
   switch(opCode){
     case OpCode.Stelem_I: t = CoreSystemTypes.IntPtr; break;
     case OpCode.Stelem_I1: t = CoreSystemTypes.Int8; break;
     case OpCode.Stelem_I2: t = CoreSystemTypes.Int16; break;
     case OpCode.Stelem_I4: t = CoreSystemTypes.Int32; break;
     case OpCode.Stelem_I8: t = CoreSystemTypes.Int64; break;
     case OpCode.Stelem_R4: t = CoreSystemTypes.Single; break;
     case OpCode.Stelem_R8: t = CoreSystemTypes.Double; break;
     case OpCode.Stelem: t = (TypeNode)this.GetMemberFromToken(); break;
     default:
       ArrayType arrT = array.Type as ArrayType;
       if (arrT != null) t = arrT.ElementType;
       break;
   }
   indexer.ElementType = indexer.Type = t;
   return new AssignmentStatement(indexer, rhvalue);
 }
 public Task SynchronizeWithFileSystem(SynchronizationMode mode, CancellationToken cancellationToken)
 {
     Log.Info(m => m("Synchronizing packages with filesystem."));
     return(Indexer.SynchronizeIndexWithFileSystemAsync(mode, cancellationToken));
 }
Example #49
0
 private Indexer/*!*/ ParseArrayElementLoad(OpCode opCode, TypeNode elementType){
   ExpressionList indexers = new ExpressionList(1); indexers.Add(PopOperand());
   Expression array = PopOperand();
   Indexer indexer = new Indexer(array, indexers);
   TypeNode t = elementType;
   switch(opCode){
     case OpCode.Ldelem_I1: t = CoreSystemTypes.Int8; break;
     case OpCode.Ldelem_U1: t = CoreSystemTypes.UInt8; break;
     case OpCode.Ldelem_I2: t = CoreSystemTypes.Int16; break;
     case OpCode.Ldelem_U2: t = CoreSystemTypes.UInt16; break;
     case OpCode.Ldelem_I4: t = CoreSystemTypes.Int32; break;
     case OpCode.Ldelem_U4: t = CoreSystemTypes.UInt32; break;
     case OpCode.Ldelem_I8: t = CoreSystemTypes.Int64; break;
     case OpCode.Ldelem_I: t = CoreSystemTypes.IntPtr; break;
     case OpCode.Ldelem_R4: t = CoreSystemTypes.Single; break;
     case OpCode.Ldelem_R8: t = CoreSystemTypes.Double; break;
     case OpCode.Ldelem: t = (TypeNode)this.GetMemberFromToken(); break;
     default:
       if (t != null) break;
       t = CoreSystemTypes.Object;
       ArrayType arrT = array.Type as ArrayType;
       if (arrT != null) t = arrT.ElementType;
       break;
   }
   indexer.ElementType = indexer.Type = t;
   return indexer;
 }
 public RepositoryInfo GetStatus()
 {
     return(new RepositoryInfo(packageCount, Indexer.GetIndexingStatus()));
 }
Example #51
0
 public void AddSoundexTest()
 {
     Indexer.AddSoundex("herman");
 }
 public void Optimize()
 {
     Indexer.Optimize();
 }
Example #53
0
        public Matrix(MatrixTemplateSizeParameter parameter, TElement[] array)
            : base(parameter.TemplateRows, parameter.TemplateColumns)
        {
            if (!TryParse(typeof(TElement), out var type))
            {
                throw new NotSupportedException($"{typeof(TElement).Name} does not support");
            }
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }
            if (array == null)
            {
                throw new ArgumentNullException(nameof(array));
            }
            if (parameter.TemplateRows < 0)
            {
                throw new ArgumentOutOfRangeException($"{nameof(parameter.TemplateRows)}", $"{nameof(parameter.TemplateRows)} should be positive value.");
            }
            if (parameter.TemplateColumns < 0)
            {
                throw new ArgumentOutOfRangeException($"{nameof(parameter.TemplateColumns)}", $"{nameof(parameter.TemplateColumns)} should be positive value.");
            }

            var templateRows    = parameter.TemplateRows;
            var templateColumns = parameter.TemplateColumns;

            if (templateRows * templateColumns != 0)
            {
                if (templateRows * templateColumns != array.Length)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }
            else if (templateRows != 0)
            {
                if (array.Length % templateRows != 0)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }
            else if (templateColumns != 0)
            {
                if (array.Length % templateColumns != 0)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }

            using (var vector = new StdVector <TElement>(array))
            {
                var error = NativeMethods.matrix_new5(type.ToNativeMatrixElementType(),
                                                      (uint)templateRows,
                                                      (uint)templateColumns,
                                                      vector.NativePtr,
                                                      out var ret);
                switch (error)
                {
                case NativeMethods.ErrorType.MatrixElementTypeNotSupport:
                    throw new ArgumentException($"Input {type} is not supported.");

                case NativeMethods.ErrorType.MatrixElementTemplateSizeNotSupport:
                    throw new ArgumentException($"{nameof(templateRows)} or {nameof(templateRows)} is not supported.");
                }

                this.NativePtr           = ret;
                this._MatrixElementTypes = type;
                this._ElementType        = type.ToNativeMatrixElementType();
                this._Indexer            = this.CreateIndexer(type);
            }
        }
Example #54
0
 public Map()
 {
     Forward = new Indexer <T1, T2> (_forward);
     Reverse = new Indexer <T2, T1> (_reverse);
 }
Example #55
0
 /// <summary>
 /// Creates a new Azure Search indexer or updates an indexer if it already
 /// exists.
 /// <see href="https://msdn.microsoft.com/library/azure/dn946899.aspx" />
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='indexerName'>
 /// The name of the indexer to create or update.
 /// </param>
 /// <param name='indexer'>
 /// The definition of the indexer to create or update.
 /// </param>
 /// <param name='searchRequestOptions'>
 /// Additional parameters for the operation
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <Indexer> CreateOrUpdateAsync(this IIndexers operations, string indexerName, Indexer indexer, SearchRequestOptions searchRequestOptions = default(SearchRequestOptions), CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(indexerName, indexer, searchRequestOptions, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Example #56
0
 public ListenableCloudTable GetBroadcastedTransactionsListenable()
 {
     return(new ListenableCloudTable(Indexer.GetTable("broadcastedtx"), ServiceBus, Indexer.GetTable("broadcastedtx").Name));
 }
 public Indexer MutateIndexer(Indexer indexer)
 {
     indexer.Description = "Mutated Indexer";
     return(indexer);
 }
Example #58
0
 /// <summary>
 /// Creates a new Azure Search indexer.
 /// <see href="https://msdn.microsoft.com/library/azure/dn946899.aspx" />
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='indexer'>
 /// The definition of the indexer to create.
 /// </param>
 /// <param name='searchRequestOptions'>
 /// Additional parameters for the operation
 /// </param>
 public static Indexer Create(this IIndexers operations, Indexer indexer, SearchRequestOptions searchRequestOptions = default(SearchRequestOptions))
 {
     return(operations.CreateAsync(indexer, searchRequestOptions).GetAwaiter().GetResult());
 }
Example #59
0
    static void Linking(int[][] InputAry, int p1, int p2, int color)
    {
        int[][] ary = InputAry;

        Indexer proto = new Indexer(p1, p2);
        Indexer up, down, left, right;
        Indexer upleft, upright, downleft, downright;

        if (p1 > 0 && ary[p1 - 1][p2] == color)
        {
            up = null;
        }
        else if (p1 > 0 && ary[p1][p2] == ary[p1 - 1][p2])
        {
            up = new Indexer(p1 - 1, p2);
        }                                                   // up index
        else
        {
            up = null;
        }

        if (p1 < ary.Length - 1 && ary[p1 + 1][p2] == color)
        {
            down = null;
        }
        else if (p1 < ary.Length - 1 && ary[p1][p2] == ary[p1 + 1][p2])
        {
            down = new Indexer(p1 + 1, p2);
        }                                                   // down index
        else
        {
            down = null;
        }

        if (p2 > 0 && ary[p1][p2 - 1] == color)
        {
            left = null;
        }
        else if (p2 > 0 && ary[p1][p2] == ary[p1][p2 - 1])
        {
            left = new Indexer(p1, p2 - 1);
        }                                                   // left index
        else
        {
            left = null;
        }

        if (p2 < ary[p1].Length - 1 && ary[p1][p2 + 1] == color)
        {
            right = null;
        }
        else if (p2 < ary[p1].Length - 1 && ary[p1][p2] == ary[p1][p2 + 1])
        {
            right = new Indexer(p1, p2 + 1);
        }                                                  // right index
        else
        {
            right = null;
        }

        if ((p1 > 0 && p2 > 0) && (ary[p1 - 1][p2 - 1] == color))
        {
            upleft = null;
        }
        else if ((p1 > 0 && p2 > 0) && (ary[p1][p2] == ary[p1 - 1][p2 - 1]))
        {
            upleft = new Indexer(p1 - 1, p2 - 1);
        }                                                         // upleft index
        else
        {
            upleft = null;
        }

        if ((p1 > 0 && p2 < ary[p1].Length - 1) && (ary[p1 - 1][p2 + 1] == color))
        {
            upright = null;
        }
        else if ((p1 > 0 && p2 < ary[p1].Length - 1) && (ary[p1][p2] == ary[p1 - 1][p2 + 1]))
        {
            upright = new Indexer(p1 - 1, p2 + 1);
        }                                                        // upright index
        else
        {
            upright = null;
        }

        if ((p1 < ary.Length - 1 && p2 > 0) && (ary[p1 + 1][p2 - 1] == color))
        {
            downleft = null;
        }
        else if ((p1 < ary.Length - 1 && p2 > 0) && (ary[p1][p2] == ary[p1 + 1][p2 - 1]))
        {
            downleft = new Indexer(p1 + 1, p2 - 1);
        }                                                         // downleft index
        else
        {
            downleft = null;
        }

        if ((p1 < ary.Length - 1 && p2 < ary[p1].Length - 1) && (ary[p1 + 1][p2 + 1] == color))
        {
            downright = null;
        }
        else if ((p1 < ary.Length - 1 && p2 < ary[p1].Length - 1) && ary[p1][p2] == ary[p1 + 1][p2 + 1])
        {
            downright = new Indexer(p1 + 1, p2 + 1);
        }                                                        // downright index
        else
        {
            downright = null;
        }



        ary[proto.x][proto.y] = color; // Painting


        List <Indexer> list = new List <Indexer> {
            up, down, left, right, upleft, upright, downleft, downright
        };

        foreach (Indexer i in list)
        {
            if (i != null)
            {
                Linking(ary, i.x, i.y, color);
            }
        }
    } // Linking
Example #60
0
 public void Visit(Indexer expression)
 {
     //outStream.Write("(");
     expression.Container.Accept(this);
     //outStream.Write(")[");
     outStream.Write("[");
     expression.Index.Accept(this);
     outStream.Write("]");
 }