#pragma once

class CMyFile
{
	protected:
		FILE *m_f;
		long m_nFileLength;
		CString m_strFileName;
		int m_nTabWidth; //ширина табулятора по умолчанию для заданного типа файла.
		WCHAR BKToUNICODE_Byte(BYTE b);
		BYTE UNICODEtoBK_Byte(WCHAR tch);

	public:
		static const BYTE m_LowRow[32];
		static const WCHAR m_koi8tbl[128];

		CMyFile(const CString &strName);
		virtual ~CMyFile(void);
		virtual CString &getFileName()
		{
			return m_strFileName;
		}
		virtual const int getTabWidth()
		{
			return m_nTabWidth;
		}
		virtual void setTabWidth(int n)
		{
			if (2 <= n && n <= 16)
			{
				m_nTabWidth = n;
			}
		}
		virtual BOOL Open(BOOL bWrite = FALSE); //открытие файла, имя которого задано в конструкторе
		virtual void Close();
		virtual WCHAR ReadChar();
		virtual BYTE ReadByte();
		virtual WORD ReadWord();
		virtual BOOL WriteChar(WCHAR ch);
		virtual BOOL WriteByte(BYTE b);
		virtual fpos_t GetPos();
		virtual int SetPos(fpos_t pos, DWORD mode = SEEK_SET);
		virtual BOOL isEOF();
};

