io.deephaven.engine.table.impl.util.freezeby.CharFreezeByHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of deephaven-engine-table Show documentation
Show all versions of deephaven-engine-table Show documentation
Engine Table: Implementation and closely-coupled utilities
/**
* Copyright (c) 2016-2022 Deephaven Data Labs and Patent Pending
*/
package io.deephaven.engine.table.impl.util.freezeby;
import io.deephaven.chunk.attributes.ChunkLengths;
import io.deephaven.chunk.attributes.ChunkPositions;
import io.deephaven.chunk.attributes.Values;
import io.deephaven.engine.table.WritableColumnSource;
import io.deephaven.engine.table.impl.sources.CharacterArraySource;
import io.deephaven.chunk.*;
import io.deephaven.engine.rowset.RowSequence;
import io.deephaven.engine.rowset.chunkattributes.RowKeys;
class CharFreezeByHelper implements FreezeByOperator.FreezeByHelper {
private final CharacterArraySource resultSource;
private final FreezeByCountOperator rowCount;
CharFreezeByHelper(WritableColumnSource resultSource, FreezeByCountOperator rowCount) {
this.resultSource = (CharacterArraySource)resultSource;
this.rowCount = rowCount;
}
@Override
public void addChunk(Chunk extends Values> values, IntChunk startPositions, IntChunk destinations, IntChunk length) {
final CharChunk asChar = values.asCharChunk();
for (int ii = 0; ii < startPositions.size(); ++ii) {
final int position = startPositions.get(ii);
final int destination = destinations.get(position);
// if there is just row churn for a key, we don't want to re-snapshot the value (adds/removes just get ignored)
if (rowCount.wasDestinationEmpty(destination)) {
resultSource.set(destination, asChar.get(position));
}
}
}
@Override
public void addChunk(Chunk extends Values> values, long destination) {
if (rowCount.wasDestinationEmpty(destination)) {
final CharChunk asChar = values.asCharChunk();
resultSource.set(destination, asChar.get(0));
}
}
@Override
public void clearIndex(RowSequence removed) {
// region clearIndex
// endregion clearIndex
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy