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 |
|
|
|