summaryrefslogtreecommitdiff
path: root/examples/cxx/tree/compression/compressed-input-source.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cxx/tree/compression/compressed-input-source.hxx')
-rw-r--r--examples/cxx/tree/compression/compressed-input-source.hxx121
1 files changed, 0 insertions, 121 deletions
diff --git a/examples/cxx/tree/compression/compressed-input-source.hxx b/examples/cxx/tree/compression/compressed-input-source.hxx
deleted file mode 100644
index 8065445..0000000
--- a/examples/cxx/tree/compression/compressed-input-source.hxx
+++ /dev/null
@@ -1,121 +0,0 @@
-// file : examples/cxx/tree/compression/compressed-input-source.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef COMPRESSED_INPUT_SOURCE_HXX
-#define COMPRESSED_INPUT_SOURCE_HXX
-
-#include <zlib.h>
-
-#include <iosfwd>
-#include <string>
-#include <cstddef> // std::size_t
-#include <exception>
-
-#include <xercesc/sax/InputSource.hpp>
-#include <xercesc/util/BinInputStream.hpp>
-
-struct decompression_failure: std::exception
-{
- explicit
- decompression_failure (int code)
- : code_ (code)
- {
- }
-
- int
- code () const
- {
- return code_;
- }
-
- const char*
- message () const
- {
- return zError (code_);
- }
-
- virtual const char*
- what () const throw ();
-
-private:
- int code_;
-};
-
-// Xerces-C++ InputSource interface implementation with on-the-fly, zlib-
-// based decompression.
-//
-class compressed_input_source: public xercesc::InputSource
-{
-public:
- enum compression_type
- {
- raw,
- zlib,
- gzip
- };
-
- compressed_input_source (std::istream&, compression_type);
-
- compressed_input_source (std::istream&,
- compression_type,
- const std::string& system_id);
-
- compressed_input_source (std::istream&,
- compression_type,
- const std::string& system_id,
- const std::string& public_id);
-
- struct copy {};
-
- // Throws the copy exception if this function is called more than once.
- //
- virtual xercesc::BinInputStream*
- makeStream () const;
-
-private:
- mutable std::istream* is_;
- compression_type type_;
-};
-
-// Xerces-C++ BinInputStream interface implementation with on-the-fly, zlib-
-// based decompression.
-//
-class compressed_input_stream: public xercesc::BinInputStream
-{
-public:
- enum compression_type
- {
- raw,
- zlib,
- gzip
- };
-
- compressed_input_stream (std::istream&, compression_type);
-
- virtual
- ~compressed_input_stream ();
-
- virtual XMLFilePos
- curPos () const;
-
- virtual XMLSize_t
- readBytes (XMLByte* const buf, const XMLSize_t size);
-
- virtual const XMLCh*
- getContentType () const;
-
-private:
- std::size_t
- read ();
-
-private:
- std::istream& is_;
- z_stream zs_;
- bool end_;
-
- static const std::size_t buf_size_ = 65536;
- char in_[buf_size_];
- std::size_t pos_; // Current decompressed stream position.
-};
-
-#endif // COMPRESSED_INPUT_SOURCE_HXX