diff options
Diffstat (limited to 'sources/shiboken6/libshiboken/sbkerrors.h')
-rw-r--r-- | sources/shiboken6/libshiboken/sbkerrors.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sources/shiboken6/libshiboken/sbkerrors.h b/sources/shiboken6/libshiboken/sbkerrors.h index cc86c10b9..6ff85f8e1 100644 --- a/sources/shiboken6/libshiboken/sbkerrors.h +++ b/sources/shiboken6/libshiboken/sbkerrors.h @@ -7,8 +7,31 @@ #include "sbkpython.h" #include "shibokenmacros.h" +/// Craving for C++20 and std::source_location::current() +#if defined(_MSC_VER) +# define SBK_FUNC_INFO __FUNCSIG__ +#elif defined(__GNUC__) +# define SBK_FUNC_INFO __PRETTY_FUNCTION__ +#else +# define SBK_FUNC_INFO __FUNCTION__ +#endif + namespace Shiboken { + +struct LIBSHIBOKEN_API PythonContextMarker +{ +public: + PythonContextMarker(const PythonContextMarker &) = delete; + PythonContextMarker(PythonContextMarker &&) = delete; + PythonContextMarker &operator=(const PythonContextMarker &) = delete; + PythonContextMarker &operator=(PythonContextMarker &&) = delete; + + explicit PythonContextMarker(); + ~PythonContextMarker(); + void setBlocking(); +}; + namespace Errors { @@ -23,6 +46,15 @@ LIBSHIBOKEN_API void setSequenceTypeError(const char *expectedType); LIBSHIBOKEN_API void setSetterTypeError(const char *name, const char *expectedType); LIBSHIBOKEN_API void setWrongContainerType(); +/// Report an error ASAP: Instead of printing, store for later re-raise. +/// This replaces `PyErr_Print`, which cannot report errors as exception. +/// To be used in contexts where raising errors is impossible. +LIBSHIBOKEN_API void storeErrorOrPrint(); +/// Handle an error as in PyErr_Occurred(), but also check for errors which +/// were captured by `storeErrorOrPrint`. +/// To be used in normal error checks. +LIBSHIBOKEN_API PyObject *occurred(); + } // namespace Errors namespace Warnings @@ -32,6 +64,8 @@ LIBSHIBOKEN_API void warnInvalidReturnValue(const char *className, const char *f const char *expectedType, const char *actualType); LIBSHIBOKEN_API void warnDeprecated(const char *functionName); LIBSHIBOKEN_API void warnDeprecated(const char *className, const char *functionName); +LIBSHIBOKEN_API void warnDeprecatedEnum(const char *enumName); +LIBSHIBOKEN_API void warnDeprecatedEnumValue(const char *enumName, const char *valueName); } // namespace Warnings } // namespace Shiboken |