a4753abbf922258776d5ee5b7b3c4d78c6ab17b7
[anna.git] / include / anna / xml / Decompressor.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
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 //
7
8
9 #ifndef anna_xml_Decompressor_hpp
10 #define anna_xml_Decompressor_hpp
11
12 #include <anna/core/util/ZBlock.hpp>
13
14 namespace anna {
15
16 class DataBlock;
17
18 namespace xml {
19
20 class Document;
21
22 /**
23    Obtiene la información original de un documento XML comprimido con una instancia de la clase Compressor.
24
25    \see Compressor
26
27    \warning Esta es una clase bastante pesada, por lo que casi-imprescindible reusar una misma instancia cada vez
28    que se requiera comprimir un documento XML.
29 */
30 class Decompressor : ZBlock {
31 public:
32   /**
33    * Constructor.
34    */
35   Decompressor();
36
37   /**
38    * Destructor.
39    */
40   virtual ~Decompressor();
41
42   /**
43    * Recupera el contenido original del documento XML comprimido con la clase Compressor.
44    * \param dataBlock Bloque de datos obtenido como resultado de invocar a Compressor::apply.
45    * \return El documento XML comprimido en el bloque de datos.
46    */
47   const Document& apply(const DataBlock& dataBlock) throw(RuntimeException);
48
49 private:
50   Document* a_document;
51
52   Decompressor(const Decompressor&);
53 };
54
55 }
56 }
57
58 #endif
59