/** Alternate version that accepts pre-allocated output buffer. */ public static int appendEncoded( ChunkEncoder enc, byte[] input, int inputPtr, int inputLength, byte[] outputBuffer, int outputPtr) { int left = inputLength; int chunkLen = Math.min(LZFChunk.MAX_CHUNK_LEN, left); outputPtr = enc.appendEncodedChunk(input, inputPtr, chunkLen, outputBuffer, outputPtr); left -= chunkLen; // shortcut: if it all fit in, no need to coalesce: if (left < 1) { return outputPtr; } // otherwise need to keep on encoding... inputPtr += chunkLen; do { chunkLen = Math.min(left, LZFChunk.MAX_CHUNK_LEN); outputPtr = enc.appendEncodedChunk(input, inputPtr, chunkLen, outputBuffer, outputPtr); inputPtr += chunkLen; left -= chunkLen; } while (left > 0); return outputPtr; }