home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / EXCPT.H < prev    next >
C/C++ Source or Header  |  1996-09-08  |  4KB  |  194 lines

  1. #if !defined(__TOPLEVEL_NEXT_COMMON_INCLUDE__)
  2. #define __TOPLEVEL_NEXT_COMMON_INCLUDE__
  3. #define __TOPLEVEL_EXCPT_H_
  4. #include <next_common_defines.h>
  5. #endif /* __TOPLEVEL_NEXT_COMMON_INCLUDE__ */
  6.  
  7. /***
  8. *excpt.h - defines exception values, types and routines
  9. *
  10. *       Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
  11. *
  12. *Purpose:
  13. *       This file contains the definitions and prototypes for the compiler-
  14. *       dependent intrinsics, support functions and keywords which implement
  15. *       the structured exception handling extensions.
  16. *
  17. *       [Public]
  18. *
  19. ****/
  20.  
  21. #if _MSC_VER > 1000
  22. #pragma once
  23. #endif
  24.  
  25. #ifndef _INC_EXCPT
  26. #define _INC_EXCPT
  27.  
  28. #if !defined(_WIN32) && !defined(_MAC)
  29. #error ERROR: Only Mac or Win32 targets supported!
  30. #endif
  31.  
  32.  
  33. #ifdef    _MSC_VER
  34. /*
  35.  * Currently, all MS C compilers for Win32 platforms default to 8 byte
  36.  * alignment.
  37.  */
  38. #pragma pack(push,8)
  39. #endif    /* _MSC_VER */
  40.  
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44.  
  45.  
  46. /* Define _CRTAPI1 (for compatibility with the NT SDK) */
  47.  
  48. #ifndef _CRTAPI1
  49. #if _MSC_VER >= 800 && _M_IX86 >= 300
  50. #define _CRTAPI1 __cdecl
  51. #else
  52. #define _CRTAPI1
  53. #endif
  54. #endif
  55.  
  56.  
  57. /* Define _CRTAPI2 (for compatibility with the NT SDK) */
  58.  
  59. #ifndef _CRTAPI2
  60. #if _MSC_VER >= 800 && _M_IX86 >= 300
  61. #define _CRTAPI2 __cdecl
  62. #else
  63. #define _CRTAPI2
  64. #endif
  65. #endif
  66.  
  67.  
  68. /* Define _CRTIMP */
  69.  
  70. #ifndef _CRTIMP
  71. #ifdef  _NTSDK
  72. /* definition compatible with NT SDK */
  73. #define _CRTIMP
  74. #else   /* ndef _NTSDK */
  75. /* current definition */
  76. #ifdef  _DLL
  77. #define _CRTIMP __declspec(dllimport)
  78. #else   /* ndef _DLL */
  79. #define _CRTIMP
  80. #endif  /* _DLL */
  81. #endif  /* _NTSDK */
  82. #endif  /* _CRTIMP */
  83.  
  84.  
  85. /* Define __cdecl for non-Microsoft compilers */
  86.  
  87. #if ( !defined(_MSC_VER) && !defined(__cdecl) )
  88. #define __cdecl
  89. #endif
  90.  
  91.  
  92. /*
  93.  * Exception disposition return values.
  94.  */
  95. typedef enum _EXCEPTION_DISPOSITION {
  96.     ExceptionContinueExecution,
  97.     ExceptionContinueSearch,
  98.     ExceptionNestedException,
  99.     ExceptionCollidedUnwind
  100. } EXCEPTION_DISPOSITION;
  101.  
  102.  
  103. /*
  104.  * Prototype for SEH support function.
  105.  */
  106.  
  107. #ifdef  _M_IX86
  108.  
  109. /*
  110.  * Declarations to keep MS C 8 (386/486) compiler happy
  111.  */
  112. struct _EXCEPTION_RECORD;
  113. struct _CONTEXT;
  114.  
  115. EXCEPTION_DISPOSITION __cdecl _except_handler (
  116.     struct _EXCEPTION_RECORD *ExceptionRecord,
  117.     void * EstablisherFrame,
  118.     struct _CONTEXT *ContextRecord,
  119.     void * DispatcherContext
  120.     );
  121.  
  122. #elif   defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC)
  123.  
  124. /*
  125.  * Declarations to keep MIPS, ALPHA, and PPC compiler happy
  126.  */
  127. typedef struct _EXCEPTION_POINTERS *Exception_info_ptr;
  128. struct _EXCEPTION_RECORD;
  129. struct _CONTEXT;
  130. struct _DISPATCHER_CONTEXT;
  131.  
  132.  
  133. _CRTIMP EXCEPTION_DISPOSITION __C_specific_handler (
  134.     struct _EXCEPTION_RECORD *ExceptionRecord,
  135.     void *EstablisherFrame,
  136.     struct _CONTEXT *ContextRecord,
  137.     struct _DISPATCHER_CONTEXT *DispatcherContext
  138.     );
  139.  
  140. #endif
  141.  
  142.  
  143. /*
  144.  * Keywords and intrinsics for SEH
  145.  */
  146.  
  147. #ifdef  _MSC_VER
  148.  
  149. #if defined(_NTSDK) && !defined(__cplusplus)
  150. #define try                         __try
  151. #define except                      __except
  152. #define finally                     __finally
  153. #define leave                       __leave
  154. #endif  /* _NTSDK */
  155. #define GetExceptionCode            _exception_code
  156. #define exception_code              _exception_code
  157. #define GetExceptionInformation     (struct _EXCEPTION_POINTERS *)_exception_info
  158. #define exception_info              (struct _EXCEPTION_POINTERS *)_exception_info
  159. #define AbnormalTermination         _abnormal_termination
  160. #define abnormal_termination        _abnormal_termination
  161.  
  162. unsigned long __cdecl _exception_code(void);
  163. void *        __cdecl _exception_info(void);
  164. int           __cdecl _abnormal_termination(void);
  165.  
  166. #endif
  167.  
  168.  
  169. /*
  170.  * Legal values for expression in except().
  171.  */
  172.  
  173. #define EXCEPTION_EXECUTE_HANDLER       1
  174. #define EXCEPTION_CONTINUE_SEARCH       0
  175. #define EXCEPTION_CONTINUE_EXECUTION    -1
  176.  
  177.  
  178.  
  179. #ifdef __cplusplus
  180. }
  181. #endif
  182.  
  183. #ifdef    _MSC_VER
  184. #pragma pack(pop)
  185. #endif    /* _MSC_VER */
  186.  
  187. #endif    /* _INC_EXCPT */
  188.  
  189. #if defined(__TOPLEVEL_EXCPT_H_)
  190. #undef __TOPLEVEL_NEXT_COMMON_INCLUDE__
  191. #undef __TOPLEVEL_EXCPT_H_
  192. #include <next_common_undefines.h>
  193. #endif /* __TOPLEVEL_EXCPT_H_ */
  194.