Home | History | Annotate | Download | only in common
      1 /*-------------------------------------------------------------------------
      2  * drawElements Quality Program Tester Core
      3  * ----------------------------------------
      4  *
      5  * Copyright 2014 The Android Open Source Project
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *      http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  *
     19  *//*!
     20  * \file
     21  * \brief Basic definitions.
     22  *//*--------------------------------------------------------------------*/
     23 
     24 #include "tcuDefs.hpp"
     25 #include "deFilePath.hpp"
     26 #include "qpDebugOut.h"
     27 
     28 #include <sstream>
     29 #include <stdarg.h>
     30 
     31 namespace tcu
     32 {
     33 
     34 void die (const char* format, ...)
     35 {
     36 	va_list args;
     37 	va_start(args, format);
     38 	qpDiev(format, args);
     39 	va_end(args);
     40 }
     41 
     42 void print (const char* format, ...)
     43 {
     44 	va_list args;
     45 	va_start(args, format);
     46 	qpPrintv(format, args);
     47 	va_end(args);
     48 }
     49 
     50 static std::string formatError (const char* message, const char* expr, const char* file, int line)
     51 {
     52 	std::ostringstream msg;
     53 	msg << (message ? message : "Runtime check failed");
     54 
     55 	if (expr)
     56 		msg << ": '" << expr << '\'';
     57 
     58 	if (file)
     59 		msg << " at " << de::FilePath(file).getBaseName() << ":" << line;
     60 
     61 	return msg.str();
     62 }
     63 
     64 Exception::Exception (const char* message, const char* expr, const char* file, int line)
     65 	: std::runtime_error(formatError(message, expr, file, line))
     66 	, m_message			(message ? message : "Runtime check failed")
     67 {
     68 }
     69 
     70 Exception::Exception (const std::string& message)
     71 	: std::runtime_error(message)
     72 	, m_message			(message)
     73 {
     74 }
     75 
     76 TestError::TestError (const char* message, const char* expr, const char* file, int line)
     77 	: Exception(message, expr, file, line)
     78 {
     79 }
     80 
     81 TestError::TestError (const std::string& message)
     82 	: Exception(message)
     83 {
     84 }
     85 
     86 InternalError::InternalError (const char* message, const char* expr, const char* file, int line)
     87 	: Exception(message, expr, file, line)
     88 {
     89 }
     90 
     91 InternalError::InternalError (const std::string& message)
     92 	: Exception(message)
     93 {
     94 }
     95 
     96 ResourceError::ResourceError (const char* message, const char* expr, const char* file, int line)
     97 	: Exception(message, expr, file, line)
     98 {
     99 }
    100 
    101 ResourceError::ResourceError (const std::string& message)
    102 	: Exception(message)
    103 {
    104 }
    105 
    106 NotSupportedError::NotSupportedError (const char* message, const char* expr, const char* file, int line)
    107 	: Exception(message, expr, file, line)
    108 {
    109 }
    110 
    111 NotSupportedError::NotSupportedError (const std::string& message)
    112 	: Exception(message)
    113 {
    114 }
    115 
    116 } // namespace tcu
    117