|
|
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.