/* Error handling definitions */
PyAPI_FUNC(void) PyErr_SetNone(PyObject
*);
PyAPI_FUNC(void) PyErr_SetObject(PyObject
*, PyObject
*);
PyAPI_FUNC(void) PyErr_SetString(PyObject
*, const char *);
PyAPI_FUNC(PyObject
*) PyErr_Occurred(void);
PyAPI_FUNC(void) PyErr_Clear(void);
PyAPI_FUNC(void) PyErr_Fetch(PyObject
**, PyObject
**, PyObject
**);
PyAPI_FUNC(void) PyErr_Restore(PyObject
*, PyObject
*, PyObject
*);
/* Error testing and normalization */
PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject
*, PyObject
*);
PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject
*);
PyAPI_FUNC(void) PyErr_NormalizeException(PyObject
**, PyObject
**, PyObject
**);
/* Predefined exceptions */
PyAPI_DATA(PyObject
*) PyExc_Exception
;
PyAPI_DATA(PyObject
*) PyExc_StopIteration
;
PyAPI_DATA(PyObject
*) PyExc_StandardError
;
PyAPI_DATA(PyObject
*) PyExc_ArithmeticError
;
PyAPI_DATA(PyObject
*) PyExc_LookupError
;
PyAPI_DATA(PyObject
*) PyExc_AssertionError
;
PyAPI_DATA(PyObject
*) PyExc_AttributeError
;
PyAPI_DATA(PyObject
*) PyExc_EOFError
;
PyAPI_DATA(PyObject
*) PyExc_FloatingPointError
;
PyAPI_DATA(PyObject
*) PyExc_EnvironmentError
;
PyAPI_DATA(PyObject
*) PyExc_IOError
;
PyAPI_DATA(PyObject
*) PyExc_OSError
;
PyAPI_DATA(PyObject
*) PyExc_ImportError
;
PyAPI_DATA(PyObject
*) PyExc_IndexError
;
PyAPI_DATA(PyObject
*) PyExc_KeyError
;
PyAPI_DATA(PyObject
*) PyExc_KeyboardInterrupt
;
PyAPI_DATA(PyObject
*) PyExc_MemoryError
;
PyAPI_DATA(PyObject
*) PyExc_NameError
;
PyAPI_DATA(PyObject
*) PyExc_OverflowError
;
PyAPI_DATA(PyObject
*) PyExc_RuntimeError
;
PyAPI_DATA(PyObject
*) PyExc_NotImplementedError
;
PyAPI_DATA(PyObject
*) PyExc_SyntaxError
;
PyAPI_DATA(PyObject
*) PyExc_IndentationError
;
PyAPI_DATA(PyObject
*) PyExc_TabError
;
PyAPI_DATA(PyObject
*) PyExc_ReferenceError
;
PyAPI_DATA(PyObject
*) PyExc_SystemError
;
PyAPI_DATA(PyObject
*) PyExc_SystemExit
;
PyAPI_DATA(PyObject
*) PyExc_TypeError
;
PyAPI_DATA(PyObject
*) PyExc_UnboundLocalError
;
PyAPI_DATA(PyObject
*) PyExc_UnicodeError
;
PyAPI_DATA(PyObject
*) PyExc_UnicodeEncodeError
;
PyAPI_DATA(PyObject
*) PyExc_UnicodeDecodeError
;
PyAPI_DATA(PyObject
*) PyExc_UnicodeTranslateError
;
PyAPI_DATA(PyObject
*) PyExc_ValueError
;
PyAPI_DATA(PyObject
*) PyExc_ZeroDivisionError
;
PyAPI_DATA(PyObject
*) PyExc_WindowsError
;
PyAPI_DATA(PyObject
*) PyExc_VMSError
;
PyAPI_DATA(PyObject
*) PyExc_MemoryErrorInst
;
/* Predefined warning categories */
PyAPI_DATA(PyObject
*) PyExc_Warning
;
PyAPI_DATA(PyObject
*) PyExc_UserWarning
;
PyAPI_DATA(PyObject
*) PyExc_DeprecationWarning
;
PyAPI_DATA(PyObject
*) PyExc_PendingDeprecationWarning
;
PyAPI_DATA(PyObject
*) PyExc_SyntaxWarning
;
/* PyExc_OverflowWarning will go away for Python 2.5 */
PyAPI_DATA(PyObject
*) PyExc_OverflowWarning
;
PyAPI_DATA(PyObject
*) PyExc_RuntimeWarning
;
PyAPI_DATA(PyObject
*) PyExc_FutureWarning
;
/* Convenience functions */
PyAPI_FUNC(int) PyErr_BadArgument(void);
PyAPI_FUNC(PyObject
*) PyErr_NoMemory(void);
PyAPI_FUNC(PyObject
*) PyErr_SetFromErrno(PyObject
*);
PyAPI_FUNC(PyObject
*) PyErr_SetFromErrnoWithFilenameObject(
PyAPI_FUNC(PyObject
*) PyErr_SetFromErrnoWithFilename(PyObject
*, char *);
#ifdef Py_WIN_WIDE_FILENAMES
PyAPI_FUNC(PyObject
*) PyErr_SetFromErrnoWithUnicodeFilename(
PyObject
*, Py_UNICODE
*);
#endif /* Py_WIN_WIDE_FILENAMES */
PyAPI_FUNC(PyObject
*) PyErr_Format(PyObject
*, const char *, ...)
Py_GCC_ATTRIBUTE((format(printf
, 2, 3)));
PyAPI_FUNC(PyObject
*) PyErr_SetFromWindowsErrWithFilenameObject(
PyAPI_FUNC(PyObject
*) PyErr_SetFromWindowsErrWithFilename(
#ifdef Py_WIN_WIDE_FILENAMES
PyAPI_FUNC(PyObject
*) PyErr_SetFromWindowsErrWithUnicodeFilename(
int, const Py_UNICODE
*);
#endif /* Py_WIN_WIDE_FILENAMES */
PyAPI_FUNC(PyObject
*) PyErr_SetFromWindowsErr(int);
PyAPI_FUNC(PyObject
*) PyErr_SetExcFromWindowsErrWithFilenameObject(
PyObject
*,int, PyObject
*);
PyAPI_FUNC(PyObject
*) PyErr_SetExcFromWindowsErrWithFilename(
PyObject
*,int, const char *);
#ifdef Py_WIN_WIDE_FILENAMES
PyAPI_FUNC(PyObject
*) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
PyObject
*,int, const Py_UNICODE
*);
#endif /* Py_WIN_WIDE_FILENAMES */
PyAPI_FUNC(PyObject
*) PyErr_SetExcFromWindowsErr(PyObject
*, int);
/* Export the old function so that the existing API remains available: */
PyAPI_FUNC(void) PyErr_BadInternalCall(void);
PyAPI_FUNC(void) _PyErr_BadInternalCall(char *filename
, int lineno
);
/* Mask the old API with a call to the new API for code compiled under
#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
/* Function to create a new exception */
PyAPI_FUNC(PyObject
*) PyErr_NewException(char *name
, PyObject
*base
,
PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject
*);
/* Issue a warning or exception */
PyAPI_FUNC(int) PyErr_Warn(PyObject
*, char *);
PyAPI_FUNC(int) PyErr_WarnExplicit(PyObject
*, const char *,
const char *, PyObject
*);
/* In sigcheck.c or signalmodule.c */
PyAPI_FUNC(int) PyErr_CheckSignals(void);
PyAPI_FUNC(void) PyErr_SetInterrupt(void);
/* Support for adding program text to SyntaxErrors */
PyAPI_FUNC(void) PyErr_SyntaxLocation(const char *, int);
PyAPI_FUNC(PyObject
*) PyErr_ProgramText(const char *, int);
/* The following functions are used to create and modify unicode
/* create a UnicodeDecodeError object */
PyAPI_FUNC(PyObject
*) PyUnicodeDecodeError_Create(
const char *, const char *, int, int, int, const char *);
/* create a UnicodeEncodeError object */
PyAPI_FUNC(PyObject
*) PyUnicodeEncodeError_Create(
const char *, const Py_UNICODE
*, int, int, int, const char *);
/* create a UnicodeTranslateError object */
PyAPI_FUNC(PyObject
*) PyUnicodeTranslateError_Create(
const Py_UNICODE
*, int, int, int, const char *);
/* get the encoding attribute */
PyAPI_FUNC(PyObject
*) PyUnicodeEncodeError_GetEncoding(PyObject
*);
PyAPI_FUNC(PyObject
*) PyUnicodeDecodeError_GetEncoding(PyObject
*);
/* get the object attribute */
PyAPI_FUNC(PyObject
*) PyUnicodeEncodeError_GetObject(PyObject
*);
PyAPI_FUNC(PyObject
*) PyUnicodeDecodeError_GetObject(PyObject
*);
PyAPI_FUNC(PyObject
*) PyUnicodeTranslateError_GetObject(PyObject
*);
/* get the value of the start attribute (the int * may not be NULL)
return 0 on success, -1 on failure */
PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject
*, int *);
PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject
*, int *);
PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject
*, int *);
/* assign a new value to the start attribute
return 0 on success, -1 on failure */
PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject
*, int);
PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject
*, int);
PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject
*, int);
/* get the value of the end attribute (the int *may not be NULL)
return 0 on success, -1 on failure */
PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject
*, int *);
PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject
*, int *);
PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject
*, int *);
/* assign a new value to the end attribute
return 0 on success, -1 on failure */
PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject
*, int);
PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject
*, int);
PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject
*, int);
/* get the value of the reason attribute */
PyAPI_FUNC(PyObject
*) PyUnicodeEncodeError_GetReason(PyObject
*);
PyAPI_FUNC(PyObject
*) PyUnicodeDecodeError_GetReason(PyObject
*);
PyAPI_FUNC(PyObject
*) PyUnicodeTranslateError_GetReason(PyObject
*);
/* assign a new value to the reason attribute
return 0 on success, -1 on failure */
PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason(
PyObject
*, const char *);
PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason(
PyObject
*, const char *);
PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason(
PyObject
*, const char *);
/* These APIs aren't really part of the error implementation, but
often needed to format error messages; the native C lib APIs are
not available on all platforms, which is why we provide emulations
for those platforms in Python/mysnprintf.c,
WARNING: The return value of snprintf varies across platforms; do
not rely on any particular behavior; eventually the C99 defn may
#if defined(MS_WIN32) && !defined(HAVE_SNPRINTF)
# define snprintf _snprintf
# define vsnprintf _vsnprintf
PyAPI_FUNC(int) PyOS_snprintf(char *str
, size_t size
, const char *format
, ...)
Py_GCC_ATTRIBUTE((format(printf
, 3, 4)));
PyAPI_FUNC(int) PyOS_vsnprintf(char *str
, size_t size
, const char *format
, va_list va
)
Py_GCC_ATTRIBUTE((format(printf
, 3, 0)));
#endif /* !Py_ERRORS_H */