/*!	@file
	@brief	Maidライブラリの中で扱う文字列クラス
\n			Maidの中ではこれ以外の文字列が存在することはありません
*/

#ifndef mstring_h
#define mstring_h

#include"../Setup/CompileMode.h"

#include<string>
#include<ostream>


namespace Maid
{


	/*!	
		@brief	文字列クラス
	\n			文字コードは S-JIS と一緒で、１文字当たり32bit使用してます。
	\n			1文字ごとのエンディアンはコンパイラ依存です
	\n			そうゆうわけで物理メモリ上に存在しているときだけ有効な文字クラスです
	\n			ファイルに書き出すときは必ずSJISなどに変換すること
	\n			文字コード名はM-JIS としておきます。
	\n			各種文字コードとの変換は CString.h を参照
	*/
	class mstring : public MySTL::basic_string<unt32>
	{
	public:
		mstring() : basic_string<unt32>(){}

		mstring( const MySTL::basic_string<unt32>& str ) : basic_string<unt32>(str) {}
		enum
		{
			CODE_LF = 0x0000000A,			//!<	'\r'
			CODE_CR = 0x0000000D,			//!<	'\n'
			CODE_BACKSLASH = 0x0000005C,	//!<	'\\'
			CODE_SLASH = 0x0000002F,		//!<	'/'
			CODE_SPACE = 0x00000020,		//!<	' '
		};
	};

	//!	ストリーム出力用オペレータ
	MySTL::ostream& operator<<(MySTL::ostream& out, const mstring& a);

	mstring ConvertSJIStoMAID( const MySTL::string& str );

	//!	ソースに文字列を埋め込むときに変換するコンバータ
	#define MAIDTEXT( t ) (Maid::ConvertSJIStoMAID((t)))

}



#endif