#pragma once

//! @file Mix/IO/IWriter.h
//! @brief ライターインターフェースインクルードファイル

#include "Mix/IO/IStream.h"

namespace Mix{ namespace IO{

	//! @class IWriter
	//! @brief ライターインターフェース
	class IWriter : public Mix::IO::IStream
	{
	protected:
		//! @brief デストラクタ
		virtual ~IWriter( void ){}

	public:
		//! @brief バッファの内容を書き込みます
		//! @param[in] pWriteBuffer 書き込み元バッファ
		//! @param[in] writeSize 書き込むサイズ
		//! @return 実際に書き込んだサイズを返します
		virtual UInt32 Write( const void* pWriteBuffer, UInt32 writeSize ) = 0;
		//! @brief サイズを取得します
		//! @return サイズを返します
		virtual UInt64 GetSize( void ) const = 0;
		//! @brief ファイルパスを取得します
		//! @return ファイルパスを返します
		virtual const wchar_t* GetFilePath( void ) const = 0;
	};

}}
