24#ifndef PXR_BASE_TF_DIAGNOSTIC_LITE_H
25#define PXR_BASE_TF_DIAGNOSTIC_LITE_H
44#include "pxr/base/tf/api.h"
45#include "pxr/base/arch/buildMode.h"
51PXR_NAMESPACE_OPEN_SCOPE
56 TF_DIAGNOSTIC_INVALID_TYPE = 0,
57 TF_DIAGNOSTIC_CODING_ERROR_TYPE,
58 TF_DIAGNOSTIC_FATAL_CODING_ERROR_TYPE,
59 TF_DIAGNOSTIC_RUNTIME_ERROR_TYPE,
60 TF_DIAGNOSTIC_FATAL_ERROR_TYPE,
61 TF_DIAGNOSTIC_NONFATAL_ERROR_TYPE,
62 TF_DIAGNOSTIC_WARNING_TYPE,
63 TF_DIAGNOSTIC_STATUS_TYPE,
64 TF_APPLICATION_EXIT_TYPE,
70struct Tf_DiagnosticLiteHelper {
71 constexpr Tf_DiagnosticLiteHelper(TfCallContext
const &context,
78 TF_API
void IssueError(
81 TF_API
void IssueFatalError(
83 TF_API
void IssueWarning(
85 TF_API
void IssueStatus(
89 TfCallContext _context;
93#define TF_CODING_ERROR \
94 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
95 TF_DIAGNOSTIC_CODING_ERROR_TYPE).IssueError
97#define TF_CODING_WARNING \
98 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
99 TF_DIAGNOSTIC_CODING_ERROR_TYPE).IssueWarning \
101#define TF_FATAL_CODING_ERROR \
102 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
103 TF_DIAGNOSTIC_CODING_ERROR_TYPE).IssueFatalError
105#define TF_RUNTIME_ERROR \
106 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
107 TF_DIAGNOSTIC_RUNTIME_ERROR_TYPE).IssueError
109#define TF_FATAL_ERROR \
110 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
111 TF_DIAGNOSTIC_FATAL_ERROR_TYPE).IssueFatalError
113#define TF_DIAGNOSTIC_FATAL_ERROR \
114 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
115 TF_DIAGNOSTIC_RUNTIME_ERROR_TYPE).IssueFatalError
117#define TF_DIAGNOSTIC_NONFATAL_ERROR \
118 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
119 TF_DIAGNOSTIC_WARNING_TYPE).IssueWarning
121#define TF_DIAGNOSTIC_WARNING \
122 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT.Hide(), \
123 TF_DIAGNOSTIC_WARNING_TYPE).IssueWarning
126 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
127 TF_DIAGNOSTIC_WARNING_TYPE).IssueWarning
130 Tf_DiagnosticLiteHelper(TF_CALL_CONTEXT, \
131 TF_DIAGNOSTIC_STATUS_TYPE).IssueStatus
134Tf_AxiomHelper(
bool val, TfCallContext
const &ctx,
char const *txt) {
135 return (ARCH_LIKELY(val)) ? true :
136 (Tf_DiagnosticLiteHelper(ctx, TF_DIAGNOSTIC_FATAL_ERROR_TYPE).
137 IssueFatalError(
"Failed axiom: ' %s '", txt),
false);
140#define TF_AXIOM(cond) \
141 Tf_AxiomHelper(static_cast<bool>((cond)), TF_CALL_CONTEXT, #cond)
143#define TF_DEV_AXIOM(cond) \
144 Tf_AxiomHelper(!ARCH_DEV_BUILD || \
145 static_cast<bool>((cond)), TF_CALL_CONTEXT, #cond)
149PXR_NAMESPACE_CLOSE_SCOPE
Define function attributes.
#define ARCH_PRINTF_FUNCTION(_fmt, _firstArg)
Macro used to indicate a function takes a printf-like specification.
Functions for recording call locations.
TfDiagnosticType
Enum describing various diagnostic conditions.