public void AddBlock(IList <object> values) { var stats = new BooleanWriterStatistics(); Statistics.Add(stats); foreach (var buffer in Buffers) { buffer.AnnotatePosition(stats, 0); } stats.NumValues += (uint)values.Count; }
public void AddBlock(IList <bool?> values) { var stats = new BooleanWriterStatistics(); Statistics.Add(stats); if (_isNullable) { _presentBuffer.AnnotatePosition(stats, rleValuesToConsume: 0, bitsToConsume: 0); } _dataBuffer.AnnotatePosition(stats, rleValuesToConsume: 0, bitsToConsume: 0); var valList = new List <bool>(values.Count); if (_isNullable) { var presentList = new List <bool>(values.Count); foreach (var value in values) { stats.AddValue(value); if (value.HasValue) { valList.Add(value.Value); } presentList.Add(value.HasValue); } var presentEncoder = new BitWriter(_presentBuffer); presentEncoder.Write(presentList); if (stats.HasNull) { _presentBuffer.MustBeIncluded = true; } } else { foreach (var value in values) { stats.AddValue(value); valList.Add(value.Value); } } var valEncoder = new BitWriter(_dataBuffer); valEncoder.Write(valList); }