// Exception Handling support header for -*- C++ -*-
// Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-// 2004, 2005, 2006, 2007, 2008, 2009
+// 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation
//
// This file is part of GCC.
#ifndef __EXCEPTION__
#define __EXCEPTION__
+#pragma GCC system_header
+
#pragma GCC visibility push(default)
#include <bits/c++config.h>
+#include <bits/atomic_lockfree_defines.h>
extern "C++" {
class exception
{
public:
- exception() throw() { }
- virtual ~exception() throw();
+ exception() _GLIBCXX_USE_NOEXCEPT { }
+ virtual ~exception() _GLIBCXX_USE_NOEXCEPT;
/** Returns a C-style character string describing the general cause
* of the current error. */
- virtual const char* what() const throw();
+ virtual const char* what() const _GLIBCXX_USE_NOEXCEPT;
};
/** If an %exception is thrown which is not listed in a function's
class bad_exception : public exception
{
public:
- bad_exception() throw() { }
+ bad_exception() _GLIBCXX_USE_NOEXCEPT { }
// This declaration is not useless:
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
- virtual ~bad_exception() throw();
+ virtual ~bad_exception() _GLIBCXX_USE_NOEXCEPT;
// See comment in eh_exception.cc.
- virtual const char* what() const throw();
+ virtual const char* what() const _GLIBCXX_USE_NOEXCEPT;
};
/// If you write a replacement %terminate handler, it must be of this type.
typedef void (*unexpected_handler) ();
/// Takes a new handler function as an argument, returns the old function.
- terminate_handler set_terminate(terminate_handler) throw();
+ terminate_handler set_terminate(terminate_handler) _GLIBCXX_USE_NOEXCEPT;
/** The runtime will call this function if %exception handling must be
* abandoned for any reason. It can also be called by the user. */
- void terminate() throw() __attribute__ ((__noreturn__));
+ void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__));
/// Takes a new handler function as an argument, returns the old function.
- unexpected_handler set_unexpected(unexpected_handler) throw();
+ unexpected_handler set_unexpected(unexpected_handler) _GLIBCXX_USE_NOEXCEPT;
/** The runtime will call this function if an %exception is thrown which
* violates the function's %exception specification. */
* %exception can result in a call of @c terminate()
* (15.5.1).'
*/
- bool uncaught_exception() throw() __attribute__ ((__pure__));
+ bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
// @} group exceptions
} // namespace std
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
+namespace __gnu_cxx
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
/**
* @brief A replacement for the standard terminate_handler which
*/
void __verbose_terminate_handler();
-_GLIBCXX_END_NAMESPACE
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
} // extern "C++"
#pragma GCC visibility pop
-#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
- && defined(_GLIBCXX_ATOMIC_BUILTINS_4))
-#include <exception_ptr.h>
-#include <nested_exception.h>
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) && (ATOMIC_INT_LOCK_FREE > 1)
+#include <bits/exception_ptr.h>
+#include <bits/nested_exception.h>
#endif
#endif