// Конструктор 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(); } }
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); }); }