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 VCSN_INCLUDE_XML()
00021 # define VCSN_XML_IOS_HH
00022
00023 # ifndef VCSN_USE_XML
00024 # error Vaucanson XML support is disabled.
00025 # endif
00026
00027 # include <xercesc/util/BinInputStream.hpp>
00028 # include <xercesc/sax/InputSource.hpp>
00029 # include <iostream>
00030
00031 namespace vcsn
00032 {
00033 namespace xml
00034 {
00035 class BinCxxInputStream : public xercesc::BinInputStream
00036 {
00037 private:
00038 std::istream* _in;
00039 unsigned int _pos;
00040
00041 public:
00042 BinCxxInputStream(std::istream* in) : _in(in), _pos(0) { }
00043 virtual unsigned int curPos() const;
00044 virtual unsigned readBytes (XMLByte *const toFill,
00045 const unsigned int maxToRead);
00046 };
00047
00048 class CxxInputSource : public xercesc::InputSource
00049 {
00050 private:
00051 std::istream* _in;
00052
00053 public:
00054 CxxInputSource(std::istream* in) : InputSource(), _in(in) {}
00055 virtual BinCxxInputStream* makeStream() const;
00056 };
00057 }
00058 }
00059
00060 # include <vaucanson/xml/ios.hxx>
00061
00062 #endif // ! VCSN_XML_IOS_HH && VCSN_INCLUDE_XML()