#ifndef __CL_ERROR_CLASS_H__
#define __CL_ERROR_CLASS_H__

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif //__APPLE__

#include "errorClass.h"
#include <iostream>
#include <string>
#include <stdlib.h>

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

private:
	void getCLMessage(const cl_int status);
protected:
public:
	clErrorClass();
	clErrorClass(const std::string &a_msg, const std::string &function);
	clErrorClass(const cl_int &status, const std::string &a_msg, const std::string &function); 
	clErrorClass(const cl_int &status, const std::string &function); 
	~clErrorClass();

			void			showErrMsg()	const;
	const	std::string		clMsg()			const;
	const	char*			clMsgC()		const;
};
#endif

