1    	// Exception Handling support header for -*- C++ -*-
2    	
3    	// Copyright (C) 2016-2017 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/exception.h
27   	 *  This is an internal header file, included by other library headers.
28   	 *  Do not attempt to use it directly.
29   	 */
30   	
31   	#ifndef __EXCEPTION_H
32   	#define __EXCEPTION_H 1
33   	
34   	#pragma GCC system_header
35   	
36   	#pragma GCC visibility push(default)
37   	
38   	#include <bits/c++config.h>
39   	
40   	extern "C++" {
41   	
42   	namespace std
43   	{
44   	  /**
45   	   * @defgroup exceptions Exceptions
46   	   * @ingroup diagnostics
47   	   *
48   	   * Classes and functions for reporting errors via exception classes.
49   	   * @{
50   	   */
51   	
52   	  /**
53   	   *  @brief Base class for all library exceptions.
54   	   *
55   	   *  This is the base class for all exceptions thrown by the standard
56   	   *  library, and by certain language expressions.  You are free to derive
57   	   *  your own %exception classes, or use a different hierarchy, or to
58   	   *  throw non-class data (e.g., fundamental types).
59   	   */
60   	  class exception
61   	  {
62   	  public:
63   	    exception() _GLIBCXX_USE_NOEXCEPT { }
64   	    virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT;
65   	
66   	    /** Returns a C-style character string describing the general cause
67   	     *  of the current error.  */
68   	    virtual const char*
69   	    what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT;
70   	  };
71   	
72   	} // namespace std
73   	
74   	}
75   	
76   	#pragma GCC visibility pop
77   	
78   	#endif
79