All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.deephaven.engine.table.impl.by.alternatingcolumnsource.CharAlternatingColumnSourceUnorderedMergeKernel Maven / Gradle / Ivy

There is a newer version: 0.37.1
Show newest version
/**
 * Copyright (c) 2016-2022 Deephaven Data Labs and Patent Pending
 */
package io.deephaven.engine.table.impl.by.alternatingcolumnsource;

import io.deephaven.chunk.*;
import io.deephaven.chunk.attributes.Values;
import io.deephaven.engine.rowset.chunkattributes.RowKeys;

import static io.deephaven.engine.table.impl.by.alternatingcolumnsource.AlternatingColumnSource.ALTERNATE_SWITCH_MASK;

public class CharAlternatingColumnSourceUnorderedMergeKernel implements AlternatingColumnSourceUnorderedMergeKernel {
    public static CharAlternatingColumnSourceUnorderedMergeKernel INSTANCE = new CharAlternatingColumnSourceUnorderedMergeKernel();

    // static use only
    private CharAlternatingColumnSourceUnorderedMergeKernel() {}

    @Override
    public void mergeContext(WritableChunk dest, LongChunk outerKeys, Chunk src, int alternatePosition) {
        final WritableCharChunk destAsChar = dest.asWritableCharChunk();
        final CharChunk srcAsChar = src.asCharChunk();

        // now merge them together
        int mainPosition = 0;
        destAsChar.setSize(outerKeys.size());
        for (int ii = 0; ii < outerKeys.size(); ++ii) {
            final long outerKey = outerKeys.get(ii);
            if ((outerKey & ALTERNATE_SWITCH_MASK) == 0) {
                destAsChar.set(ii, srcAsChar.get(mainPosition++));
            } else {
                destAsChar.set(ii, srcAsChar.get(alternatePosition++));
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy