internal static void FreePreAllocatedOnEnd(IRowConstructor <object> builder) { var dyn = (DynamicRowConstructor)builder; if (dyn.PreAlloced != null) { dyn.PreAlloced.Dispose(); } else if (dyn.CurrentRow != null) { dyn.CurrentRow.Dispose(); } }
protected ReaderBase(BoundConfigurationBase <T> config, object?context, IRowConstructor <T> rowBuilder, ExtraColumnTreatment extraTreatment) { RowNumber = 0; Configuration = config; Context = context; var options = config.Options; var bufferSize = options.ReadBufferSizeHint; if (bufferSize == 0) { bufferSize = Utils.DEFAULT_BUFFER_SIZE; } // always need to be able to store a whole value separator "character" var bufferMinSize = config.ValueSeparatorMemory.Length * 2; if (bufferSize < bufferMinSize) { bufferSize = bufferMinSize; } var memPool = config.MemoryPool; Buffer = new BufferWithPushback( memPool, bufferSize ); Partial = new Partial(memPool); SharedCharacterLookup = CharacterLookup.MakeCharacterLookup(options, out _); StateMachine = new ReaderStateMachine(); RowBuilder = rowBuilder; ExtraColumnTreatment = extraTreatment; }
internal Reader(IReaderAdapter inner, ConcreteBoundConfiguration <T> config, object?context, IRowConstructor <T> rowBuilder) : base(inner, config, context, rowBuilder, Utils.EffectiveColumnTreatmentForStatic(config)) { }
internal SyncReaderBase(IReaderAdapter inner, BoundConfigurationBase <T> config, object?context, IRowConstructor <T> rowBuilder, ExtraColumnTreatment extraTreatment) : base(config, context, rowBuilder, extraTreatment) { Inner = inner; }