head	1.1;
branch	1.1.1;
access;
symbols
	RELENG_8_4:1.1.1.5.0.30
	RELENG_9_1_0_RELEASE:1.1.1.5
	RELENG_9_1:1.1.1.5.0.28
	RELENG_9_1_BP:1.1.1.5
	RELENG_8_3_0_RELEASE:1.1.1.5
	RELENG_8_3:1.1.1.5.0.26
	RELENG_8_3_BP:1.1.1.5
	RELENG_9_0_0_RELEASE:1.1.1.5
	RELENG_9_0:1.1.1.5.0.24
	RELENG_9_0_BP:1.1.1.5
	RELENG_9:1.1.1.5.0.22
	RELENG_9_BP:1.1.1.5
	RELENG_7_4_0_RELEASE:1.1.1.5
	RELENG_8_2_0_RELEASE:1.1.1.5
	RELENG_7_4:1.1.1.5.0.20
	RELENG_7_4_BP:1.1.1.5
	RELENG_8_2:1.1.1.5.0.18
	RELENG_8_2_BP:1.1.1.5
	RELENG_8_1_0_RELEASE:1.1.1.5
	RELENG_8_1:1.1.1.5.0.16
	RELENG_8_1_BP:1.1.1.5
	RELENG_7_3_0_RELEASE:1.1.1.5
	RELENG_7_3:1.1.1.5.0.14
	RELENG_7_3_BP:1.1.1.5
	RELENG_8_0_0_RELEASE:1.1.1.5
	RELENG_8_0:1.1.1.5.0.12
	RELENG_8_0_BP:1.1.1.5
	RELENG_8:1.1.1.5.0.10
	RELENG_8_BP:1.1.1.5
	RELENG_7_2_0_RELEASE:1.1.1.5
	RELENG_7_2:1.1.1.5.0.8
	RELENG_7_2_BP:1.1.1.5
	RELENG_7_1_0_RELEASE:1.1.1.5
	RELENG_6_4_0_RELEASE:1.1.1.3
	RELENG_7_1:1.1.1.5.0.6
	RELENG_7_1_BP:1.1.1.5
	RELENG_6_4:1.1.1.3.0.20
	RELENG_6_4_BP:1.1.1.3
	RELENG_7_0_0_RELEASE:1.1.1.5
	RELENG_6_3_0_RELEASE:1.1.1.3
	RELENG_7_0:1.1.1.5.0.4
	RELENG_7_0_BP:1.1.1.5
	RELENG_6_3:1.1.1.3.0.18
	RELENG_6_3_BP:1.1.1.3
	RELENG_7:1.1.1.5.0.2
	RELENG_7_BP:1.1.1.5
	gcc_4_2_1_20070718_SVN126787:1.1.1.5
	gcc_4_2_0_20070514_SVN124707:1.1.1.4
	RELENG_6_2_0_RELEASE:1.1.1.3
	RELENG_6_2:1.1.1.3.0.16
	RELENG_6_2_BP:1.1.1.3
	gcc_3_4_6_20060825_SVN116475:1.1.1.3
	RELENG_5_5_0_RELEASE:1.1.1.3
	RELENG_5_5:1.1.1.3.0.14
	RELENG_5_5_BP:1.1.1.3
	RELENG_6_1_0_RELEASE:1.1.1.3
	RELENG_6_1:1.1.1.3.0.12
	RELENG_6_1_BP:1.1.1.3
	RELENG_6_0_0_RELEASE:1.1.1.3
	RELENG_6_0:1.1.1.3.0.10
	RELENG_6_0_BP:1.1.1.3
	RELENG_6:1.1.1.3.0.8
	RELENG_6_BP:1.1.1.3
	gcc_3_4_4_20050518:1.1.1.3
	RELENG_5_4_0_RELEASE:1.1.1.3
	RELENG_5_4:1.1.1.3.0.6
	RELENG_5_4_BP:1.1.1.3
	RELENG_5_3_0_RELEASE:1.1.1.3
	RELENG_5_3:1.1.1.3.0.4
	RELENG_5_3_BP:1.1.1.3
	RELENG_5:1.1.1.3.0.2
	RELENG_5_BP:1.1.1.3
	gcc_3_4_2_20040728:1.1.1.3
	RELENG_5_2_1_RELEASE:1.1.1.2
	RELENG_5_2_0_RELEASE:1.1.1.2
	RELENG_5_2:1.1.1.2.0.2
	RELENG_5_2_BP:1.1.1.2
	gcc_3_3_3_20031106:1.1.1.2
	gcc_3_3_1:1.1.1.2
	gcc_3_3_1_20030711:1.1.1.2
	RELENG_5_1_0_RELEASE:1.1.1.1
	RELENG_5_1:1.1.1.1.0.4
	RELENG_5_1_BP:1.1.1.1
	gcc_3_2_2_20030205:1.1.1.1
	RELENG_5_0_0_RELEASE:1.1.1.1
	RELENG_5_0:1.1.1.1.0.2
	RELENG_5_0_BP:1.1.1.1
	gcc_3_2_1:1.1.1.1
	BEFORE_GCC_3_2_1:1.1.1.1
	gcc_3_2_anoncvs_20021009:1.1.1.1
	gcc_3_2_anoncvs_20020916:1.1.1.1
	gcc_3_2_anoncvs_20020901:1.1.1.1
	gcc_3_1_anoncvs_20020509:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2002.05.28.16.16.02;	author obrien;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2002.05.28.16.16.02;	author obrien;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	2003.07.11.03.42.04;	author kan;	state Exp;
