text: /*
  	GPU plot generator for Burst coin.
  	Author: Cryo
  	Bitcoin: 138gMBhCrNkbaiTCmUhP9HLU9xwn5QKZgD
  	Burst: BURST-YA29-QCEW-QXC3-BKXDL
  
  	Based on the code of the official miner and dcct's plotgen.
  */
  
  #include "OpenclError.h"
  
  namespace cryo {
  namespace gpuPlotGenerator {
  
  OpenclError::OpenclError(cl_int p_code, const std::string& p_message)
  : std::runtime_error(p_message), m_code(p_code) {
  }
  
  OpenclError::OpenclError(cl_int p_code, const char* p_message)
  : std::runtime_error(p_message), m_code(p_code) {
  }
  
  OpenclError::OpenclError(const OpenclError& p_other)
  : std::runtime_error(p_other), m_code(p_other.m_code) {
  }
  
  OpenclError::~OpenclError() throw () {}
  
  OpenclError& OpenclError::operator=(const OpenclError& p_other) {
  	std::runtime_error::operator=(p_other);
  
  	m_code = p_other.m_code;
  
  	return *this;
  }
  
  std::string OpenclError::getCodeString() const {
  	switch(m_code) {
  		case 0:		return "CL_SUCCESS";
  		case -1:	return "CL_DEVICE_NOT_FOUND";
  		case -2:	return "CL_DEVICE_NOT_AVAILABLE";
  		case -3:	return "CL_COMPILER_NOT_AVAILABLE";
  		case -4:	return "CL_MEM_OBJECT_ALLOCATION_FAILURE";
  		case -5:	return "CL_OUT_OF_RESOURCES";
  		case -6:	return "CL_OUT_OF_HOST_MEMORY";
  		case -7:	return "CL_PROFILING_INFO_NOT_AVAILABLE";
  		case -8:	return "CL_MEM_COPY_OVERLAP";
  		case -9:	return "CL_IMAGE_FORMAT_MISMATCH";
  		case -10:	return "CL_IMAGE_FORMAT_NOT_SUPPORTED";
  		case -11:	return "CL_BUILD_PROGRAM_FAILURE";
  		case -12:	return "CL_MAP_FAILURE";
  		case -13:	return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
  		case -14:	return "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST";
  		case -30:	return "CL_INVALID_VALUE";
  		case -31:	return "CL_INVALID_DEVICE_TYPE";
  		case -32:	return "CL_INVALID_PLATFORM";
  		case -33:	return "CL_INVALID_DEVICE";
  		case -34:	return "CL_INVALID_CONTEXT";
  		case -35:	return "CL_INVALID_QUEUE_PROPERTIES";
  		case -36:	return "CL_INVALID_COMMAND_QUEUE";
  		case -37:	return "CL_INVALID_HOST_PTR";
  		case -38:	return "CL_INVALID_MEM_OBJECT";
  		case -39:	return "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR";
  		case -40:	return "CL_INVALID_IMAGE_SIZE";
  		case -41:	return "CL_INVALID_SAMPLER";
  		case -42:	return "CL_INVALID_BINARY";
  		case -43:	return "CL_INVALID_BUILD_OPTIONS";
  		case -44:	return "CL_INVALID_PROGRAM";
  		case -45:	return "CL_INVALID_PROGRAM_EXECUTABLE";
  		case -46:	return "CL_INVALID_KERNEL_NAME";
  		case -47:	return "CL_INVALID_KERNEL_DEFINITION";
  		case -48:	return "CL_INVALID_KERNEL";
  		case -49:	return "CL_INVALID_ARG_INDEX";
  		case -50:	return "CL_INVALID_ARG_VALUE";
  		case -51:	return "CL_INVALID_ARG_SIZE";
  		case -52:	return "CL_INVALID_KERNEL_ARGS";
  		case -53:	return "CL_INVALID_WORK_DIMENSION";
  		case -54:	return "CL_INVALID_WORK_GROUP_SIZE";
  		case -55:	return "CL_INVALID_WORK_ITEM_SIZE";
  		case -56:	return "CL_INVALID_GLOBAL_OFFSET";
  		case -57:	return "CL_INVALID_EVENT_WAIT_LIST";
  		case -58:	return "CL_INVALID_EVENT";
  		case -59:	return "CL_INVALID_OPERATION";
  		case -60:	return "CL_INVALID_GL_OBJECT";
  		case -61:	return "CL_INVALID_BUFFER_SIZE";
  		case -62:	return "CL_INVALID_MIP_LEVEL";
  		case -63:	return "CL_INVALID_GLOBAL_WORK_SIZE";
  		default:	return "CL_UNKNOWN";
  	}
  }
  
  }}
  