#include "stdafx.h" struct file_reader_chunk { unsigned char *data; int length; }; class kryTextFileReader { public: kryTextFileReader(char *filename); ~kryTextFileReader(); char *GetLine(); enum file_encoding GetEncoding(); void SetEncoding(enum file_encoding encoding); double GetProgress(); int GetLineNumber(); char *GetFilename(); gboolean Open(char *filename); gboolean Open(); void Close(); protected: char *m_filename; private: void Fill(); gboolean CheckUTF8LineEnding(unsigned char *str, int len, int offset); int m_file_size; int m_dataReturned; int m_dataAvailable; GList *m_chunks; enum file_encoding m_encoding; gboolean m_isEOF; gboolean m_isFirstLine; int m_fd; int m_line; static const int FULL_SIZE = 65535; static const int CHUNK_SIZE = 1024; };