1// cxxabi.h subset for inclusion by other library headers -*- C++ -*- 2 3// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. 4// 5// This file is part of GCC. 6// 7// GCC is free software; you can redistribute it and/or modify 8// it under the terms of the GNU General Public License as published by 9// the Free Software Foundation; either version 3, or (at your option) 10// any later version. 11// 12// GCC is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16// 17// Under Section 7 of GPL version 3, you are granted additional 18// permissions described in the GCC Runtime Library Exception, version 19// 3.1, as published by the Free Software Foundation. 20 21// You should have received a copy of the GNU General Public License and 22// a copy of the GCC Runtime Library Exception along with this program; 23// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24// <http://www.gnu.org/licenses/>. 25 26/** @file cxxabi-forced.h 27 * The header provides an interface to the C++ ABI. 28 */ 29 30#ifndef _CXXABI_FORCED_H 31#define _CXXABI_FORCED_H 1 32 33#pragma GCC system_header 34 35#pragma GCC visibility push(default) 36 37#ifdef __cplusplus 38namespace __cxxabiv1 39{ 40 /** 41 * @brief Thrown as part of forced unwinding. 42 * @ingroup exceptions 43 * 44 * A magic placeholder class that can be caught by reference to 45 * recognize forced unwinding. 46 */ 47 class __forced_unwind 48 { 49 virtual ~__forced_unwind() throw(); 50 51 // Prevent catch by value. 52 virtual void __pure_dummy() = 0; 53 }; 54} 55#endif // __cplusplus 56 57#pragma GCC visibility pop 58 59#endif // __CXXABI_FORCED_H 60