Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
 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);
         }
     }
 }