1  // cxxabi.h subset for cancellation -*- C++ -*-
       2    
       3  // Copyright (C) 2007-2023 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 bits/cxxabi_forced.h
      27   *  This is an internal header file, included by other library headers.
      28   *  Do not attempt to use it directly. @headername{cxxabi.h}
      29   */
      30  
      31  #ifndef _CXXABI_FORCED_H
      32  #define _CXXABI_FORCED_H 1
      33  
      34  #pragma GCC system_header
      35  
      36  #pragma GCC visibility push(default)
      37  
      38  #ifdef __cplusplus
      39  namespace __cxxabiv1
      40  {  
      41    /** 
      42     *  @brief Thrown as part of forced unwinding.
      43     *  @ingroup exceptions
      44     *
      45     *  A magic placeholder class that can be caught by reference to
      46     *  recognize forced unwinding.
      47     */
      48    class __forced_unwind
      49    {
      50      virtual ~__forced_unwind() throw();
      51  
      52      // Prevent catch by value.
      53      virtual void __pure_dummy() = 0; 
      54    };
      55  }
      56  #endif // __cplusplus
      57  
      58  #pragma GCC visibility pop
      59  
      60  #endif // __CXXABI_FORCED_H