C++ to OpenCL C Source-to-source Translation