diff -r 000000000000 -r e4d67989cc36 genericopenlibs/cppstdlib/inc/new --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cppstdlib/inc/new Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(- * * ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * Name : new + * Part of : standard c++ library. + * + */ + + +#ifndef _SYMCPP_NEW_H_ +#define _SYMCPP_NEW_H_ + + +#ifndef _STLP_FEATURES_H +# include +#endif + + + +# ifdef __EABI__ +# include //Include the STLP internal header to make macros/typedefs expected of available. +# define _STLP_CSTDDEF //Define this macro so that doesn't get included by new_eabi.h + +#include "exception" + +namespace std +{ + typedef unsigned size_t; + + class bad_alloc : public exception + { + public: + IMPORT_C bad_alloc() __NO_THROW; + IMPORT_C bad_alloc(const bad_alloc&) __NO_THROW; + IMPORT_C bad_alloc& operator=(const bad_alloc&) __NO_THROW; // { return *this;} + + IMPORT_C virtual ~bad_alloc() __NO_THROW; // {} + IMPORT_C virtual const char* what() const __NO_THROW; // { return "bad_alloc";} + }; + + struct nothrow_t {}; + extern const nothrow_t nothrow; + + typedef void (*new_handler)(); + + IMPORT_C new_handler set_new_handler(new_handler) __NO_THROW; +} + +// Single-object form + +IMPORT_C void* operator new(std::size_t) __THROW(std::bad_alloc); +IMPORT_C void operator delete(void*) __NO_THROW; + +IMPORT_C void* operator new(std::size_t, const std::nothrow_t&) __NO_THROW; +IMPORT_C void operator delete(void*, const std::nothrow_t&) __NO_THROW; + +#ifndef __PLACEMENT_NEW_INLINE + #define __PLACEMENT_NEW_INLINE + inline void* operator new(std::size_t, void* p) __NO_THROW + { + return p; + } + + inline void operator delete(void*, void*) __NO_THROW + { + } +#endif + +// Array form + +IMPORT_C void* operator new[](std::size_t) __THROW(std::bad_alloc); +IMPORT_C void operator delete[](void*) __NO_THROW; + +IMPORT_C void* operator new[](std::size_t, const std::nothrow_t&) __NO_THROW; +IMPORT_C void operator delete[](void*, const std::nothrow_t&) __NO_THROW; + +#ifndef __PLACEMENT_VEC_NEW_INLINE + #define __PLACEMENT_VEC_NEW_INLINE + inline void* operator new[](std::size_t, void* p) __NO_THROW + { + return p; + } + + inline void operator delete[](void*, void*) __NO_THROW + { + } +#endif + +// Symbian additions (not part of standard C++). +IMPORT_C void* operator new(std::size_t, std::size_t) __NO_THROW; +IMPORT_C void operator delete(void*, std::size_t) __NO_THROW; + + + + + +# else +# include +# include +# include +namespace std { + + struct nothrow_t { }; + extern const nothrow_t nothrow; + + class bad_alloc : public exception { + public : + bad_alloc () __NO_THROW {}; + bad_alloc ( const bad_alloc &) __NO_THROW {}; + bad_alloc & operator =( const bad_alloc &) __NO_THROW { return *this;} + virtual const char * what () const __NO_THROW { return "bad_alloc";} + }; + + typedef void (* new_handler )(); + new_handler set_new_handler ( new_handler new_p ) __NO_THROW; +} + +IMPORT_C void* operator new (std::size_t) __THROW(std::bad_alloc); +IMPORT_C void operator delete (void*) __NO_THROW; + +IMPORT_C void* operator new (std::size_t, const std::nothrow_t&) __NO_THROW; +IMPORT_C void operator delete (void*, const std::nothrow_t&) __NO_THROW; + +IMPORT_C void* operator new[] (std::size_t) __THROW(std::bad_alloc); +IMPORT_C void operator delete[] (void*) __NO_THROW; + +IMPORT_C void* operator new[] (std::size_t, const std::nothrow_t&) __NO_THROW; +IMPORT_C void operator delete[] (void*, const std::nothrow_t&) __NO_THROW; + +# ifndef __PLACEMENT_NEW_INLINE +# define __PLACEMENT_NEW_INLINE +inline void* operator new(std::size_t, void* aBase) __NO_THROW + {return aBase;} + +inline void operator delete(void*, void*) __NO_THROW {} +# endif //__PLACEMENT_NEW_INLINE + +# ifndef __PLACEMENT_VEC_NEW_INLINE +# define __PLACEMENT_VEC_NEW_INLINE +inline void* operator new[](std::size_t, void* aBase) __NO_THROW + {return aBase;} + +inline void operator delete[](void* , void*) __NO_THROW {} +# endif //__PLACEMENT_VEC_NEW_INLINE + +# endif //__EABI__ +#endif //_SYMCPP_NEW_H_