/*** *excpt.h - defines exception values, types and routines * *Purpose: * This file contains the definitions and prototypes for the compiler- * dependent intrinsics, support functions and keywords which implement * the structured exception handling extensions. * ****/ /* * C/C++ Run Time Library - Version 10.0 * * Copyright (c) 1990, 2000 by Inprise Corporation * All Rights Reserved. * */ #ifndef __EXCPT_H #pragma option push -b -a8 -pc -A- /*P_O_Push*/ #define __EXCPT_H #ifdef __cplusplus extern "C" { #endif /* * Conditional macro definition for function calling type and variable type * qualifiers. */ #if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) ) || defined(__BORLANDC__) /* From WINNT.H */ #define EXCEPTION_CONTINUABLE 0 // Continuable exception #define EXCEPTION_NONCONTINUABLE 0x1 // Noncontinuable exception #define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters /* * Definitions for MS C8-32 (386/486) compiler */ #define _CRTAPI1 __cdecl #define _CRTAPI2 __cdecl #else /* * Other compilers (e.g., MIPS) */ #define _CRTAPI1 #define _CRTAPI2 #endif /* * Exception disposition return values. */ typedef enum _EXCEPTION_DISPOSITION { ExceptionContinueExecution, ExceptionContinueSearch, ExceptionNestedException, ExceptionCollidedUnwind } EXCEPTION_DISPOSITION; /* * Prototype for SEH support function. */ #if defined(_M_IX86) /* * Declarations to keep MS C 8 (386/486) compiler happy */ struct _EXCEPTION_RECORD; struct _CONTEXT; EXCEPTION_DISPOSITION _CRTAPI2 _except_handler ( struct _EXCEPTION_RECORD *ExceptionRecord, void *EstablisherFrame, struct _CONTEXT *ContextRecord, void *DispatcherContext ); #elif defined(_M_MRX000) || defined(_MIPS_) || defined(_ALPHA_) /* * Declarations to keep MIPS and ALPHA compiler happy */ typedef struct _EXCEPTION_POINTERS *Exception_info_ptr; struct _EXCEPTION_RECORD; struct _CONTEXT; struct _DISPATCHER_CONTEXT; EXCEPTION_DISPOSITION __C_specific_handler ( struct _EXCEPTION_RECORD *ExceptionRecord, void *EstablisherFrame, struct _CONTEXT *ContextRecord, struct _DISPATCHER_CONTEXT *DispatcherContext ); #endif /* * Keywords and intrinsics for SEH */ #if defined(__BORLANDC__) /* * Borland C++ */ /* NOTE: To use the old style structured exception handling routines, include the SEHMAP.H header file. */ # define GetExceptionCode() __exception_code # define GetExceptionInformation() ((PEXCEPTION_POINTERS)__exception_info) # define AbnormalTermination() __abnormal_termination #elif ( _MSC_VER >= 800 ) /* * MS C8-32 (386/486) */ #define try __try #define except __except #define finally __finally #define leave __leave #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 _CRTAPI1 _exception_code(void); void * _CRTAPI1 _exception_info(void); int _CRTAPI1 _abnormal_termination(void); #elif defined(_M_MRX000) || defined(_MIPS_) || defined(_ALPHA_) /* * MIPS or ALPHA compiler */ #define try __builtin_try #define except __builtin_except #define finally __builtin_finally #define leave __builtin_leave #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 extern unsigned long __exception_code; extern int __exception_info; extern int __abnormal_termination; #endif /* * Legal values for expression in except(). */ #define EXCEPTION_EXECUTE_HANDLER 1 #define EXCEPTION_CONTINUE_SEARCH 0 #define EXCEPTION_CONTINUE_EXECUTION -1 #ifdef __cplusplus } #endif #pragma option pop /*P_O_Pop*/ #endif /* __EXCPT_H */