#ifndef __MYU_WINDOWS_LIBRARY__mwlcommon_H__
#define __MYU_WINDOWS_LIBRARY__mwlcommon_H__

#include "msl.h"
#include <windows.h>

using namespace msl;

//	NULLチェック付きCloseHandle
#define SAFE_CLOSE_HANDLE(h)	{if ( h != NULL ){ CloseHandle(h); h=NULL; }}

//	BOOL型を反転
inline BOOL BOOL_REVERSE( BOOL b ){ if(b)return FALSE;else return TRUE;}
inline BOOL BOOL_TO_WINBOOL( bool b ){ return b ? TRUE : FALSE; }
inline bool WINBOOL_TO_BOOL( BOOL b ){ return b ? true : false; }

#define NSMWL_START	namespace mwl{
#define NSMWL_END	}


//////////////////////////////////////////////

//	メッセージの最大
#define MYU_DETAIL_MSG_MAX		(1024)

//	クラス宣言
class CMyuDetailMsgBase
{
protected:
	//	詳細ログメッセージ保持
	char m_detail_message[MYU_DETAIL_MSG_MAX];
	void print_msg( const char* message, ... )
	{
		va_list vl;
		va_start( vl, message );
		vsnprintf( m_detail_message, sizeof(m_detail_message), message, vl );
		va_end( vl );
	}

public:
	//	コンストラクタ・デストラクタ
	CMyuDetailMsgBase(){ clear_last_detail_message(); }
	virtual ~CMyuDetailMsgBase(){}

	//	詳細ログメッセージを取得
	const char* get_last_detail_message() { return m_detail_message; }

	//	メッセージをクリアする
	void clear_last_detail_message(){
		ZeroMemory( m_detail_message, sizeof(m_detail_message) );
	}
};

#endif//__MYU_WINDOWS_LIBRARY__mwlcommon_H__
