diff options
Diffstat (limited to 'opendc-trace/opendc-trace-api/src/main')
| -rw-r--r-- | opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt index dafc0798..11e032c7 100644 --- a/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt +++ b/opendc-trace/opendc-trace-api/src/main/kotlin/org/opendc/trace/util/CompositeTableReader.kt @@ -46,11 +46,7 @@ public abstract class CompositeTableReader : TableReader { protected abstract fun nextReader(): TableReader? override fun nextRow(): Boolean { - if (!hasStarted) { - assert(delegate == null) { "Duplicate initialization" } - delegate = nextReader() - hasStarted = true - } + tryStart() var delegate = delegate @@ -68,6 +64,8 @@ public abstract class CompositeTableReader : TableReader { } override fun resolve(column: TableColumn<*>): Int { + tryStart() + val delegate = delegate return delegate?.resolve(column) ?: -1 } @@ -107,4 +105,15 @@ public abstract class CompositeTableReader : TableReader { } override fun toString(): String = "CompositeTableReader" + + /** + * Try to obtain the initial delegate. + */ + private fun tryStart() { + if (!hasStarted) { + assert(delegate == null) { "Duplicate initialization" } + delegate = nextReader() + hasStarted = true + } + } } |
