|
|
1.1 ! root 1: /*** ! 2: *excpt.h - definitions/declarations for Structured Exception Handling ! 3: * ! 4: * Copyright (c) 1985-1991, Microsoft Corporation. All rights reserved. ! 5: * ! 6: *Purpose: ! 7: * This file defines the compiler-dependent definitions used to ! 8: * access the structured exception handling syntax. ! 9: * ! 10: *******************************************************************************/ ! 11: ! 12: #ifndef _EXCPT_ ! 13: #define _EXCPT_ ! 14: ! 15: // ! 16: // C Structured Exception Handling. ! 17: // ! 18: ! 19: // ! 20: // Exception disposition return values. ! 21: // ! 22: ! 23: typedef enum _EXCEPTION_DISPOSITION { ! 24: ExceptionContinueExecution, ! 25: ExceptionContinueSearch, ! 26: ExceptionNestedException, ! 27: ExceptionCollidedUnwind ! 28: } EXCEPTION_DISPOSITION; ! 29: ! 30: #if defined(__cplusplus) ! 31: #define EXCEPTION_EXTERN extern "C" ! 32: #define EXCEPTION_NOPROTO ... ! 33: #else ! 34: #define EXCEPTION_EXTERN extern ! 35: #define EXCEPTION_NOPROTO ! 36: #endif ! 37: ! 38: #if defined(lint) || defined(_lint) ! 39: ! 40: #define try /* nothing */ ! 41: #define except /* nothing */ ! 42: #define finally /* nothing */ ! 43: #define GetExceptionCode (unsigned long) 5 /* any bogus value */ ! 44: #define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info ! 45: #define AbnormalTermination _abnormal_termination ! 46: #define abnormal_termination _abnormal_termination ! 47: ! 48: EXCEPTION_EXTERN unsigned long _exception_code( EXCEPTION_NOPROTO ); ! 49: EXCEPTION_EXTERN int _abnormal_termination( EXCEPTION_NOPROTO ); ! 50: ! 51: #elif defined(i386) ! 52: ! 53: #define try _try ! 54: #define except _except ! 55: #define finally _finally ! 56: #define GetExceptionCode (unsigned long)_exception_code ! 57: #define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info ! 58: #define AbnormalTermination _abnormal_termination ! 59: #define abnormal_termination _abnormal_termination ! 60: ! 61: EXCEPTION_EXTERN unsigned long _exception_code( EXCEPTION_NOPROTO ); ! 62: EXCEPTION_EXTERN int _abnormal_termination( EXCEPTION_NOPROTO ); ! 63: ! 64: #elif defined(MIPS) ! 65: ! 66: #define try __builtin_try ! 67: #define except __builtin_except ! 68: #define finally __builtin_finally ! 69: #define leave __builtin_leave ! 70: #define GetExceptionCode() __exception_code ! 71: #define GetExceptionInformation() (struct _EXCEPTION_POINTERS *)__exception_info ! 72: #define abnormal_termination() __abnormal_termination ! 73: #define AbnormalTermination() __abnormal_termination ! 74: ! 75: EXCEPTION_EXTERN unsigned long GetExceptionCode(); ! 76: EXCEPTION_EXTERN int AbnormalTermination(); ! 77: ! 78: // ! 79: // Random noise to keep the Mips C Compiler happy. ! 80: // ! 81: ! 82: typedef struct _EXCEPTION_POINTERS *Exception_info_ptr; ! 83: ! 84: struct _EXCEPTION_RECORD; ! 85: struct _CONTEXT; ! 86: struct _DISPATCHER_CONTEXT; ! 87: ! 88: EXCEPTION_DISPOSITION ! 89: __C_specific_handler ( ! 90: struct _EXCEPTION_RECORD *ExceptionRecord, ! 91: void *EstablisherFrame, ! 92: struct _CONTEXT *ContextRecord, ! 93: struct _DISPATCHER_CONTEXT *DispatcherContext ! 94: ); ! 95: ! 96: #endif ! 97: ! 98: // ! 99: // Values for except() expresion ! 100: // ! 101: ! 102: #define EXCEPTION_EXECUTE_HANDLER 1 ! 103: #define EXCEPTION_CONTINUE_SEARCH 0 ! 104: #define EXCEPTION_CONTINUE_EXECUTION -1 ! 105: ! 106: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.