From cae1319f90bfb88fdac02ed07a38396e7ca4378a Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 19 十二月 2019 15:48:57 +0800
Subject: [PATCH] update
---
goconv/inc/Exceptions.h | 181 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 181 insertions(+), 0 deletions(-)
diff --git a/goconv/inc/Exceptions.h b/goconv/inc/Exceptions.h
new file mode 100644
index 0000000..627bfd9
--- /dev/null
+++ b/goconv/inc/Exceptions.h
@@ -0,0 +1,181 @@
+/**
+ * Copyright 1993-2015 NVIDIA Corporation. All rights reserved.
+ *
+ * Please refer to the NVIDIA end user license agreement (EULA) associated
+ * with this source code for terms and conditions that govern your use of
+ * this software. Any use, reproduction, disclosure, or distribution of
+ * this software and related documentation outside the terms of the EULA
+ * is strictly prohibited.
+ *
+ */
+
+#ifndef NV_UTIL_NPP_EXCEPTIONS_H
+#define NV_UTIL_NPP_EXCEPTIONS_H
+
+
+#include <string>
+#include <sstream>
+#include <iostream>
+
+/// All npp related C++ classes are put into the npp namespace.
+namespace npp
+{
+
+ /// Exception base class.
+ /// This exception base class will be used for everything C++ throught
+ /// the NPP project.
+ /// The exception contains a string message, as well as data fields for a string
+ /// containing the name of the file as well as the line number where the exception was thrown.
+ /// The easiest way of throwing exceptions and providing filename and line number is
+ /// to use one of the ASSERT macros defined for that purpose.
+ class Exception
+ {
+ public:
+ /// Constructor.
+ /// \param rMessage A message with information as to why the exception was thrown.
+ /// \param rFileName The name of the file where the exception was thrown.
+ /// \param nLineNumber Line number in the file where the exception was thrown.
+ explicit
+ Exception(const std::string &rMessage = "", const std::string &rFileName = "", unsigned int nLineNumber = 0)
+ : sMessage_(rMessage), sFileName_(rFileName), nLineNumber_(nLineNumber)
+ { };
+
+ Exception(const Exception &rException)
+ : sMessage_(rException.sMessage_), sFileName_(rException.sFileName_), nLineNumber_(rException.nLineNumber_)
+ { };
+
+ virtual
+ ~Exception()
+ { };
+
+ /// Get the exception's message.
+ const
+ std::string &
+ message()
+ const
+ {
+ return sMessage_;
+ }
+
+ /// Get the exception's file info.
+ const
+ std::string &
+ fileName()
+ const
+ {
+ return sFileName_;
+ }
+
+ /// Get the exceptions's line info.
+ unsigned int
+ lineNumber()
+ const
+ {
+ return nLineNumber_;
+ }
+
+
+ /// Create a clone of this exception.
+ /// This creates a new Exception object on the heap. It is
+ /// the responsibility of the user of this function to free this memory
+ /// (delete x).
+ virtual
+ Exception *
+ clone()
+ const
+ {
+ return new Exception(*this);
+ }
+
+ /// Create a single string with all the exceptions information.
+ /// The virtual toString() method is used by the operator<<()
+ /// so that all exceptions derived from this base-class can print
+ /// their full information correctly even if a reference to their
+ /// exact type is not had at the time of printing (i.e. the basic
+ /// operator<<() is used).
+ virtual
+ std::string
+ toString()
+ const
+ {
+ std::ostringstream oOutputString;
+ oOutputString << fileName() << ":" << lineNumber() << ": " << message();
+ return oOutputString.str();
+ }
+
+ private:
+ std::string sMessage_; ///< Message regarding the cause of the exception.
+ std::string sFileName_; ///< Name of the file where the exception was thrown.
+ unsigned int nLineNumber_; ///< Line number in the file where the exception was thrown
+ };
+
+ /// Output stream inserter for Exception.
+ /// \param rOutputStream The stream the exception information is written to.
+ /// \param rException The exception that's being written.
+ /// \return Reference to the output stream being used.
+ static std::ostream &
+ operator << (std::ostream &rOutputStream, const Exception &rException)
+ {
+ rOutputStream << rException.toString();
+ return rOutputStream;
+ }
+
+ /// Basic assert macro.
+ /// This macro should be used to enforce any kind of pre or post conditions.
+ /// Unlike the C-runtime assert macro, this macro does not abort execution, but throws
+ /// a C++ exception. The exception is automatically filled with information about the failing
+ /// condition, the filename and line number where the exception was thrown.
+ /// \note The macro is written in such a way that omitting a semicolon after its usage
+ /// causes a compiler error. The correct way to invoke this macro is:
+ /// NPP_ASSERT(n < MAX);
+#define NPP_ASSERT(C) do {if (!(C)) throw npp::Exception(#C " assertion faild!", __FILE__, __LINE__);} while(false)
+
+ // ASSERT macro.
+ // Same functionality as the basic assert macro with the added ability to pass
+ // a message M. M should be a string literal.
+ // Note: Never use code inside ASSERT() that causes a side-effect ASSERT macros may get compiled
+ // out in release mode.
+#define NPP_ASSERT_MSG(C, M) do {if (!(C)) throw npp::Exception(#C " assertion faild! Message: " M, __FILE__, __LINE__);} while(false)
+
+#ifdef _DEBUG
+ /// Basic debug assert macro.
+ /// This macro is identical in every respect to NPP_ASSERT(C) but it does get compiled to a
+ /// no-op in release builds. It is therefor of utmost importance to not put statements into
+ /// this macro that cause side effects required for correct program execution.
+#define NPP_DEBUG_ASSERT(C) do {if (!(C)) throw npp::Exception(#C " debug assertion faild!", __FILE__, __LINE__);} while(false)
+#else
+#define NPP_DEBUG_ASSERT(C)
+#endif
+
+ /// ASSERT for null-pointer test.
+ /// It is safe to put code with side effects into this macro. Also: This macro never
+ /// gets compiled to a no-op because resource allocation may fail based on external causes not under
+ /// control of a software developer.
+#define NPP_ASSERT_NOT_NULL(P) do {if ((P) == 0) throw npp::Exception(#P " not null assertion faild!", __FILE__, __LINE__);} while(false)
+
+ /// Macro for flagging methods as not implemented.
+ /// The macro throws an exception with a message that an implementation was missing
+#define NPP_NOT_IMPLEMENTED() do {throw npp::Exception("Implementation missing!", __FILE__, __LINE__);} while(false)
+
+ /// Macro for checking error return code of CUDA (runtime) calls.
+ /// This macro never gets disabled.
+#define NPP_CHECK_CUDA(S) do {cudaError_t eCUDAResult; \
+ eCUDAResult = S; \
+ if (eCUDAResult != cudaSuccess) std::cout << "NPP_CHECK_CUDA - eCUDAResult = " << eCUDAResult << std::endl; \
+ NPP_ASSERT(eCUDAResult == cudaSuccess);} while (false)
+
+ /// Macro for checking error return code for NPP calls.
+#define NPP_CHECK_NPP(S) do {NppStatus eStatusNPP; \
+ eStatusNPP = S; \
+ if (eStatusNPP != NPP_SUCCESS) std::cout << "NPP_CHECK_NPP - eStatusNPP = " << _cudaGetErrorEnum(eStatusNPP) << "("<< eStatusNPP << ")" << std::endl; \
+ NPP_ASSERT(eStatusNPP == NPP_SUCCESS);} while (false)
+
+ /// Macro for checking error return codes from cuFFT calls.
+#define NPP_CHECK_CUFFT(S) do {cufftResult eCUFFTResult; \
+ eCUFFTResult = S; \
+ if (eCUFFTResult != NPP_SUCCESS) std::cout << "NPP_CHECK_CUFFT - eCUFFTResult = " << eCUFFTResult << std::endl; \
+ NPP_ASSERT(eCUFFTResult == CUFFT_SUCCESS);} while (false)
+
+} // npp namespace
+
+#endif // NV_UTIL_NPP_EXCEPTIONS_H
--
Gitblit v1.8.0