public void visitContainedRecords(RecordVisitor rv) {PositionTrackingVisitor stv = new PositionTrackingVisitor(rv, 0);final int blockCount = getRowBlockCount();for (int blockIndex = 0; blockIndex < blockCount; blockIndex++) {int pos=0;final int rowBlockSize = visitRowRecordsForBlock(blockIndex, rv);pos += rowBlockSize;final int startRowNumber = getStartRowNumberForBlock(blockIndex);final int endRowNumber = getEndRowNumberForBlock(blockIndex);final List<Short> cellOffsets = new ArrayList<>();int cellRefOffset = (rowBlockSize - RowRecord.ENCODED_SIZE);for (int row = startRowNumber; row <= endRowNumber; row++) {if (_valuesAgg.rowHasCells(row)) {stv.setPosition(0);_valuesAgg.visitCellsForRow(row, stv);int rowCellSize = stv.getPosition();pos += rowCellSize;cellOffsets.add((short)cellRefOffset);cellRefOffset = rowCellSize;}}rv.visitRecord(new DBCellRecord(pos, shortListToArray(cellOffsets)));}_unknownRecords.forEach(rv::visitRecord);}

public void visitContainedRecords ( RecordVisitor rv ) { PositionTrackingVisitor stv = new PositionTrackingVisitor ( rv , 0 ) ; final int blockCount = getRowBlockCount ( ) ; for ( int blockIndex = 0 ; blockIndex < blockCount ; blockIndex ++ ) { int pos = 0 ; final int rowBlockSize = visitRowRecordsForBlock ( blockIndex , rv ) ; pos += rowBlockSize ; final int startRowNumber = getStartRowNumberForBlock ( blockIndex ) ; final int endRowNumber = getEndRowNumberForBlock ( blockIndex ) ; final List < Short > cellOffsets = new ArrayList < > ( ) ; int cellRefOffset = ( rowBlockSize - RowRecord . ENCODED_SIZE ) ; for ( int row = startRowNumber ; row <= endRowNumber ; row ++ ) { if ( _valuesAgg . rowHasCells ( row ) ) { stv . setPosition ( 0 ) ; _valuesAgg . visitCellsForRow ( row , stv ) ; int rowCellSize = stv . getPosition ( ) ; pos += rowCellSize ; cellOffsets . add ( ( short ) cellRefOffset ) ; cellRefOffset = rowCellSize ; } } rv . visitRecord ( new DBCellRecord ( pos , shortListToArray ( cellOffsets ) ) ) ; } _unknownRecords . forEach ( rv :: visitRecord ) ; }
public override void VisitContainedRecords(RecordVisitor rv){PositionTrackingVisitor stv = new PositionTrackingVisitor(rv, 0);int blockCount = this.RowBlockCount;for (int blockIndex = 0; blockIndex < blockCount; blockIndex++){int pos = 0;int rowBlockSize = VisitRowRecordsForBlock(blockIndex, rv);pos += rowBlockSize;int startRowNumber = GetStartRowNumberForBlock(blockIndex);int endRowNumber = GetEndRowNumberForBlock(blockIndex);DBCellRecord cellRecord = new DBCellRecord();int cellRefOffset = (rowBlockSize - RowRecord.ENCODED_SIZE);for (int row = startRowNumber; row <= endRowNumber; row++){if (_valuesAgg.RowHasCells(row)){stv.Position = 0;_valuesAgg.VisitCellsForRow(row, stv);int rowCellSize = stv.Position;pos += rowCellSize;cellRecord.AddCellOffset((short)cellRefOffset);cellRefOffset = rowCellSize;}}cellRecord.RowOffset = (pos);rv.VisitRecord(cellRecord);}for (int i = 0; i < _unknownRecords.Count; i++){rv.VisitRecord((Record)_unknownRecords[i]);}}
