inline static void throwError(Methcla_Error err) { if (methcla_is_error(err)) { if (methcla_error_has_code(err, kMethcla_ArgumentError)) { std::string msg(methcla_error_message(err)); methcla_error_free(err); throw std::invalid_argument(msg); } else if (methcla_error_has_code(err, kMethcla_LogicError)) { std::string msg(methcla_error_message(err)); methcla_error_free(err); throw std::logic_error(msg); } else if (methcla_error_has_code(err, kMethcla_MemoryError)) { methcla_error_free(err); throw std::bad_alloc(); } else { std::string msg( methcla_error_message(err) ? methcla_error_message(err) : methcla_error_code_description(methcla_error_code(err))); methcla_error_free(err); throw std::runtime_error(msg); } } }
inline static void checkReturnCode(Methcla_Error err) { if (err != kMethcla_NoError) { const char* msg = methcla_error_message(err); if (err == kMethcla_ArgumentError) { throw std::invalid_argument(msg); } else if (err == kMethcla_LogicError) { throw std::logic_error(msg); } else if (err == kMethcla_MemoryError) { throw std::bad_alloc(); } else { throw std::runtime_error(msg); } } }