branches;
next	1.1.1.3;

1.1.1.3
date	2004.07.28.03.12.05;	author kan;	state Exp;
branches;
next	1.1.1.4;

1.1.1.4
date	2007.05.19.01.23.43;	author kan;	state Exp;
branches;
next	1.1.1.5;

1.1.1.5
date	2007.08.14.02.49.10;	author kan;	state Exp;
branches
	1.1.1.5.30.1;
next	;

1.1.1.5.30.1
date	2007.08.14.02.49.10;	author svnexp;	state dead;
branches;
next	1.1.1.5.30.2;

1.1.1.5.30.2
date	2013.03.28.13.01.38;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@// Exception Handling support header for -*- C++ -*-

// Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
//
// This file is part of GNU CC.
//
// GNU CC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// 
// GNU CC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with GNU CC; see the file COPYING.  If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

// As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

/** @@file exception
 *  This header defines several types and functions relating to the
 *  handling of exceptions in a C++ program.
 */

#ifndef __EXCEPTION__
#define __EXCEPTION__

extern "C++" {

namespace std 
{
  /** This is the base class for all exceptions thrown by the standard
   *  library, and by certain language expressions.  You are free to derive
   *  your own %exception classes, or use a different hierarchy, or to
   *  throw non-class data (e.g., fundamental types).
   *  @@brief Base class for all library exceptions.
   */
  class exception 
  {
  public:
    exception() throw() { }
    virtual ~exception() throw();
    /** Returns a C-style character string describing the general cause
     *  of the current error.  */
    virtual const char* what() const throw();
  };

  /** If an %exception is thrown which is not listed in a function's
   *  %exception specification, one of these may be thrown.  */
  class bad_exception : public exception 
  {
  public:
    bad_exception() throw() { }
    // This declaration is not useless:
    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
    virtual ~bad_exception() throw();
  };

  /// If you write a replacement %terminate handler, it must be of this type.
  typedef void (*terminate_handler) ();
  /// If you write a replacement %unexpected 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();
  /** The runtime will call this function if %exception handling must be
   *  abandoned for any reason.  */
  void terminate() __attribute__ ((__noreturn__));

  /// Takes a new handler function as an argument, returns the old function.
  unexpected_handler set_unexpected(unexpected_handler) throw();
  /** The runtime will call this function if an %exception is thrown which
   *  violates the function's %exception specification.  */
  void unexpected() __attribute__ ((__noreturn__));

  /** [18.6.4]/1:  "Returns true after completing evaluation of a
   *  throw-expression until either completing initialization of the
   *  exception-declaration in the matching handler or entering @@c unexpected()
   *  due to the throw; or after entering @@c terminate() for any reason
   *  other than an explicit call to @@c terminate().  [Note: This includes
   *  stack unwinding [15.2].  end note]"
   *
   *  2:  "When @@c uncaught_exception() is true, throwing an %exception can
   *  result in a call of @@c terminate() (15.5.1)."
   */
  bool uncaught_exception() throw();
} // namespace std

namespace __gnu_cxx
{
  /** A replacement for the standard terminate_handler which prints more
      information about the terminating exception (if any) on stderr.  Call
      @@code
        std::set_terminate (__gnu_cxx::__verbose_terminate_handler)
      @@endcode
      to use.  For more info, see
      http://gcc.gnu.org/onlinedocs/libstdc++/19_diagnostics/howto.html#4
  */
  void __verbose_terminate_handler ();
} // namespace __gnu_cxx
  
} // extern "C++"

#endif
@


1.1.1.1
log
@Gcc 3.1.0 pre-release's C++ support bits from the FSF anoncvs repo
on 9-May-2002 15:57:15 EDT.
@
text
@@


