From a15cf65c44d5c224169c32ef5495b68c758134b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 18 May 2014 16:08:14 +0200 Subject: Imported Upstream version 3.3.0.2 --- .../cxx/tree/embedded/grammar-input-stream.hxx | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx (limited to 'xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx') diff --git a/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx b/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx new file mode 100644 index 0000000..a1b73c6 --- /dev/null +++ b/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx @@ -0,0 +1,53 @@ +// file : examples/cxx/tree/embedded/grammar-input-stream.hxx +// author : Boris Kolpackov +// copyright : not copyrighted - public domain + +#ifndef GRAMMAR_INPUT_STREAM_HXX +#define GRAMMAR_INPUT_STREAM_HXX + +#include +#include + +// Memory buffer input stream with the special-purpose schema +// grammar decompression. +// +class grammar_input_stream: public xercesc::BinInputStream +{ +public : + grammar_input_stream (const XMLByte* data, std::size_t size); + +#if _XERCES_VERSION >= 30000 + + virtual XMLFilePos + curPos () const; + + virtual XMLSize_t + readBytes (XMLByte* const buf, const XMLSize_t size); + + virtual const XMLCh* + getContentType () const; + +#else + + virtual unsigned int + curPos () const; + + virtual unsigned int + readBytes (XMLByte* const buf, const unsigned int size); + +#endif + +private : + const XMLByte* data_; + std::size_t size_; + std::size_t pos_; + std::size_t vpos_; + + // Compression data. + // + size_t cseq_; // Number of bytes left in a compression sequence. + bool alt_; // Alternating or sequential sequence. + bool add_zero_; // Add a zero on the next read. +}; + +#endif // GRAMMAR_INPUT_STREAM_HXX -- cgit v1.2.3