HDK
error.h
Go to the documentation of this file.
1 //
3 //
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
17 //
18 // Unless required by applicable law or agreed to in writing, software
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_BASE_ARCH_ERROR_H
25 #define PXR_BASE_ARCH_ERROR_H
26
27 /// \file arch/error.h
28 /// \ingroup group_arch_Diagnostics
29 /// Low-level fatal error reporting.
30
31 #include "pxr/pxr.h"
32 #include "pxr/base/arch/api.h"
33 #include "pxr/base/arch/defines.h"
35 #include <stddef.h>
36
38
39 /// Print message to standard error and abort program.
40 ///
41 /// \param msg The reason for the failure.
42 /// \param funcName The name of the function that \c Arch_Error was called from.
43 /// \param lineNo The line number of the file that \c Arch_Error was called from.
44 /// \param fileName The name of the file that \c Arch_Error was called from.
45 ///
46 /// \private
47 [[noreturn]]
49 void Arch_Error(const char* msg, const char* funcName,
50  size_t lineNo, const char* fileName);
51
52 /// Print warning message to standard error, but continue execution.
53 ///
54 /// \param msg The reason for the warning.
55 /// \param funcName The name of the function that \c Arch_Warning was called from.
56 /// \param lineNo The line number of the file that \c Arch_Warning was called from.
57 /// \param fileName The name of the file that \c Arch_Warning was called from.
58 ///
59 /// \private
61 void Arch_Warning(const char* msg, const char* funcName,
62  size_t lineNo, const char* fileName);
63
65 ///@{
66
67 /// Unconditionally aborts the program.
68 ///
69 /// \param msg is a literal string, a \c const \c char* (but not
70 /// an \c std::string) that describes why the program is aborting.
71 /// \hideinitializer
72 #define ARCH_ERROR(msg) \
73  Arch_Error(msg, __ARCH_FUNCTION__, __LINE__, __ARCH_FILE__)
74
75 /// Prints a warning message to stderr.
76 ///
77 /// \param msg is a literal string, a \c const \c char* (but not
78 /// an \c std::string).
79 /// \hideinitializer
80 #define ARCH_WARNING(msg) \
81  Arch_Warning(msg, __ARCH_FUNCTION__, __LINE__, __ARCH_FILE__)
82
83 /// Aborts the program if \p cond evaluates to false.
84 /// \hideinitializer
85 #define ARCH_AXIOM(cond) \
86  if (!(cond)) ARCH_ERROR("[" #cond "] axiom failed")
87
88 ///@}
89
91
92 #endif // PXR_BASE_ARCH_ERROR_H
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1394
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
#define ARCH_API
Definition: api.h:40