Exemplo n.º 1
0
        // Конструктор
        public Store(Stream tab_stream, Stream index1, Stream index2, Stream index3, INametable nametable)
        {
            this.nametable = nametable;
            this.table     = new TableView(
                tab_stream,
                PolarExtension.GetPolarType <IRecord <int, int, IUnion <int, string> > >());

            IndexViewImmutable <spo> index_spo_i =
                new IndexViewImmutable <spo>(index1)
            {
                KeyProducer =
                    ob => new spo(
                        ob.CastRow <object, object>().Item2
                        .CastRow <int, int, object[]>()),
                Table = this.table,
                Scale = null,
            };

            this.index_spo = new IndexDynamic <spo, IndexViewImmutable <spo> >(true, index_spo_i);
            this.table.RegisterIndex(this.index_spo);

            IndexViewImmutable <ops> index_ops_i =
                new IndexViewImmutable <ops>(index2)
            {
                KeyProducer =
                    ob => new ops(
                        ob.CastRow <object, object>().Item2
                        .CastRow <int, int, object[]>()),
                Table = this.table,
                Scale = null,
            };

            this.index_ops = new IndexDynamic <ops, IndexViewImmutable <ops> >(true, index_ops_i);
            this.table.RegisterIndex(this.index_ops);

            IndexViewImmutable <int> index_p_i =
                new IndexViewImmutable <int>(index3)
            {
                KeyProducer =
                    ob => (int)ob.CastRow <object, object[]>().Item2[1],
                Table = this.table,
                Scale = null
            };

            this.index_p = new IndexDynamic <int, IndexViewImmutable <int> >(true, index_p_i);
            this.table.RegisterIndex(this.index_p);
            if (this.table.Count() > 0)
            {
                this.table.BuildIndexes();
            }
        }
Exemplo n.º 2
0
        public Nametable(Stream idsStream, Stream offsetsStream)
        {
            this.ids = new UniversalSequence <int>(PolarExtension.GetPolarType <string>(), idsStream);

            this.offsets = new UniversalSequence <int>(typeof(long).GetPolarType(), offsetsStream);
            int nom = 0;

            this.ids.Scan(
                (off, ob) =>
            {
                this.buffer.Add((string)ob, nom);
                nom++;
                return(true);
            });
        }