/** @brief Trows exceptions that reflect OpenCL error codes */ static void raise_exception(cl_int err) { switch (err) { case CL_DEVICE_NOT_FOUND: throw device_not_found(); case CL_DEVICE_NOT_AVAILABLE: throw device_not_available(); case CL_COMPILER_NOT_AVAILABLE: throw compiler_not_available(); case CL_MEM_OBJECT_ALLOCATION_FAILURE: throw mem_object_allocation_failure(); case CL_OUT_OF_RESOURCES: throw out_of_resources(); case CL_OUT_OF_HOST_MEMORY: throw out_of_host_memory(); case CL_PROFILING_INFO_NOT_AVAILABLE: throw profiling_info_not_available(); case CL_MEM_COPY_OVERLAP: throw mem_copy_overlap(); case CL_IMAGE_FORMAT_MISMATCH: throw image_format_mismatch(); case CL_IMAGE_FORMAT_NOT_SUPPORTED: throw image_format_not_supported(); case CL_BUILD_PROGRAM_FAILURE: throw build_program_failure(); case CL_MAP_FAILURE: throw map_failure(); case CL_INVALID_VALUE: throw invalid_value(); case CL_INVALID_DEVICE_TYPE: throw invalid_device_type(); case CL_INVALID_PLATFORM: throw invalid_platform(); case CL_INVALID_DEVICE: throw invalid_device(); case CL_INVALID_CONTEXT: throw invalid_context(); case CL_INVALID_QUEUE_PROPERTIES: throw invalid_queue_properties(); case CL_INVALID_COMMAND_QUEUE: throw invalid_command_queue(); case CL_INVALID_HOST_PTR: throw invalid_host_ptr(); case CL_INVALID_MEM_OBJECT: throw invalid_mem_object(); case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: throw invalid_image_format_descriptor(); case CL_INVALID_IMAGE_SIZE: throw invalid_image_size(); case CL_INVALID_SAMPLER: throw invalid_sampler(); case CL_INVALID_BINARY: throw invalid_binary(); case CL_INVALID_BUILD_OPTIONS: throw invalid_build_options(); case CL_INVALID_PROGRAM: throw invalid_program(); case CL_INVALID_PROGRAM_EXECUTABLE: throw invalid_program_executable(); case CL_INVALID_KERNEL_NAME: throw invalid_kernel_name(); case CL_INVALID_KERNEL_DEFINITION: throw invalid_kernel_definition(); case CL_INVALID_KERNEL: throw invalid_kernel(); case CL_INVALID_ARG_INDEX: throw invalid_arg_index(); case CL_INVALID_ARG_VALUE: throw invalid_arg_value(); case CL_INVALID_ARG_SIZE: throw invalid_arg_size(); case CL_INVALID_KERNEL_ARGS: throw invalid_kernel_args(); case CL_INVALID_WORK_DIMENSION: throw invalid_work_dimension(); case CL_INVALID_WORK_GROUP_SIZE: throw invalid_work_group_size(); case CL_INVALID_WORK_ITEM_SIZE: throw invalid_work_item_size(); case CL_INVALID_GLOBAL_OFFSET: throw invalid_global_offset(); case CL_INVALID_EVENT_WAIT_LIST: throw invalid_event_wait_list(); case CL_INVALID_EVENT: throw invalid_event(); case CL_INVALID_OPERATION: throw invalid_operation(); case CL_INVALID_GL_OBJECT: throw invalid_gl_object(); case CL_INVALID_BUFFER_SIZE: throw invalid_buffer_size(); case CL_INVALID_MIP_LEVEL: throw invalid_mip_level(); case CL_INVALID_GLOBAL_WORK_SIZE: throw invalid_global_work_size(); #ifdef CL_INVALID_PROPERTY case CL_INVALID_PROPERTY: throw invalid_property(); #endif // return "CL_INVALID_GLOBAL_WORK_SIZE"; default: throw unknown_error(); } } //getErrorString
// Event time Time time(XEvent *ev) { if (ev == 0) { // LessTif 0.79 and Motif 1.1 sometimes pass 0 as event; // provide some reasonable default invalid_event("time"); return CurrentTime; } switch (ev->type) { case KeyPress: case KeyRelease: return ev->xkey.time; case ButtonPress: case ButtonRelease: return ev->xbutton.time; case MotionNotify: return ev->xbutton.time; case EnterNotify: case LeaveNotify: return ev->xcrossing.time; case PropertyNotify: return ev->xproperty.time; case SelectionClear: return ev->xselectionclear.time; case SelectionRequest: return ev->xselectionrequest.time; case SelectionNotify: return ev->xselection.time; default: invalid_event("time"); return CurrentTime; } }
// Event size BoxSize size(XEvent *ev) { if (ev == 0) { // LessTif 0.79 and Motif 1.1 sometimes pass 0 as event; // provide some reasonable default invalid_event("size"); return BoxSize(0, 0); } switch (ev->type) { case Expose: return BoxSize(ev->xexpose.width, ev->xexpose.height); case GraphicsExpose: return BoxSize(ev->xgraphicsexpose.width, ev->xgraphicsexpose.height); case CreateNotify: return BoxSize(ev->xcreatewindow.width, ev->xcreatewindow.height); case ConfigureNotify: return BoxSize(ev->xconfigure.width, ev->xconfigure.height); case ResizeRequest: return BoxSize(ev->xresizerequest.width, ev->xresizerequest.height); case ConfigureRequest: return BoxSize(ev->xconfigurerequest.width, ev->xconfigurerequest.height); default: invalid_event("size"); return BoxSize(0, 0); } }
// Event location BoxPoint point(XEvent *ev) { if (ev == 0) { // LessTif 0.79 and Motif 1.1 sometimes pass 0 as event; // provide some reasonable default invalid_event("point"); return BoxPoint(); } switch (ev->type) { case KeyPress: case KeyRelease: return BoxPoint(ev->xkey.x, ev->xkey.y); case ButtonPress: case ButtonRelease: return BoxPoint(ev->xbutton.x, ev->xbutton.y); case MotionNotify: return BoxPoint(ev->xmotion.x, ev->xmotion.y); case EnterNotify: case LeaveNotify: return BoxPoint(ev->xcrossing.x, ev->xcrossing.y); case Expose: return BoxPoint(ev->xexpose.x, ev->xexpose.y); case GraphicsExpose: return BoxPoint(ev->xgraphicsexpose.x, ev->xgraphicsexpose.y); case CreateNotify: return BoxPoint(ev->xcreatewindow.x, ev->xcreatewindow.y); case ReparentNotify: return BoxPoint(ev->xreparent.x, ev->xreparent.y); case ConfigureNotify: return BoxPoint(ev->xconfigure.x, ev->xconfigure.y); case GravityNotify: return BoxPoint(ev->xgravity.x, ev->xgravity.y); case ConfigureRequest: return BoxPoint(ev->xconfigurerequest.x, ev->xconfigurerequest.y); default: invalid_event("point"); return BoxPoint(); } }