#include <pseh/framebased/internal.h>
#include <pseh/excpt.h>
#include <stddef.h>
#include <setjmp.h>
Go to the source code of this file.
|
#define | _SEHLongJmp longjmp |
|
#define | _SEHSetJmp setjmp |
|
#define | _SEHJmpBuf_t jmp_buf |
|
#define | _SEH_INIT_CONST register const |
|
#define | _SEH_ACCESS_LOCALS(LOCALS_) |
|
#define | _SEH_VAR(VAR_) _SEHPLocals->VAR_ |
|
#define | _SEH_FILTER(NAME_) |
|
#define | _SEH_STATIC_FILTER(ACTION_) ((_SEHFilter_t)((ACTION_) + 2)) |
|
#define | _SEH_WRAP_FILTER(WRAPPER_, NAME_) |
|
#define | _SEH_FINALLYFUNC(NAME_) |
|
#define | _SEH_WRAP_FINALLY(WRAPPER_, NAME_) _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ()) |
|
#define | _SEH_WRAP_FINALLY_ARGS(WRAPPER_, NAME_, ARGS_) |
|
#define | _SEH_WRAP_FINALLY_LOCALS_ARGS(WRAPPER_, LOCALS_, NAME_, ARGS_) |
|
#define | _SEH_DECLARE_HANDLERS(FILTER_, FINALLY_) |
|
#define | _SEH_SetExceptionCode(CODE_) (_SEHPortableFrame->SPF_Code = (CODE_)) |
|
#define | _SEH_GetExceptionCode() (unsigned long)(_SEHPortableFrame->SPF_Code) |
|
#define | _SEH_GetExceptionPointers() ((struct _EXCEPTION_POINTERS *)_SEHExceptionPointers) |
|
#define | _SEH_AbnormalTermination() (_SEHPortableFrame->SPF_Code != 0) |
|
#define | _SEH_LEAVE break |
|
#define | _SEH_YIELD(STMT_) |
|
#define | _SEH_TRY |
|
#define | _SEH_EXCEPT(FILTER_) |
|
#define | _SEH_FINALLY(FINALLY_) |
|
#define | _SEH_END |
|
#define | _SEH_HANDLE _SEH_EXCEPT(_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER)) |
|
#define | _SEH_EnableTracing(LEVEL_) ((void)(_SEHPortableFrame->SPF_Tracing = (LEVEL_))) |
|
#define | _SEH_DisableTracing() ((void)(_SEHPortableFrame->SPF_Tracing = _SEH_DO_TRACE_NONE)) |
|
◆ _SEH_AbnormalTermination
◆ _SEH_ACCESS_LOCALS
#define _SEH_ACCESS_LOCALS |
( |
|
LOCALS_ | ) |
|
Value:
_SEHPLocals = \
( \
_SEH_LOCALS_TYPENAME(LOCALS_) *, \
->SEH_Locals \
);
static _SEHPortableFrame_t *const _SEHPortableFrame
#define _SEH_LOCALS_TYPENAME(BASENAME_)
#define _SEH_PVOID_CAST(TYPE_, P_)
Definition at line 89 of file framebased.h.
◆ _SEH_DECLARE_HANDLERS
#define _SEH_DECLARE_HANDLERS |
( |
|
FILTER_, |
|
|
|
FINALLY_ |
|
) |
| |
◆ _SEH_DisableTracing
◆ _SEH_EnableTracing
◆ _SEH_END
Value: } \
} \
\
if(_SEHTopTryLevel) \
_SEHLeaveFrame(); \
\
break; \
}
Definition at line 358 of file framebased.h.
◆ _SEH_EXCEPT
#define _SEH_EXCEPT |
( |
|
FILTER_ | ) |
|
◆ _SEH_FILTER
◆ _SEH_FINALLY
#define _SEH_FINALLY |
( |
|
FINALLY_ | ) |
|
◆ _SEH_FINALLYFUNC
#define _SEH_FINALLYFUNC |
( |
|
NAME_ | ) |
|
◆ _SEH_GetExceptionCode
◆ _SEH_GetExceptionPointers
◆ _SEH_HANDLE
◆ _SEH_INIT_CONST
◆ _SEH_LEAVE
◆ _SEH_SetExceptionCode
◆ _SEH_STATIC_FILTER
◆ _SEH_TRY
Value: for(;;) \
{ \
\
{ \
register int _SEHState = 0; \
register int _SEHHandle = 0; \
_SEHTopTryLevel ? &_SEHFrame.
SEH_Header : _SEHCurPortableFrame; \
\
\
for(;;) \
{ \
if(_SEHState) \
{ \
for(;;) \
{ \
{
static const int _SEHScopeKind
static _SEHPortableTryLevel_t *const _SEHPortableTryLevel
_SEHPortableFrame_t SEH_Header
_SEHPortableTryLevel_t ST_Header
Definition at line 244 of file framebased.h.
◆ _SEH_VAR
#define _SEH_VAR |
( |
|
VAR_ | ) |
_SEHPLocals->VAR_ |
◆ _SEH_WRAP_FILTER
#define _SEH_WRAP_FILTER |
( |
|
WRAPPER_, |
|
|
|
NAME_ |
|
) |
| |
Value:
{ \
return (NAME_)(_SEHExceptionPointers); \
}
#define _SEH_FILTER(NAME_)
Definition at line 115 of file framebased.h.
◆ _SEH_WRAP_FINALLY
◆ _SEH_WRAP_FINALLY_ARGS
#define _SEH_WRAP_FINALLY_ARGS |
( |
|
WRAPPER_, |
|
|
|
NAME_, |
|
|
|
ARGS_ |
|
) |
| |
Value:
{ \
NAME_ ARGS_; \
}
#define _SEH_FINALLYFUNC(NAME_)
Definition at line 133 of file framebased.h.
◆ _SEH_WRAP_FINALLY_LOCALS_ARGS
#define _SEH_WRAP_FINALLY_LOCALS_ARGS |
( |
|
WRAPPER_, |
|
|
|
LOCALS_, |
|
|
|
NAME_, |
|
|
|
ARGS_ |
|
) |
| |
Value:
{ \
_SEH_ACCESS_LOCALS(LOCALS_); \
NAME_ ARGS_; \
}
Definition at line 139 of file framebased.h.
◆ _SEH_YIELD
Value: for(;;) \
{ \
_SEHReturn(); \
\
STMT_; \
}
Definition at line 167 of file framebased.h.
◆ _SEHJmpBuf_t
◆ _SEHLongJmp
◆ _SEHSetJmp
◆ _SEHFrame_t
◆ _SEHTryLevel_t
◆ __declspec()
static __declspec |
( |
noreturn |
| ) |
|
|
static |
Definition at line 73 of file framebased.h.
77{
81}
#define _SEH_CONTAINING_RECORD(ADDR_, TYPE_, FIELD_)
◆ _SEHPortableFrame
◆ _SEHPortableTryLevel
◆ _SEHScopeKind