#include"CWarning.h"
#include<stdio.h>


namespace Maid
{
//static 	CCriticalSection	s_Section;

	/*!
	 	@class	CWarning CWarning.h
	 	@brief	Warning関数
	 */
	CWarning::CWarning( const char* szFile, int Line ) : m_StreamBuf(szFile,Line), MySTL::ostream(&m_StreamBuf)
	{
	}

	CWarning::StreamBuf::StreamBuf(const char* szFile, int Line)
		: m_FileName(szFile), m_Line(Line)
	{
	}

	CWarning::StreamBuf::~StreamBuf()
	{
		MySTL::string text;

		{
			int len = (int)m_Message.length();
			//	末尾に \n がついてたらはずす
			if( m_Message[len-1]=='\n' ) { --len; }
			text = m_Message.substr(0,len);
		}

		FILE* hFile = ::fopen( "warning.txt", "a" );
		::fprintf( hFile, "%s %d行目 %s\n",text.c_str(), m_Line, m_FileName.c_str() );
		::fclose( hFile );
	}

	MySTL::streambuf::int_type CWarning::StreamBuf::overflow(MySTL::streambuf::int_type iChar) {
		if (iChar != EOF) {
			m_Message += iChar;
		}
		return iChar;   // 出力が成功したことを示す eof 以外を返す。
	}




}