private int computeOffsetsTable()

in java/src/main/java/com/epam/deltix/zstd/ZstdFrameDecompressor.java [608:633]


    private int computeOffsetsTable(final int offsetCodesType, final ByteBuffer inputBase, int input, final int inputLimit) {
        switch (offsetCodesType) {
            case SET_RLE:
                verify(input < inputLimit, input, "Not enough input bytes");

                final byte value = inputBase.get(input++);
                verify(value <= MAX_OFFSET_CODE_SYMBOL, input, "Value exceeds expected maximum value");

                FseTableReader.buildRleTable(offsetCodesTable, value);
                currentOffsetCodesTable = offsetCodesTable;
                break;
            case SET_BASIC:
                currentOffsetCodesTable = DEFAULT_OFFSET_CODES_TABLE;
                break;
            case SET_REPEAT:
                verify(currentOffsetCodesTable != null, input, "Expected match length table to be present");
                break;
            case SET_COMPRESSED:
                input += fse.readFseTable(offsetCodesTable, inputBase, input, inputLimit, MAX_OFFSET_CODE_SYMBOL, OFFSET_CODES_FSE_LOG);
                currentOffsetCodesTable = offsetCodesTable;
                break;
            default:
                throw fail(input, "Invalid offset code encoding type");
        }
        return input;
    }