Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > ad4af867860cf1de015e1bf4e58e1650 > files > 69

einstein-2.0-1mdv2010.2.i586.rpm

#ifndef __STREAMS_H__
#define __STREAMS_H__


#include <fstream>
#include <list>


/// Read utf-8 file and convert it to wide characters
class UtfStreamReader
{
    private:
        /// Pointer to file stream
        std::ifstream *stream;

        /// Push back buffet
        std::list<wchar_t> backBuf;
    
    public:
        /// Create utf-8 stream reader.
        /// \param stream pointer to file stream.
        UtfStreamReader(std::ifstream *stream);
        
        /// Destructor
        ~UtfStreamReader();

    public:
        /// Read next unicode character.
        wchar_t getNextChar();

        /// Push back character.
        /// \param ch character to push back
        void ungetChar(wchar_t ch);

        /// Check if end of file reached.
        bool isEof();
};


#endif