head	1.1;
branch	1.1.1;
access;
symbols
	RELENG_8_4:1.1.1.6.0.30
	RELENG_9_1_0_RELEASE:1.1.1.6
	RELENG_9_1:1.1.1.6.0.28
	RELENG_9_1_BP:1.1.1.6
	RELENG_8_3_0_RELEASE:1.1.1.6
	RELENG_8_3:1.1.1.6.0.26
	RELENG_8_3_BP:1.1.1.6
	RELENG_9_0_0_RELEASE:1.1.1.6
	RELENG_9_0:1.1.1.6.0.24
	RELENG_9_0_BP:1.1.1.6
	RELENG_9:1.1.1.6.0.22
	RELENG_9_BP:1.1.1.6
	RELENG_7_4_0_RELEASE:1.1.1.6
	RELENG_8_2_0_RELEASE:1.1.1.6
	RELENG_7_4:1.1.1.6.0.20
	RELENG_7_4_BP:1.1.1.6
	RELENG_8_2:1.1.1.6.0.18
	RELENG_8_2_BP:1.1.1.6
	RELENG_8_1_0_RELEASE:1.1.1.6
	RELENG_8_1:1.1.1.6.0.16
	RELENG_8_1_BP:1.1.1.6
	RELENG_7_3_0_RELEASE:1.1.1.6
	RELENG_7_3:1.1.1.6.0.14
	RELENG_7_3_BP:1.1.1.6
	RELENG_8_0_0_RELEASE:1.1.1.6
	RELENG_8_0:1.1.1.6.0.12
	RELENG_8_0_BP:1.1.1.6
	RELENG_8:1.1.1.6.0.10
	RELENG_8_BP:1.1.1.6
	RELENG_7_2_0_RELEASE:1.1.1.6
	RELENG_7_2:1.1.1.6.0.8
	RELENG_7_2_BP:1.1.1.6
	RELENG_7_1_0_RELEASE:1.1.1.6
	RELENG_6_4_0_RELEASE:1.1.1.4
	RELENG_7_1:1.1.1.6.0.6
	RELENG_7_1_BP:1.1.1.6
	RELENG_6_4:1.1.1.4.0.20
	RELENG_6_4_BP:1.1.1.4
	RELENG_7_0_0_RELEASE:1.1.1.6
	RELENG_6_3_0_RELEASE:1.1.1.4
	RELENG_7_0:1.1.1.6.0.4
	RELENG_7_0_BP:1.1.1.6
	RELENG_6_3:1.1.1.4.0.18
	RELENG_6_3_BP:1.1.1.4
	RELENG_7:1.1.1.6.0.2
	RELENG_7_BP:1.1.1.6
	gcc_4_2_1_20070718_SVN126787:1.1.1.6
	gcc_4_2_0_20070514_SVN124707:1.1.1.5
	RELENG_6_2_0_RELEASE:1.1.1.4
	RELENG_6_2:1.1.1.4.0.16
	RELENG_6_2_BP:1.1.1.4
	gcc_3_4_6_20060825_SVN116475:1.1.1.4
	RELENG_5_5_0_RELEASE:1.1.1.4
	RELENG_5_5:1.1.1.4.0.14
	RELENG_5_5_BP:1.1.1.4
	RELENG_6_1_0_RELEASE:1.1.1.4
	RELENG_6_1:1.1.1.4.0.12
	RELENG_6_1_BP:1.1.1.4
	RELENG_6_0_0_RELEASE:1.1.1.4
	RELENG_6_0:1.1.1.4.0.10
	RELENG_6_0_BP:1.1.1.4
	RELENG_6:1.1.1.4.0.8
	RELENG_6_BP:1.1.1.4
	gcc_3_4_4_20050518:1.1.1.4
	RELENG_5_4_0_RELEASE:1.1.1.4
	RELENG_5_4:1.1.1.4.0.6
	RELENG_5_4_BP:1.1.1.4
	RELENG_5_3_0_RELEASE:1.1.1.4
	RELENG_5_3:1.1.1.4.0.4
	RELENG_5_3_BP:1.1.1.4
	RELENG_5:1.1.1.4.0.2
	RELENG_5_BP:1.1.1.4
	gcc_3_4_2_20040728:1.1.1.4
	RELENG_5_2_1_RELEASE:1.1.1.3
	RELENG_5_2_0_RELEASE:1.1.1.3
	RELENG_5_2:1.1.1.3.0.2
	RELENG_5_2_BP:1.1.1.3
	gcc_3_3_3_20031106:1.1.1.3
	gcc_3_3_1:1.1.1.3
	gcc_3_3_1_20030711:1.1.1.3
	RELENG_5_1_0_RELEASE:1.1.1.2
	RELENG_5_1:1.1.1.2.0.4
	RELENG_5_1_BP:1.1.1.2
	gcc_3_2_2_20030205:1.1.1.2
	RELENG_5_0_0_RELEASE:1.1.1.2
	RELENG_5_0:1.1.1.2.0.2
	RELENG_5_0_BP:1.1.1.2
	gcc_3_2_1:1.1.1.2
	BEFORE_GCC_3_2_1:1.1.1.2
	gcc_3_2_anoncvs_20021009:1.1.1.2
	gcc_3_2_anoncvs_20020916:1.1.1.2
	gcc_3_2_anoncvs_20020901:1.1.1.2
	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	2002.09.01.20.39.12;	author kan;	state Exp;
