format/src/main/java/com/github/sadikovi/riff/IndexedRowReader.java
/**
   * Relative row offset is computed for absolute position of the type spec, but relative to the
   * region, e.g. if 4 fields exist: 2 (long, int) in index region and 2 (int, int) in data region,
   * we will write:
   * +---+---+---+---+
   * | 0 | 1 | 2 | 3 |
   * +---+---+---+---+
   * | 0 | 8 | 0 | 4 |
   * +---+---+---+---+
   * If value is null, then we write -1 as default value and next non-null position starts from
   * previous non-null + offset.
   */
Relative row offset is computed for absolute position of the type spec, but relative to the
region, e.g.
Relative row offset is computed for absolute position of the type spec but relative to the region e . g .
private void relativeRowOffset(int[] offsets, long nulls, TypeSpec[] fields) {
    int offset = 0;
    for (int i = 0; i < fields.length; i++) {
      if ((nulls & 1L << fields[i].position()) == 0) {
        offsets[fields[i].position()] = offset;
        offset += this.converters[fields[i].position()].byteOffset();
      } else {
        offsets[fields[i].position()] = -1;
      }
    }
  }
private void relativeRowOffset ( int [ ] offsets , long nulls , TypeSpec [ ] fields ) { int offset = 0 ; for ( int i = 0 ; i < fields . length ; i ++ ) { if ( ( nulls & 1L << fields [ i ] . position ( ) ) == 0 ) { offsets [ fields [ i ] . position ( ) ] = offset ; offset += this . converters [ fields [ i ] . position ( ) ] . byteOffset ( ) ; } else { offsets [ fields [ i ] . position ( ) ] = - 1 ; } } }
Relative row offset is computed for absolute position of the type spec, but relative to the
 region, e.g.
Relative row offset is computed for absolute position of the type spec but relative to the region e . g .
// update offset // set null value