#ifndef __ERROR_CLASS_H__
#define __ERROR_CLASS_H__

#include <iostream>
#include <string>
#include <stdio.h>
//デバッグ用
#define		DBG(a)			printf("%s\n", #a);
#define		NL(a)			for(int i=0; i<a; ++i)getchar();
#if 0	//コンストラクタ・デストラクタのの呼び出しを表示
#define		__CONSTRUCTOR	std::cerr << __FUNCTION__ << std::endl;
#define		__DESTRUCTOR	std::cerr << __FUNCTION__ << std::endl;
#else
#define		__CONSTRUCTOR	
#define		__DESTRUCTOR	
#endif


//! 例外処理用のクラス.
/*! throwで投げられたステータスなどを受け取って対応するエラーメッセージを取得する. */
class errorClass
{
private:
protected:
	std::string	err_msg;		//!< 例外を投げたときのメッセージを格納.
	std::string	err_func;		//!< 例外を投げたときの関数名を格納.
public:

private:
protected:
public:
	errorClass();
	errorClass(const std::string &function); 
	errorClass(const std::string &a_msg, const std::string &function);
	~errorClass();

	virtual void			showErrMsg()	const;
// ゲッター
	const	std::string		msg()			const;
	const	char*			msgC()			const;
	const	std::string		errFunc()		const;
	const	char*			errFuncC()		const;
};
#endif