branches;
next	1.1.1.3;

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

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

1.1.1.5
date	2007.05.19.01.23.45;	author kan;	state Exp;
branches;
next	1.1.1.6;

1.1.1.6
date	2007.08.14.02.49.11;	author kan;	state Exp;
branches
	1.1.1.6.30.1;
next	;

1.1.1.6.30.1
date	2007.08.14.02.49.11;	author svnexp;	state dead;
branches;
next	1.1.1.6.30.2;

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


desc
@@


1.1
log
@Initial revision
@
text
@// The -*- C++ -*- dynamic memory management header.

// Copyright (C) 1994, 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 new
 *  The header @@c new defines several functions to manage dynamic memory and
 *  handling memory allocation errors; see
 *  http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more.
 */

#ifndef __NEW__
#define __NEW__

#include <cstddef>
#include <exception>

extern "C++" {

namespace std 
{
  /** @@c bad_alloc (or classes derived from it) is used to report allocation
   *  errors from the throwing forms of @@c new.  */
  class bad_alloc : public exception 
  {
  public:
    bad_alloc() throw() { }
    // This declaration is not useless:
    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
    virtual ~bad_alloc() throw();
  };

  struct nothrow_t { };
  extern const nothrow_t nothrow;
  /** If you write your own error handler to be called by @@c new, it must
   *  be of this type.  */
  typedef void (*new_handler)();
  /// Takes a replacement handler as the argument, returns the previous handler.
  new_handler set_new_handler(new_handler);
} // namespace std

//@@{
/** These are replaceable signatures:
 *  - normal single new and delete (no arguments, throw @@c bad_alloc on error)
 *  - normal array new and delete (same)
 *  - @@c nothrow single new and delete (take a @@c nothrow argument, return
 *    @@c NULL on error)
 *  - @@c nothrow array new and delete (same)
 *
 *  Placement new and delete signatures (take a memory address argument,
 *  does nothing) may not be replaced by a user's program.
*/
void* operator new(std::size_t) throw (std::bad_alloc);
void* operator new[](std::size_t) throw (std::bad_alloc);
void operator delete(void*) throw();
void operator delete[](void*) throw();
void* operator new(std::size_t, const std::nothrow_t&) throw();
void* operator new[](std::size_t, const std::nothrow_t&) throw();
void operator delete(void*, const std::nothrow_t&) throw();
void operator delete[](void*, const std::nothrow_t&) throw();

// Default placement versions of operator new.
inline void* operator new(std::size_t, void* __p) throw() { return __p; }
inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
//@@}
} // 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.2.1-prerelease libf2c bits from the FSF anoncvs repo gcc-3_2-branch on 1-Sep-2002 00:00:01 EDT.
@
text
@d65 1
a65 1
  new_handler set_new_handler(new_handler) throw();
