DeletionsWriter* DelWriter_init(DeletionsWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); ABSTRACT_CLASS_CHECK(self, DELETIONSWRITER); return self; }
LexiconWriter* LexWriter_init(LexiconWriter *self, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { Schema *schema = PolyReader_Get_Schema(polyreader); Architecture *arch = Schema_Get_Architecture(schema); DataWriter_init((DataWriter*)self, snapshot, segment, polyreader); /* Assign. */ self->index_interval = Arch_Index_Interval(arch); self->skip_interval = Arch_Skip_Interval(arch); /* Init. */ self->ix_out = NULL; self->ixix_out = NULL; self->dat_out = NULL; self->count = 0; self->ix_count = 0; self->last_tinfo = TInfo_new(0,0,0,0); self->last_text = CB_new(40); self->dat_file = CB_new(30); self->ix_file = CB_new(30); self->ixix_file = CB_new(30); self->counts = Hash_new(0); self->ix_counts = Hash_new(0); self->stepper = NULL; self->temp_mode = false; /* Derive. */ self->stepper = LexStepper_new((CharBuf*)&EMPTY, self->skip_interval); return self; }
HighlightWriter* HLWriter_init(HighlightWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); return self; }
LexiconWriter* LexWriter_init(LexiconWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { Architecture *arch = Schema_Get_Architecture(schema); DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); // Assign. self->index_interval = Arch_Index_Interval(arch); self->skip_interval = Arch_Skip_Interval(arch); // Init. self->ix_out = NULL; self->ixix_out = NULL; self->dat_out = NULL; self->count = 0; self->ix_count = 0; self->dat_file = CB_new(30); self->ix_file = CB_new(30); self->ixix_file = CB_new(30); self->counts = Hash_new(0); self->ix_counts = Hash_new(0); self->temp_mode = false; self->term_stepper = NULL; self->tinfo_stepper = (TermStepper*)MatchTInfoStepper_new(schema); return self; }
SegWriter* SegWriter_init(SegWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { Architecture *arch = Schema_Get_Architecture(schema); DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); SegWriterIVARS *const ivars = SegWriter_IVARS(self); ivars->by_api = Hash_new(0); ivars->inverter = Inverter_new(schema, segment); ivars->writers = Vec_new(16); Arch_Init_Seg_Writer(arch, self); return self; }
DefaultDeletionsWriter* DefDelWriter_init(DefaultDeletionsWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); DefaultDeletionsWriterIVARS *const ivars = DefDelWriter_IVARS(self); ivars->seg_readers = PolyReader_Seg_Readers(polyreader); uint32_t num_seg_readers = VA_Get_Size(ivars->seg_readers); ivars->seg_starts = PolyReader_Offsets(polyreader); ivars->bit_vecs = VA_new(num_seg_readers); ivars->updated = (bool*)CALLOCATE(num_seg_readers, sizeof(bool)); ivars->searcher = IxSearcher_new((Obj*)polyreader); ivars->name_to_tick = Hash_new(num_seg_readers); // Materialize a BitVector of deletions for each segment. for (uint32_t i = 0; i < num_seg_readers; i++) { SegReader *seg_reader = (SegReader*)VA_Fetch(ivars->seg_readers, i); BitVector *bit_vec = BitVec_new(SegReader_Doc_Max(seg_reader)); DeletionsReader *del_reader = (DeletionsReader*)SegReader_Fetch( seg_reader, Class_Get_Name(DELETIONSREADER)); Matcher *seg_dels = del_reader ? DelReader_Iterator(del_reader) : NULL; if (seg_dels) { int32_t del; while (0 != (del = Matcher_Next(seg_dels))) { BitVec_Set(bit_vec, del); } DECREF(seg_dels); } VA_Store(ivars->bit_vecs, i, (Obj*)bit_vec); Hash_Store(ivars->name_to_tick, (Obj*)SegReader_Get_Seg_Name(seg_reader), (Obj*)Int32_new(i)); } return self; }
SortWriter* SortWriter_init(SortWriter *self, Schema *schema, Snapshot *snapshot, Segment *segment, PolyReader *polyreader) { uint32_t field_max = Schema_Num_Fields(schema) + 1; DataWriter_init((DataWriter*)self, schema, snapshot, segment, polyreader); SortWriterIVARS *const ivars = SortWriter_IVARS(self); // Init. ivars->field_writers = VA_new(field_max); ivars->counts = Hash_new(0); ivars->null_ords = Hash_new(0); ivars->ord_widths = Hash_new(0); ivars->temp_ord_out = NULL; ivars->temp_ix_out = NULL; ivars->temp_dat_out = NULL; ivars->mem_pool = MemPool_new(0); ivars->mem_thresh = default_mem_thresh; ivars->flush_at_finish = false; return self; }