| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | /// @file openvdb_ax/Exceptions.h | ||
| 5 | /// | ||
| 6 | /// @authors Nick Avramoussis, Richard Jones | ||
| 7 | /// | ||
| 8 | /// @brief OpenVDB AX Exceptions | ||
| 9 | /// | ||
| 10 | |||
| 11 | #ifndef OPENVDB_AX_EXCEPTIONS_HAS_BEEN_INCLUDED | ||
| 12 | #define OPENVDB_AX_EXCEPTIONS_HAS_BEEN_INCLUDED | ||
| 13 | |||
| 14 | #include <openvdb/version.h> | ||
| 15 | #include <openvdb/Exceptions.h> | ||
| 16 | |||
| 17 | #include <sstream> | ||
| 18 | #include <string> | ||
| 19 | |||
| 20 | namespace openvdb { | ||
| 21 | OPENVDB_USE_VERSION_NAMESPACE | ||
| 22 | namespace OPENVDB_VERSION_NAME { | ||
| 23 | |||
| 24 | #define OPENVDB_AX_EXCEPTION(_classname) \ | ||
| 25 | class _classname: public Exception \ | ||
| 26 | { \ | ||
| 27 | public: \ | ||
| 28 | _classname() noexcept: Exception( #_classname ) {} \ | ||
| 29 | explicit _classname(const std::string& msg) noexcept: Exception( #_classname , &msg) {} \ | ||
| 30 | } | ||
| 31 | |||
| 32 | // @note: Compilation errors due to invalid AX code should be collected using a separate logging system. | ||
| 33 | // These errors are only thrown upon encountering fatal errors within the compiler/executables themselves | ||
| 34 | ✗ | OPENVDB_AX_EXCEPTION(AXTokenError); | |
| 35 | 10 | OPENVDB_AX_EXCEPTION(AXSyntaxError); | |
| 36 | 1 | OPENVDB_AX_EXCEPTION(AXCodeGenError); | |
| 37 | 19 | OPENVDB_AX_EXCEPTION(AXCompilerError); | |
| 38 | 7 | OPENVDB_AX_EXCEPTION(AXExecutionError); | |
| 39 | |||
| 40 | #undef OPENVDB_AX_EXCEPTION | ||
| 41 | |||
| 42 | } // namespace OPENVDB_VERSION_NAME | ||
| 43 | } // namespace openvdb | ||
| 44 | |||
| 45 | #endif // OPENVDB_AX_EXCEPTIONS_HAS_BEEN_INCLUDED | ||
| 46 | |||
| 47 |