source: josm/trunk/src/org/tukaani/xz/rangecoder/RangeEncoderToBuffer.java@ 13353

Last change on this file since 13353 was 13350, checked in by stoecker, 6 years ago

see #15816 - add XZ support

File size: 1.4 KB
Line 
1/*
2 * RangeEncoderToBuffer
3 *
4 * Authors: Lasse Collin <lasse.collin@tukaani.org>
5 * Igor Pavlov <http://7-zip.org/>
6 *
7 * This file has been put into the public domain.
8 * You can do whatever you want with this file.
9 */
10
11package org.tukaani.xz.rangecoder;
12
13import java.io.OutputStream;
14import java.io.IOException;
15import org.tukaani.xz.ArrayCache;
16
17public final class RangeEncoderToBuffer extends RangeEncoder {
18 private final byte[] buf;
19 private int bufPos;
20
21 public RangeEncoderToBuffer(int bufSize, ArrayCache arrayCache) {
22 buf = arrayCache.getByteArray(bufSize, false);
23 reset();
24 }
25
26 public void putArraysToCache(ArrayCache arrayCache) {
27 arrayCache.putArray(buf);
28 }
29
30 public void reset() {
31 super.reset();
32 bufPos = 0;
33 }
34
35 public int getPendingSize() {
36 // With LZMA2 it is known that cacheSize fits into an int.
37 return bufPos + (int)cacheSize + 5 - 1;
38 }
39
40 public int finish() {
41 // super.finish() cannot throw an IOException because writeByte()
42 // provided in this file cannot throw an IOException.
43 try {
44 super.finish();
45 } catch (IOException e) {
46 throw new Error();
47 }
48
49 return bufPos;
50 }
51
52 public void write(OutputStream out) throws IOException {
53 out.write(buf, 0, bufPos);
54 }
55
56 void writeByte(int b) {
57 buf[bufPos++] = (byte)b;
58 }
59}
Note: See TracBrowser for help on using the repository browser.