namespace SabreTools.Compression.libmspack.KWAJ
{
///
/// A compressor for the KWAJ file format.
///
/// All fields are READ ONLY.
///
public unsafe class Compressor : BaseCompressor
{
public int[] param { get; private set; } = new int[2];
///
/// Creates a new KWAJ compressor
///
public Compressor()
{
this.system = new mspack_default_system();
this.error = MSPACK_ERR.MSPACK_ERR_OK;
}
///
/// Reads an input file and creates a compressed output file in the
/// KWAJ compressed file format. The KWAJ compression format is quick
/// but gives poor compression. It is possible for the compressed output
/// file to be larger than the input file.
///
///
/// The name of the file to compressed. This is passed
/// passed directly to mspack_system::open()
///
///
/// The name of the file to write compressed data to.
/// This is passed directly to mspack_system::open().
///
///
/// The length of the uncompressed file, or -1 to indicate
/// that this should be determined automatically by using
/// mspack_system::seek() on the input file.
///
/// An error code, or MSPACK_ERR_OK if successful
///
public MSPACK_ERR compress(in string input, in string output, long length) => MSPACK_ERR.MSPACK_ERR_OK;
///
/// Sets an KWAJ compression engine parameter.
///
/// The following parameters are defined:
///
/// - #MSKWAJC_PARAM_COMP_TYPE: the compression method to use. Must
/// be one of #MSKWAJC_COMP_NONE, #MSKWAJC_COMP_XOR, #MSKWAJ_COMP_SZDD
/// or #MSKWAJ_COMP_LZH. The default is #MSKWAJ_COMP_LZH.
///
/// - #MSKWAJC_PARAM_INCLUDE_LENGTH: a boolean; should the compressed
/// output file should include the uncompressed length of the input
/// file in the header? This adds 4 bytes to the size of the output
/// file. A value of zero says "no", non-zero says "yes". The default
/// is "no".
///
/// The parameter to set
/// The value to set the parameter to
///
/// MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there
/// is a problem with either parameter or value.
///
///
public MSPACK_ERR set_param(MSKWAJC_PARAM param, int value) => MSPACK_ERR.MSPACK_ERR_OK;
///
/// Sets the original filename of the file before compression,
/// which will be stored in the header of the output file.
///
/// The filename should be a null-terminated string, it must be an
/// MS-DOS "8.3" type filename (up to 8 bytes for the filename, then
/// optionally a "." and up to 3 bytes for a filename extension).
///
/// If null is passed as the filename, no filename is included in the
/// header. This is the default.
///
/// The original filename to use
///
/// MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if the
/// filename is too long
///
public MSPACK_ERR set_filename(in string filename) => MSPACK_ERR.MSPACK_ERR_OK;
///
/// Sets arbitrary data that will be stored in the header of the
/// output file, uncompressed. It can be up to roughly 64 kilobytes,
/// as the overall size of the header must not exceed 65535 bytes.
/// The data can contain null bytes if desired.
///
/// If null is passed as the data pointer, or zero is passed as the
/// length, no extra data is included in the header. This is the
/// default.
///
/// A pointer to the data to be stored in the header
/// the length of the data in bytes
///
/// MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS extra data
/// is too long
///
public MSPACK_ERR set_extra_data(void* data, int bytes) => MSPACK_ERR.MSPACK_ERR_OK;
///
/// Returns the error code set by the most recently called method.
///
/// The most recent error code
///
public MSPACK_ERR last_error() => MSPACK_ERR.MSPACK_ERR_OK;
}
}