#include "StdAfx.h"
using namespace std;
#include "BKFile.h"

CBKFile::CBKFile(const wstring &strName)
	: CBaseFile(strName)
{
	m_nTabWidth = 8;
}


CBKFile::~CBKFile(void)
{
	Close();
}

//выход: true - Файл открылся, false - не открылся.
bool CBKFile::Open(bool bWrite)
{
	bool bRet = false;
	wstring strMode;

	if (!bWrite)
	{
		strMode = L"r";
	}
	else
	{
		strMode = L"w";
	}

	m_f = _wfopen(m_strFileName.c_str(), (strMode + L"b").c_str());

	if (m_f) //если файл открылся, то всё нормально
	{
		if (!bWrite)
		{
			fseek(m_f, 0, SEEK_END);
			m_nFileLength = ftell(m_f);
			fseek(m_f, 0, SEEK_SET);
		}

		bRet = true;
	}

	return bRet;
}

wchar_t CBKFile::ReadChar()
{
	unsigned char ch = 0;
	wchar_t tch = 0;

	if (m_f)
	{
		fread(&ch, 1, 1, m_f);
		tch = BKToUNICODE_Byte(ch);
	}

	return tch;
}

bool CBKFile::WriteChar(wchar_t tch)
{
	size_t n = 0;

	if (m_f)
	{
		unsigned char ch = UNICODEtoBK_Byte(tch);
		n = fwrite(&ch, 1, 1, m_f);
	}

	return (n != 0);
}
