Spaces:
Build error
Build error
// OpenCL SDK includes | |
// STL includes | |
namespace cl { | |
namespace util { | |
// Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 | |
// with error handling | |
UTILSCPP_EXPORT | |
std::string read_text_file(const char* const filename, cl_int* const error) | |
{ | |
std::ifstream in(filename); | |
if (in.good()) | |
{ | |
try | |
{ | |
std::string red((std::istreambuf_iterator<char>(in)), | |
std::istreambuf_iterator<char>()); | |
if (in.good() && in.eof()) | |
{ | |
if (error != nullptr) *error = CL_SUCCESS; | |
return red; | |
} | |
else | |
{ | |
detail::errHandler(CL_UTIL_FILE_OPERATION_ERROR, error, | |
"File read error!"); | |
return std::string(); | |
} | |
} catch (std::bad_alloc& ex) | |
{ | |
detail::errHandler(CL_OUT_OF_RESOURCES, error, | |
"Bad allocation!"); | |
return std::string(); | |
} | |
} | |
else | |
{ | |
detail::errHandler(CL_INVALID_VALUE, error, "No file!"); | |
return std::string(); | |
} | |
} | |
} | |
} | |