////////////////////////////////////////////////////////////////////////////
// CFileWriter クラスのインタフェース宣言
//
////////////////////////////////////////////////////////////////////////////

#if !defined( FILEWRITER_H_INCLUDED_ )
#define FILEWRITER_H_INCLUDED_

#include "TaEdit_std.h"

#include "LineData.h"
#include "TaEditProcessingDlg.h"
#include "ErrorBool.h"
#include "TaEditDoc.h"


class CFileWriter : public CProcesingObj
{
public:
	CFileWriter();
	~CFileWriter();

	// 情報を設定
	void SetInfo( const string &argFileName, const T_LineData *argData, bool argUseTmpFile );

	// 書き込みスレッドのエントリポイント
	virtual void run();

	// 終了可能か否か
	virtual bool EnableExit() const;

	// 割り込み
	virtual void Interrupt();

	// エラー情報を取得
	CErrorBool GetErrorInfo() const;

	// テンポラリファイルへの保存で失敗したのか否か
	bool GetFaultWithTmpFlg() const;

protected:
	// テンポラリのファイルへ移動
	bool MoveToTmp( const string &argFileName, string *pDestName ) const;

	string FileName;
	const T_LineData *pData;
	volatile bool EnableExitFlg;	// 終了可能か否か
	CErrorBool ErrorInfo;			// エラー情報
	bool InterruptFlg;				// 割り込まれたか否か
	bool UseTmpFile;				// テンポラリのファイルに一旦待避するか否か
	bool FaultWithTmp;				// テンポラリファイルの保存で失敗したのか否か
};

#endif // FILEWRITER_H_INCLUDED_

