//******---------------
//	File			Assert.cpp
//	Comment		アサートヘッダファイル
//	Auther		TOMOHIRO KOUNO
//	Create		2014/01/04
//******---------------

/*---------------------------------
//	インクルードファイル
---------------------------------*/
#include <stdio.h>
#include <Windows.h>
#include "Assert.h"

void MyAssert(char *pExp, char *pFileName, int nLine, char *pFormat,... )
{
	
	const int STRSIZE = 125 ;
	char aStr[ STRSIZE ];		//表示文字列
	char aStrResult[ 512 ];		//最終結果文字列
	va_list args;				//引数

	//表示文字列作成
	va_start( args,pFormat );
	_vsnprintf_s( &aStr[0], sizeof(aStr), _TRUNCATE, pFormat,args );
	va_end( args );

	sprintf( &aStrResult[0],"!!!!ASSERT ERROR!!!! \n Expression %s , \nMessage <%s>\nMessage <%s>\n ErrorFile :%s => LINE:%d\n",pExp,&aStr[0],pFileName, nLine );

	//出力実行!
	/* あとはここをprintfのするかWinmessageにするかの違いくらいしかない*/
	//printf("!!!!ASSERT ERROR!!!! \n Expression %s , \nMessage <%s>\nMessage <%s>\n ErrorFile :%s => LINE:%d\n",pExp,&aStr[0],pFileName, nLine );
	

	//デバッガに出力することでエラー一文のコピーペーストが出来る
	#ifdef OUTPUT_ASSERT_STRING
		OutputDebugString(&aStrResult[ 0 ]);
	#endif
	
	//メッセージボックスに出すとプログラマにとって,状況を把握しやすい
	#ifdef OUTPUT_ASSERT_BOX
		MessageBox(NULL,aStrResult,"ASSERT ERROR",MB_OK);
	#endif

}
//End of File
