1/*
2 * BCJOptions
3 *
4 * Author: Lasse Collin <lasse.collin@tukaani.org>
5 *
6 * This file has been put into the public domain.
7 * You can do whatever you want with this file.
8 */
9
10package org.tukaani.xz;
11
12abstract class BCJOptions extends FilterOptions {
13    private final int alignment;
14    int startOffset = 0;
15
16    BCJOptions(int alignment) {
17        this.alignment = alignment;
18    }
19
20    /**
21     * Sets the start offset for the address conversions.
22     * Normally this is useless so you shouldn't use this function.
23     * The default value is <code>0</code>.
24     */
25    public void setStartOffset(int startOffset)
26            throws UnsupportedOptionsException {
27        if ((startOffset & (alignment - 1)) != 0)
28            throw new UnsupportedOptionsException(
29                    "Start offset must be a multiple of " + alignment);
30
31        this.startOffset = startOffset;
32    }
33
34    /**
35     * Gets the start offset.
36     */
37    public int getStartOffset() {
38        return startOffset;
39    }
40
41    public int getEncoderMemoryUsage() {
42        return SimpleOutputStream.getMemoryUsage();
43    }
44
45    public int getDecoderMemoryUsage() {
46        return SimpleInputStream.getMemoryUsage();
47    }
48
49    public Object clone() {
50        try {
51            return super.clone();
52        } catch (CloneNotSupportedException e) {
53            assert false;
54            throw new RuntimeException();
55        }
56    }
57}
58