|
|
1.1 root 1: /*** 1.1.1.3 ! root 2: *excpt.h - defines exception values, types and routines 1.1 root 3: * 1.1.1.3 ! root 4: * Copyright (c) 1990-1992, Microsoft Corporation. All rights reserved. 1.1 root 5: * 6: *Purpose: 1.1.1.3 ! root 7: * This file contains the definitions and prototypes for the compiler- ! 8: * dependent intrinsics, support functions and keywords which implement ! 9: * the structured exception handling extensions. 1.1 root 10: * 1.1.1.3 ! root 11: ****/ 1.1 root 12: 1.1.1.3 ! root 13: #ifndef _INC_EXCPT 1.1 root 14: 1.1.1.3 ! root 15: #ifdef __cplusplus ! 16: extern "C" { ! 17: #endif ! 18: ! 19: ! 20: /* ! 21: * Conditional macro definition for function calling type and variable type ! 22: * qualifiers. ! 23: */ ! 24: #if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) ) ! 25: ! 26: /* ! 27: * Definitions for MS C8-32 (386/486) compiler ! 28: */ ! 29: #define _CRTAPI1 __cdecl ! 30: #define _CRTAPI2 __cdecl ! 31: ! 32: #elif ( _MSC_VER == 600 ) ! 33: ! 34: /* ! 35: * Definitions for old MS C6-386 compiler ! 36: */ ! 37: #define _CRTAPI1 _cdecl ! 38: #define _CRTAPI2 _cdecl ! 39: #define _M_IX86 300 ! 40: ! 41: #else ! 42: ! 43: /* ! 44: * Other compilers (e.g., MIPS) ! 45: */ ! 46: #define _CRTAPI1 ! 47: #define _CRTAPI2 1.1 root 48: 1.1.1.3 ! root 49: #endif ! 50: ! 51: ! 52: /* ! 53: * Exception disposition return values. ! 54: */ 1.1 root 55: typedef enum _EXCEPTION_DISPOSITION { 56: ExceptionContinueExecution, 57: ExceptionContinueSearch, 58: ExceptionNestedException, 59: ExceptionCollidedUnwind 60: } EXCEPTION_DISPOSITION; 61: 62: 1.1.1.3 ! root 63: /* ! 64: * Prototype for SEH support function. ! 65: */ ! 66: ! 67: #ifdef _M_IX86 ! 68: ! 69: EXCEPTION_DISPOSITION _CRTAPI2 _except_handler ( ! 70: struct _EXCEPTION_RECORD *ExceptionRecord, ! 71: void * EstablisherFrame, ! 72: struct _CONTEXT *ContextRecord, ! 73: void * DispatcherContext ! 74: ); ! 75: ! 76: #elif ( defined(_M_RX000) || defined(M_MRX000) || defined(MIPS) || defined(MIPS) ) ! 77: ! 78: /* ! 79: * Declarations to keep MIPS compiler happy ! 80: */ 1.1 root 81: typedef struct _EXCEPTION_POINTERS *Exception_info_ptr; 82: struct _EXCEPTION_RECORD; 83: struct _CONTEXT; 84: struct _DISPATCHER_CONTEXT; 85: 1.1.1.3 ! root 86: ! 87: EXCEPTION_DISPOSITION __C_specific_handler ( ! 88: struct _EXCEPTION_RECORD *ExceptionRecord, ! 89: void *EstablisherFrame, ! 90: struct _CONTEXT *ContextRecord, ! 91: struct _DISPATCHER_CONTEXT *DispatcherContext ! 92: ); ! 93: ! 94: #endif ! 95: ! 96: ! 97: /* ! 98: * Keywords and intrinsics for SEH ! 99: */ ! 100: ! 101: #if ( _MSC_VER >= 800 ) ! 102: /* ! 103: * MS C8-32 (386/486) ! 104: */ ! 105: #define try _try ! 106: #define except _except ! 107: #define finally _finally ! 108: #define GetExceptionCode _exception_code ! 109: #define exception_code _exception_code ! 110: #define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info ! 111: #define exception_info (struct _EXCEPTION_POINTERS *)_exception_info ! 112: #define AbnormalTermination _abnormal_termination ! 113: #define abnormal_termination _abnormal_termination ! 114: ! 115: unsigned long _CRTAPI1 _exception_code(void); ! 116: void * _CRTAPI1 _exception_info(void); ! 117: int _CRTAPI1 _abnormal_termination(void); ! 118: ! 119: #elif ( (_MSC_VER == 600) || defined(M_MRX000) ) ! 120: /* ! 121: * Old MS C 6-386 or MS MIPS compiler ! 122: */ ! 123: #define try _try ! 124: #define except _except ! 125: #define finally _finally ! 126: #define GetExceptionCode _exception_code ! 127: #define exception_code _exception_code ! 128: #define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info ! 129: #define exception_info (struct _EXCEPTION_POINTERS *)_exception_info ! 130: #define AbnormalTermination _abnormal_termination ! 131: #define abnormal_termination _abnormal_termination ! 132: ! 133: unsigned long _CRTAPI1 _exception_code(void); ! 134: void * _CRTAPI1 _exception_info(void); ! 135: int _CRTAPI1 _abnormal_termination(void); ! 136: ! 137: #elif ( defined(_M_RX000) || defined(MIPS) || defined(MIPS) ) ! 138: /* ! 139: * MIPS compiler ! 140: */ ! 141: #define try __builtin_try ! 142: #define except __builtin_except ! 143: #define finally __builtin_finally ! 144: #define leave __builtin_leave ! 145: #define GetExceptionCode() __exception_code ! 146: #define exception_code() __exception_code ! 147: #define GetExceptionInformation() (struct _EXCEPTION_POINTERS *)__exception_info ! 148: #define exception_info() (struct _EXCEPTION_POINTERS *)__exception_info ! 149: #define AbnormalTermination() __abnormal_termination ! 150: #define abnormal_termination() __abnormal_termination ! 151: ! 152: extern unsigned long __exception_code; ! 153: extern int __exception_info; ! 154: extern int __abnormal_termination; 1.1 root 155: 156: #endif 157: 158: 1.1.1.3 ! root 159: /* ! 160: * Legal values for expression in except(). ! 161: */ ! 162: ! 163: #define EXCEPTION_EXECUTE_HANDLER 1 ! 164: #define EXCEPTION_CONTINUE_SEARCH 0 ! 165: #define EXCEPTION_CONTINUE_EXECUTION -1 ! 166: ! 167: ! 168: ! 169: #ifdef __cplusplus ! 170: } 1.1 root 171: #endif 1.1.1.3 ! root 172: ! 173: #define _INC_EXCPT ! 174: #endif /* _INC_EXCPT */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.