#include "clContextClass.h"

//--------------------------------------------------------
//----------          clContextClass          ------------
//--------------------------------------------------------
// -------------------------------------------------------

// -------------------------------------------------------
//! \brief  コンテキストを作成する関数を呼び出す.
//! \param  device_num デバイスの数.
//! \param  device_id  デバイスのIDのリスト.
//! \return なし.
clContextClass::clContextClass(const cl_device_id device_id)
{try{

	__CONSTRUCTOR;
	cl_int status;
	clcontext = clCreateContext(0,
								1,
								&device_id,
								NULL,
								NULL,
								&status);
	if(status != CL_SUCCESS){
		throw clErrorClass(status, "clCreateContextInfo failed.", __FUNCTION__);
	}

}catch(clErrorClass &err){err.showErrMsg();}catch(...){std::cerr << "fatal error." << std::endl;}}

// -------------------------------------------------------
//! \brief  コンテキストを破棄する.
//! \param  なし.
//! \return なし.
clContextClass::~clContextClass()
{
	__DESTRUCTOR;
	clReleaseContext(this->clcontext);
}

// -------------------------------------------------------
//! \brief  コンテキストを返す.
//! \param	なし.
//! \return コンテキストを返却.
const cl_context clContextClass::getContext() const
{
	return this->clcontext;
}
