49 lines
1.1 KiB
Java
49 lines
1.1 KiB
Java
/*
|
|
* BCJEncoder
|
|
*
|
|
* Author: Lasse Collin <lasse.collin@tukaani.org>
|
|
*
|
|
* This file has been put into the public domain.
|
|
* You can do whatever you want with this file.
|
|
*/
|
|
|
|
package org.tukaani.xz;
|
|
|
|
class BCJEncoder extends BCJCoder implements FilterEncoder {
|
|
private final BCJOptions options;
|
|
private final long filterID;
|
|
private final byte[] props;
|
|
|
|
BCJEncoder(BCJOptions options, long filterID) {
|
|
assert isBCJFilterID(filterID);
|
|
int startOffset = options.getStartOffset();
|
|
|
|
if (startOffset == 0) {
|
|
props = new byte[0];
|
|
} else {
|
|
props = new byte[4];
|
|
for (int i = 0; i < 4; ++i)
|
|
props[i] = (byte)(startOffset >>> (i * 8));
|
|
}
|
|
|
|
this.filterID = filterID;
|
|
this.options = (BCJOptions)options.clone();
|
|
}
|
|
|
|
public long getFilterID() {
|
|
return filterID;
|
|
}
|
|
|
|
public byte[] getFilterProps() {
|
|
return props;
|
|
}
|
|
|
|
public boolean supportsFlushing() {
|
|
return false;
|
|
}
|
|
|
|
public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
|
|
return options.getOutputStream(out);
|
|
}
|
|
}
|