1.1.1.2
log
@Gcc 3.3.1-pre 2003-07-11 C++ support bits.
@
text
@d44 1
a44 4
  /**
   *  @@brief Base class for all library exceptions.
   *
   *  This is the base class for all exceptions thrown by the standard
d48 1
@


1.1.1.3
log
@Gcc 3.4.2 20040728 C++ support bits.
@
text
@d6 1
a6 1
// This file is part of GCC.
d8 1
a8 1
// GCC is free software; you can redistribute it and/or modify
d13 1
a13 1
// GCC is distributed in the hope that it will be useful,
d19 1
a19 1
// along with GCC; see the file COPYING.  If not, write to
d81 1
a81 1
   *  abandoned for any reason.  It can also be called by the user.  */
a111 2

      In 3.4 and later, this is on by default.
@


1.1.1.4
log
@GCC 4.2.0 release C++ standard library and runtime support code.
@
text
@d3 1
a3 2
// Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
// 2004, 2005, 2006, 2007
d20 2
a21 2
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.
d33 2
a34 1
 *  This is a Standard C++ Library header.
a39 4
#pragma GCC visibility push(default)

#include <bits/c++config.h>

a70 2
    // See comment in eh_exception.cc.
    virtual const char* what() const throw();
d103 2
a104 2
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)

d116 1
a116 2

_GLIBCXX_END_NAMESPACE
a119 2
#pragma GCC visibility pop

@


1.1.1.5
log
@GCC 4.2.1 release C++ standard library and runtime support code.
@
text
@a60 1

a71 1

a74 1

a80 1

a85 1

a91 1

@


1.1.1.5.30.1
log
@file exception was added on branch RELENG_8_4 on 2013-03-28 13:01:38 +0000
@
text
@d1 135
@


1.1.1.5.30.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 135
// Exception Handling support header for -*- C++ -*-

// Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
// 2004, 2005, 2006, 2007
// Free Software Foundation
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// 
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with GCC; see the file COPYING.  If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.

// As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

/** @@file exception
 *  This is a Standard C++ Library header.
 */

#ifndef __EXCEPTION__
#define __EXCEPTION__

#pragma GCC visibility push(default)

#include <bits/c++config.h>

extern "C++" {

namespace std 
{
  /**
   *  @@brief Base class for all library exceptions.
   *
   *  This is the base class for all exceptions thrown by the standard
   *  library, and by certain language expressions.  You are free to derive
   *  your own %exception classes, or use a different hierarchy, or to
   *  throw non-class data (e.g., fundamental types).
   */
  class exception 
  {
  public:
    exception() throw() { }
    virtual ~exception() throw();

    /** Returns a C-style character string describing the general cause
     *  of the current error.  */
    virtual const char* what() const throw();
  };

  /** If an %exception is thrown which is not listed in a function's
   *  %exception specification, one of these may be thrown.  */
  class bad_exception : public exception 
  {
  public:
    bad_exception() throw() { }

    // This declaration is not useless:
    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
    virtual ~bad_exception() throw();

    // See comment in eh_exception.cc.
    virtual const char* what() const throw();
  };

  /// If you write a replacement %terminate handler, it must be of this type.
  typedef void (*terminate_handler) ();

  /// If you write a replacement %unexpected 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();

  /** 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() __attribute__ ((__noreturn__));

  /// Takes a new handler function as an argument, returns the old function.
  unexpected_handler set_unexpected(unexpected_handler) throw();

  /** The runtime will call this function if an %exception is thrown which
   *  violates the function's %exception specification.  */
  void unexpected() __attribute__ ((__noreturn__));

  /** [18.6.4]/1:  "Returns true after completing evaluation of a
   *  throw-expression until either completing initialization of the
   *  exception-declaration in the matching handler or entering @@c unexpected()
   *  due to the throw; or after entering @@c terminate() for any reason
   *  other than an explicit call to @@c terminate().  [Note: This includes
   *  stack unwinding [15.2].  end note]"
   *
   *  2:  "When @@c uncaught_exception() is true, throwing an %exception can
   *  result in a call of @@c terminate() (15.5.1)."
   */
  bool uncaught_exception() throw();
} // namespace std

_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)

  /** A replacement for the standard terminate_handler which prints more
      information about the terminating exception (if any) on stderr.  Call
      @@code
        std::set_terminate (__gnu_cxx::__verbose_terminate_handler)
      @@endcode
      to use.  For more info, see
      http://gcc.gnu.org/onlinedocs/libstdc++/19_diagnostics/howto.html#4

      In 3.4 and later, this is on by default.
  */
  void __verbose_terminate_handler ();

_GLIBCXX_END_NAMESPACE
  
} // extern "C++"

#pragma GCC visibility pop

#endif
@