a90 4

// Default placement versions of operator delete.
inline void  operator delete  (void*, void*) throw() { };
inline void  operator delete[](void*, void*) throw() { };
@


1.1.1.3
log
@Gcc 3.3.1-pre 2003-07-11 C++ support bits.
@
text
@d48 1
a48 4
  /**
   *  @@brief  Exception possibly thrown by @@c new.
   *
   *  @@c bad_alloc (or classes derived from it) is used to report allocation
@


1.1.1.4
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
d38 2
a39 2
#ifndef _NEW
#define _NEW
d96 2
a97 2
inline void  operator delete  (void*, void*) throw() { }
inline void  operator delete[](void*, void*) throw() { }
@


1.1.1.5
log
@GCC 4.2.0 release C++ standard library and runtime support code.
@
text
@d3 1
a3 2
// Copyright (C) 1994, 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.
a32 2
 *  This is a Standard C++ Library header.
 *
a43 2
#pragma GCC visibility push(default)

a59 2
    // See comment in eh_exception.cc.
    virtual const char* what() const throw();
a100 2
#pragma GCC visibility pop

@


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

a64 1

a69 1

a70 1

d74 1
a74 3

  /// Takes a replacement handler as the argument, returns the
  /// previous handler.
@


1.1.1.6.30.1
log
@file new was added on branch RELENG_8_4 on 2013-03-28 13:01:38 +0000
@
text
@d1 116
@


1.1.1.6.30.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 116
// The -*- C++ -*- dynamic memory management header.

// Copyright (C) 1994, 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 new
 *  This is a Standard C++ Library header.
 *
 *  The header @@c new defines several functions to manage dynamic memory and
 *  handling memory allocation errors; see
 *  http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more.
 */

#ifndef _NEW
#define _NEW

#include <cstddef>
#include <exception>

#pragma GCC visibility push(default)

extern "C++" {

namespace std 
{
  /**
   *  @@brief  Exception possibly thrown by @@c new.
   *
   *  @@c bad_alloc (or classes derived from it) is used to report allocation
   *  errors from the throwing forms of @@c new.  */
  class bad_alloc : public exception 
  {
  public:
    bad_alloc() throw() { }

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

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

  struct nothrow_t { };

  extern const nothrow_t nothrow;

  /** If you write your own error handler to be called by @@c new, it must
   *  be of this type.  */
  typedef void (*new_handler)();

  /// Takes a replacement handler as the argument, returns the
  /// previous handler.
  new_handler set_new_handler(new_handler) throw();
} // namespace std

//@@{
/** These are replaceable signatures:
 *  - normal single new and delete (no arguments, throw @@c bad_alloc on error)
 *  - normal array new and delete (same)
 *  - @@c nothrow single new and delete (take a @@c nothrow argument, return
 *    @@c NULL on error)
 *  - @@c nothrow array new and delete (same)
 *
 *  Placement new and delete signatures (take a memory address argument,
 *  does nothing) may not be replaced by a user's program.
*/
void* operator new(std::size_t) throw (std::bad_alloc);
void* operator new[](std::size_t) throw (std::bad_alloc);
void operator delete(void*) throw();
void operator delete[](void*) throw();
void* operator new(std::size_t, const std::nothrow_t&) throw();
void* operator new[](std::size_t, const std::nothrow_t&) throw();
void operator delete(void*, const std::nothrow_t&) throw();
void operator delete[](void*, const std::nothrow_t&) throw();

// Default placement versions of operator new.
inline void* operator new(std::size_t, void* __p) throw() { return __p; }
inline void* operator new[](std::size_t, void* __p) throw() { return __p; }

// Default placement versions of operator delete.
inline void  operator delete  (void*, void*) throw() { }
inline void  operator delete[](void*, void*) throw() { }
//@@}
} // extern "C++"

#pragma GCC visibility pop

#endif
@


