/* -*- c++ -*- */
#ifndef __NEW__
#define __NEW__

#include <cstddef>

namespace std {
    struct nothrow_t {};
    extern const nothrow_t nothrow;
}

void* operator new(std::size_t);
void* operator new[](std::size_t);
void  operator delete(void*);
void  operator delete[](void*);
void* operator new(std::size_t, const std::nothrow_t&);
void* operator new[](std::size_t, const std::nothrow_t&);
void  operator delete(void*, const std::nothrow_t&);
void  operator delete[](void*, const std::nothrow_t&);

inline void* operator new(std::size_t, void* p) { return p; }
inline void* operator new[](std::size_t, void* p) { return p; }

// these next two are not really required, since exceptions are off
inline void  operator delete(void*, void*) { }
inline void  operator delete[](void*, void*) { }

#endif // __NEW__
