1 /* 2 * C++ exception handling facility 3 * 4 * Copyright 2000 Francois Gouget. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 #ifndef __WINE_EH_H 21 #define __WINE_EH_H 22 #ifndef __WINE_USE_MSVCRT 23 #define __WINE_USE_MSVCRT 24 #endif 25 26 #if !defined(__cplusplus) && !defined(USE_MSVCRT_PREFIX) 27 #error "eh.h is meant only for C++ applications" 28 #endif 29 30 #ifndef MSVCRT 31 # ifdef USE_MSVCRT_PREFIX 32 # define MSVCRT(x) MSVCRT_##x 33 # else 34 # define MSVCRT(x) x 35 # endif 36 #endif 37 38 struct _EXCEPTION_POINTERS; 39 40 typedef void (*terminate_handler)(); 41 typedef void (*terminate_function)(); 42 typedef void (*unexpected_handler)(); 43 typedef void (*unexpected_function)(); 44 typedef void (*_se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info); 45 46 terminate_function MSVCRT(set_terminate)(terminate_function func); 47 unexpected_function MSVCRT(set_unexpected)(unexpected_function func); 48 _se_translator_function MSVCRT(_set_se_translator)(_se_translator_function func); 49 50 void MSVCRT(terminate)(); 51 void MSVCRT(unexpected)(); 52 53 #endif /* __WINE_EH_H */ 54