1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_core_util_ZBlock_hpp
10 #define anna_core_util_ZBlock_hpp
12 #include <anna/core//DataBlock.hpp>
17 Facilita la compresión y descompresión de bloques de datos.
19 Para más información: \see http://zlib.net/manual.html
21 Para optimizar el acceso no se ha establecido ningun tipo de proteccion para ejecucion MT.
23 class ZBlock : public DataBlock {
26 * Nivel de compresión que pueden ser aplicados.
28 struct Mode { enum _v { Default = -1, NoCompression, BestSpeed = 1, BestCompression = 9 }; };
33 ZBlock() : DataBlock(true) {;}
36 * Comprime el contenido del bloque de datos recibido como parámetro y lo guarda
37 * en la estructura interna.
38 * \param data Bloque de datos a comprimir.
39 * \param mode Modo de compresión realizado.
40 * \return El bloque de datos una vez comprimido y con la información suficiente para ser descomprimido.
42 const DataBlock& compress(const DataBlock& data, const Mode::_v mode = Mode::Default) throw(RuntimeException);
45 * Descomprime el bloque de datos recibido como parámetro.
46 * \param zdata Bloque de datos obtenido como resultado de aplicar con ZBlock::compress.
47 * \param originalSize Tamaño original que tenía el buffer antes de ser comprimido.
48 * \return El bloque de datos descomprimdo.
50 const DataBlock& uncompress(const DataBlock& zdata) throw(RuntimeException);
53 ZBlock(const ZBlock&);