42 lines
799 B
C
42 lines
799 B
C
|
#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
|
||
|
|