This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/new.h

93 lines
2.1 KiB
C++

/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
#if __SC__ || __RCC__
#pragma once
#endif
#ifndef __NEW_H
#define __NEW_H 1
/* Define _CRTAPI1 (for compatibility with the NT SDK) */
#ifndef _CRTAPI1
#define _CRTAPI1 __cdecl
#endif
/* Define _CRTAPI2 (for compatibility with the NT SDK) */
#ifndef _CRTAPI2
#define _CRTAPI2 __cdecl
#endif
/* Define CRTIMP */
#ifndef _CRTIMP
#if defined(_WIN32) && defined(_DLL)
#define _CRTIMP __declspec(dllimport)
#else
#define _CRTIMP
#endif
#endif
extern "C++"
{
typedef int (__cdecl * _PNH)( unsigned ); //for Microsoft compatibility
typedef void (* PFVV)(); //as defined in ARM
_PNH __cdecl _set_new_handler(_PNH); //for Microsoft compatibility
PFVV set_new_handler(PFVV); //as defined in ARM
#if !defined(__NEW_DEFINED)
#define __NEW_DEFINED 1
void *operator new (unsigned size, void* ptr) throw();
#if _ENABLE_ARRAYNEW
void *operator new[](unsigned size, void* ptr) throw();
#endif
#endif
#if _WIN32
#include <exception>
namespace std
{
struct bad_alloc : exception
{
bad_alloc() throw() { }
bad_alloc(const bad_alloc&) throw() { }
bad_alloc& operator=(const bad_alloc&) throw() { return *this; }
virtual ~bad_alloc() throw();
virtual const char* what() const throw();
};
struct nothrow_t {};
extern const nothrow_t __cdecl nothrow;
typedef void (__cdecl *new_handler)();
new_handler __cdecl set_new_handler(new_handler new_p) throw();
}
// Implicitly declared ones
//void* operator new(unsigned size) throw(std::bad_alloc);
//void* operator new[](unsigned size) throw(std::bad_alloc);
//void operator delete(void* ptr) throw();
//void operator delete[](void* ptr) throw();
void* operator new(unsigned size, const std::nothrow_t&) throw();
void operator delete (void* ptr, void*) throw();
void operator delete(void* ptr, const std::nothrow_t&) throw();
#if _ENABLE_ARRAYNEW
void* operator new[](unsigned size, const std::nothrow_t&) throw();
void operator delete[](void* ptr, void*) throw();
void operator delete[](void* ptr, const std::nothrow_t&) throw();
#endif
#else
#endif
}
#endif