00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vaucanson/config/system.hh>
00019
00020 #if not defined (VCSN_XML_IOS_HH) and \
00021 (not defined (VCSN_SANITY_CHECK) or defined (VCSN_USE_XML))
00022 # define VCSN_XML_IOS_HH
00023
00024 # ifndef VCSN_USE_XML
00025 # error Vaucanson XML support is disabled.
00026 # endif
00027
00028 # include <xercesc/util/BinInputStream.hpp>
00029 # include <xercesc/sax/InputSource.hpp>
00030 # include <iostream>
00031
00032 namespace vcsn
00033 {
00034 namespace xml
00035 {
00036 class BinCxxInputStream : public xercesc::BinInputStream
00037 {
00038 private:
00039 std::istream* _in;
00040 unsigned int _pos;
00041
00042 public:
00043 BinCxxInputStream(std::istream* in) : _in(in), _pos(0) { }
00044 virtual unsigned int curPos() const;
00045 virtual unsigned readBytes (XMLByte *const toFill,
00046 const unsigned int maxToRead);
00047 };
00048
00049 class CxxInputSource : public xercesc::InputSource
00050 {
00051 private:
00052 std::istream* _in;
00053
00054 public:
00055 CxxInputSource(std::istream* in) : InputSource(), _in(in) {}
00056 virtual BinCxxInputStream* makeStream() const;
00057 };
00058 }
00059 }
00060
00061 # include <vaucanson/xml/ios.hxx>
00062
00063 #endif // ! VCSN_XML_IOS_HH && (! VCSN_SANITY_CHECK || VCSN_USE_XML)