97 lines
2 KiB
C
97 lines
2 KiB
C
|
/* Copyright (C) 1986-2001 by Digital Mars */
|
||
|
|
||
|
/*
|
||
|
* This file contains the declartions necessary
|
||
|
* to support Structured Exception Handling under NT.
|
||
|
* This file is compatible with Microsofts version of the same file
|
||
|
*/
|
||
|
#if __SC__ || __RCC__
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#ifndef __EXCPT_H
|
||
|
#define __EXCPT_H 1
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Define _CRTAPI1 (for compatibility with the NT SDK) */
|
||
|
#ifndef _CRTAPI1
|
||
|
#define _CRTAPI1 __cdecl
|
||
|
#endif
|
||
|
|
||
|
/* Define _CRTAPI2 (for compatibility with the NT SDK) */
|
||
|
#ifndef _CRTAPI2
|
||
|
#define _CRTAPI2 __cdecl
|
||
|
#endif
|
||
|
|
||
|
/* Define CRTIMP */
|
||
|
#ifndef _CRTIMP
|
||
|
#if defined(_WIN32) && defined(_DLL)
|
||
|
#define _CRTIMP __declspec(dllimport)
|
||
|
#else
|
||
|
#define _CRTIMP
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Exception disposition return values.
|
||
|
*/
|
||
|
typedef enum _EXCEPTION_DISPOSITION {
|
||
|
ExceptionContinueExecution,
|
||
|
ExceptionContinueSearch,
|
||
|
ExceptionNestedException,
|
||
|
ExceptionCollidedUnwind
|
||
|
} EXCEPTION_DISPOSITION;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Prototype for Structured Exception Handling Support Routine
|
||
|
*/
|
||
|
struct _EXCEPTION_RECORD;
|
||
|
struct _CONTEXT;
|
||
|
|
||
|
EXCEPTION_DISPOSITION __cdecl _except_handler (
|
||
|
struct _EXCEPTION_RECORD *ExceptionRecord,
|
||
|
void * EstablisherFrame,
|
||
|
struct _CONTEXT *ContextRecord,
|
||
|
void * DispatcherContext
|
||
|
);
|
||
|
|
||
|
|
||
|
#if !defined(__cplusplus)
|
||
|
#define try __try
|
||
|
#define except __except
|
||
|
#define finally __finally
|
||
|
#define leave __leave
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Compiler intrinsics
|
||
|
*/
|
||
|
#define GetExceptionCode _exception_code
|
||
|
#define exception_code _exception_code
|
||
|
#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
|
||
|
#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
|
||
|
#define AbnormalTermination _abnormal_termination
|
||
|
#define abnormal_termination _abnormal_termination
|
||
|
|
||
|
unsigned long __cdecl _exception_code(void);
|
||
|
void * __cdecl _exception_info(void);
|
||
|
int __cdecl _abnormal_termination(void);
|
||
|
|
||
|
/*
|
||
|
* Legal values for expression in except().
|
||
|
*/
|
||
|
#define EXCEPTION_EXECUTE_HANDLER 1
|
||
|
#define EXCEPTION_CONTINUE_SEARCH 0
|
||
|
#define EXCEPTION_CONTINUE_EXECUTION -1
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|