0023024: Update headers of OCCT files
[occt.git] / src / Standard / Standard_DefineAlloc.hxx
CommitLineData
b311480e 1// Created on: 2012-01-19
2// Created by: Dmitry BOBYLEV
3// Copyright (c) -1999 Matra Datavision
4// Copyright (c) 2012-2012 OPEN CASCADE SAS
5//
6// The content of this file is subject to the Open CASCADE Technology Public
7// License Version 6.5 (the "License"). You may not use the content of this file
8// except in compliance with the License. Please obtain a copy of the License
9// at http://www.opencascade.org and read it completely before using this file.
10//
11// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13//
14// The Original Code and all software distributed under the License is
15// distributed on an "AS IS" basis, without warranty of any kind, and the
16// Initial Developer hereby disclaims all such warranties, including without
17// limitation, any warranties of merchantability, fitness for a particular
18// purpose or non-infringement. Please see the License for the specific terms
19// and conditions governing the rights and limitations under the License.
20
1c35b92f 21
22#ifndef _Standard_DefineAlloc_HeaderFile
23# define _Standard_DefineAlloc_HeaderFile
24
25// Macro to override new and delete operators for arrays.
26// Defined to empty for old SUN compiler
27# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)
28# define DEFINE_STANDARD_ALLOC_ARRAY
29# else
30# define DEFINE_STANDARD_ALLOC_ARRAY \
31 void* operator new[] (size_t theSize) \
32 { \
33 return Standard::Allocate (theSize); \
34 } \
35 void operator delete[] (void* theAddress) \
36 { \
37 Standard::Free (theAddress); \
38 }
39# endif
40
41// Macro to override placement new and placement delete operators.
42// For Borland C and old SUN compilers do not define placement delete
43// as it is not supported.
44# if defined(__BORLANDC__) || (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530))
45# define DEFINE_STANDARD_ALLOC_PLACEMENT \
46 void* operator new (size_t, void* theAddress) \
47 { \
48 return theAddress; \
49 }
50# else
51# define DEFINE_STANDARD_ALLOC_PLACEMENT \
52 void* operator new (size_t, void* theAddress) \
53 { \
54 return theAddress; \
55 } \
56 void operator delete (void*, void*) \
57 { \
58 }
59# endif
60
61// Macro to override operators new and delete to use OCC memory manager
62# define DEFINE_STANDARD_ALLOC \
63 void* operator new (size_t theSize) \
64 { \
65 return Standard::Allocate (theSize); \
66 } \
67 void operator delete (void* theAddress) \
68 { \
69 Standard::Free ((Standard_Address&)theAddress); \
70 } \
71 DEFINE_STANDARD_ALLOC_ARRAY \
72 DEFINE_STANDARD_ALLOC_PLACEMENT
73
74// Declare operator new in global scope for old sun compiler
75#ifndef WORKAROUND_SUNPRO_NEW_PLACEMENT
76#define WORKAROUND_SUNPRO_NEW_PLACEMENT
77#if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x420)
78inline void* operator new(size_t,void* anAddress)
79{
80 return anAddress;
81}
82#endif
83#endif
84
e2e80ff7 85#endif