Each compression method can be used by running the following command:
$ ./app -m COMPRESSION_FUNCTION_NAME -i dataIn -o dataOut
List of available parameters can be obtained by running the following command:
$ ./app -m COMPRESSION_FUNCTION_NAME -p ?
Note: Detailed notes for the compression methods can be found in the following papers:
This part contains the main information necessary to implement new compression method. However, some information may not be stated here, so please refer to the following publications:
Adding implementations of new compression methods to the ExCom library is currently not very straightforward. Suppose we want to add new compression method called XYZ. Here is a list of actions that need to be performed.
lib/method/xyz
. Implement the main class CompXYZ
, derived from
CompModule
, and store the source code in this directory. The directory should also
contain other files related to the implementation, like its license or a Readme file.AUTHORS
file.method/xyz/libmetxyz.la
to the libexcom_la_LIBADD
variable in the template
file lib/Makefile.am
.xyz
to the SUBDIRS
variable in lib/method/Makefile.am
.lib/method/xyz/Makefile.am
template file. It should be similar to other
lib/method/xyz/Makefile
into the AC_CONFIG_FILES
in the configure.ac
file.Makefile.am files
.
EXCOM_MET_XYZ
in the excom_method_e
enum in excom.h
.
Also, at the end of this file, add enumerations of named constants of the method's
parameters.CompXYZ
is declared, if the module
has multiple header files) in lib/main.cpp
. If this header file is called xyz.hpp
, the
inclusion will look like this:#include "method/xyz/xyz.hpp"
else if
branch in the implementation of the exc_compModule
function
in lib/main.cpp
.#ifdef METHOD_XYZ else if (method == EXCOM_MET_XYZ) { comp = new CompXYZ(handle); } #endif
AC_ARG_ENABLE([xyz], [ --disable-xyz turn off XYZ compression method], [case "${enableval}" in yes) xyz=true;; no) xyz=false;; *) AC_MSG_ERROR([bad value ${enableval} for --disable-xyz]);; esac], [xyz=true]) AM_CONDITIONAL([METHOD_XYZ], [test x$xyz = xtrue])
$(REL)/method/xyz/libmetxyz.la