| /* |
| * FilterOptions |
| * |
| * Authors: Lasse Collin <lasse.collin@tukaani.org> |
| * Igor Pavlov <http://7-zip.org/> |
| * |
| * This file has been put into the public domain. |
| * You can do whatever you want with this file. |
| */ |
| |
| package org.tukaani.xz; |
| |
| import java.io.InputStream; |
| import java.io.IOException; |
| |
| /** |
| * Base class for filter-specific options classes. |
| */ |
| public abstract class FilterOptions implements Cloneable { |
| /** |
| * Gets how much memory the encoder will need with |
| * the given filter chain. This function simply calls |
| * <code>getEncoderMemoryUsage()</code> for every filter |
| * in the array and returns the sum of the returned values. |
| */ |
| public static int getEncoderMemoryUsage(FilterOptions[] options) { |
| int m = 0; |
| |
| for (int i = 0; i < options.length; ++i) |
| m += options[i].getEncoderMemoryUsage(); |
| |
| return m; |
| } |
| |
| /** |
| * Gets how much memory the decoder will need with |
| * the given filter chain. This function simply calls |
| * <code>getDecoderMemoryUsage()</code> for every filter |
| * in the array and returns the sum of the returned values. |
| */ |
| public static int getDecoderMemoryUsage(FilterOptions[] options) { |
| int m = 0; |
| |
| for (int i = 0; i < options.length; ++i) |
| m += options[i].getDecoderMemoryUsage(); |
| |
| return m; |
| } |
| |
| /** |
| * Gets how much memory the encoder will need with these options. |
| */ |
| public abstract int getEncoderMemoryUsage(); |
| |
| /** |
| * Gets a raw (no XZ headers) encoder output stream using these options. |
| * Raw streams are an advanced feature. In most cases you want to store |
| * the compressed data in the .xz container format instead of using |
| * a raw stream. To use this filter in a .xz file, pass this object |
| * to XZOutputStream. |
| */ |
| public abstract FinishableOutputStream getOutputStream( |
| FinishableOutputStream out); |
| |
| /** |
| * Gets how much memory the decoder will need to decompress the data |
| * that was encoded with these options. |
| */ |
| public abstract int getDecoderMemoryUsage(); |
| |
| /** |
| * Gets a raw (no XZ headers) decoder input stream using these options. |
| */ |
| public abstract InputStream getInputStream(InputStream in) |
| throws IOException; |
| |
| abstract FilterEncoder getFilterEncoder(); |
| |
| FilterOptions() {} |
| } |