~ubuntu-branches/debian/sid/upx-ucl/sid

« back to all changes in this revision

Viewing changes to src/acc/acc_cxx.h

  • Committer: Bazaar Package Importer
  • Author(s): Robert Luberda
  • Date: 2006-06-13 21:23:23 UTC
  • mfrom: (1.3.1 upstream) (3.1.2 edgy)
  • Revision ID: james.westby@ubuntu.com-20060613212323-343yzs4jt6vr5483
* New upstream version.
* Standards-Version: 3.7.2 (no changes).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* ACC -- Automatic Compiler Configuration
2
 
 
3
 
   Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer
4
 
   All Rights Reserved.
5
 
 
6
 
   This software is a copyrighted work licensed under the terms of
7
 
   the GNU General Public License. Please consult the file "ACC_LICENSE"
8
 
   for details.
9
 
 
10
 
   Markus F.X.J. Oberhumer
11
 
   <markus@oberhumer.com>
12
 
   http://www.oberhumer.com/
13
 
 */
14
 
 
15
 
 
16
 
#ifndef __ACC_CXX_H_INCLUDED
17
 
#define __ACC_CXX_H_INCLUDED 1
18
 
#if defined(__cplusplus)
19
 
 
20
 
 
21
 
/*************************************************************************
22
 
// exception specification
23
 
//   ACC_CXX_NOTHROW
24
 
**************************************************************************/
25
 
 
26
 
#if defined(ACC_CXX_NOTHROW)
27
 
#elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul))
28
 
#elif (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450))
29
 
#elif (ACC_CC_HIGHC)
30
 
#elif (ACC_CC_MSC && (_MSC_VER < 1100))
31
 
#elif (ACC_CC_NDPC)
32
 
#elif (ACC_CC_TURBOC)
33
 
#elif (ACC_CC_WATCOMC && !defined(_CPPUNWIND))
34
 
#elif (ACC_CC_ZORTECHC)
35
 
#else
36
 
#  define ACC_CXX_NOTHROW   throw()
37
 
#endif
38
 
 
39
 
#if !defined(ACC_CXX_NOTHROW)
40
 
#  define ACC_CXX_NOTHROW
41
 
#endif
42
 
 
43
 
 
44
 
/*************************************************************************
45
 
// disable dynamic allocation of an object - private helpers
46
 
//   __ACC_CXX_DO_NEW
47
 
//   __ACC_CXX_DO_DELETE
48
 
**************************************************************************/
49
 
 
50
 
#if defined(__ACC_CXX_DO_NEW)
51
 
#elif (ACC_CC_NDPC || ACC_CC_PGI)
52
 
#  define __ACC_CXX_DO_NEW          { return 0; }
53
 
#else
54
 
#  define __ACC_CXX_DO_NEW          ;
55
 
#endif
56
 
 
57
 
 
58
 
/* need an implementation in case a class has virtual members */
59
 
#if defined(__ACC_CXX_DO_DELETE)
60
 
#elif (ACC_CC_BORLANDC || ACC_CC_TURBOC)
61
 
#  define __ACC_CXX_DO_DELETE       { }
62
 
#else
63
 
#  define __ACC_CXX_DO_DELETE       ACC_CXX_NOTHROW { }
64
 
#endif
65
 
 
66
 
 
67
 
/*************************************************************************
68
 
// disable dynamic allocation of an object
69
 
//   ACC_CXX_DISABLE_NEW_DELETE
70
 
**************************************************************************/
71
 
 
72
 
/*
73
 
#undef __ACC_CXX_HAVE_ARRAY_NEW
74
 
#undef __ACC_CXX_HAVE_PLACEMENT_NEW
75
 
#undef __ACC_CXX_HAVE_PLACEMENT_DELETE
76
 
*/
77
 
 
78
 
#if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450))
79
 
#elif (ACC_CC_MSC && ACC_MM_HUGE)
80
 
#  define ACC_CXX_DISABLE_NEW_DELETE private:
81
 
#elif (ACC_CC_MSC && (_MSC_VER < 1100))
82
 
#elif (ACC_CC_NDPC)
83
 
#elif (ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
84
 
#elif (ACC_CC_TURBOC)
85
 
#elif (ACC_CC_WATCOMC && (__WATCOMC__ < 1100))
86
 
#else
87
 
#  define __ACC_CXX_HAVE_ARRAY_NEW 1
88
 
#endif
89
 
 
90
 
#if (__ACC_CXX_HAVE_ARRAY_NEW)
91
 
#  define __ACC_CXX_HAVE_PLACEMENT_NEW 1
92
 
#endif
93
 
 
94
 
#if (__ACC_CXX_HAVE_PLACEMENT_NEW)
95
 
#  if (ACC_CC_GNUC >= 0x030000ul)
96
 
#    define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
97
 
#  elif (ACC_CC_INTELC)
98
 
#    define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
99
 
#  elif (ACC_CC_MSC && (_MSC_VER >= 1200))
100
 
#    define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
101
 
#  elif (ACC_CC_PGI)
102
 
#    define __ACC_CXX_HAVE_PLACEMENT_DELETE 1
103
 
#  endif
104
 
#endif
105
 
 
106
 
 
107
 
#if defined(ACC_CXX_DISABLE_NEW_DELETE)
108
 
#elif defined(new) || defined(delete)
109
 
#  define ACC_CXX_DISABLE_NEW_DELETE private:
110
 
#elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x025b00ul))
111
 
#  define ACC_CXX_DISABLE_NEW_DELETE private:
112
 
#elif  (ACC_CC_HIGHC)
113
 
#  define ACC_CXX_DISABLE_NEW_DELETE private:
114
 
#elif !defined(__ACC_CXX_HAVE_ARRAY_NEW)
115
 
   /* for old compilers use `protected' instead of `private' */
116
 
#  define ACC_CXX_DISABLE_NEW_DELETE \
117
 
        protected: static void operator delete(void*) __ACC_CXX_DO_DELETE \
118
 
        protected: static void* operator new(size_t) __ACC_CXX_DO_NEW \
119
 
        private:
120
 
#else
121
 
#  define ACC_CXX_DISABLE_NEW_DELETE \
122
 
        protected: static void operator delete(void*) __ACC_CXX_DO_DELETE \
123
 
                   static void operator delete[](void*) __ACC_CXX_DO_DELETE \
124
 
        private:   static void* operator new(size_t)  __ACC_CXX_DO_NEW \
125
 
                   static void* operator new[](size_t) __ACC_CXX_DO_NEW
126
 
#endif
127
 
 
128
 
 
129
 
/*************************************************************************
130
 
// Assist the compiler by defining a unique location for vtables and RTTI.
131
 
// Every class which has virtual member functions or derives from a class
132
 
// with virtual members should put this macro at the very top of its
133
 
// class declaration.
134
 
//   ACC_CXX_TRIGGER_FUNCTION
135
 
**************************************************************************/
136
 
 
137
 
#if defined(ACC_CXX_TRIGGER_FUNCTION)
138
 
#else
139
 
#  define ACC_CXX_TRIGGER_FUNCTION \
140
 
        protected: virtual const void* acc_cxx_trigger_function() const; \
141
 
        private:
142
 
#endif
143
 
 
144
 
#if defined(ACC_CXX_TRIGGER_FUNCTION_IMPL)
145
 
#else
146
 
#  define ACC_CXX_TRIGGER_FUNCTION_IMPL(klass) \
147
 
        const void* klass::acc_cxx_trigger_function() const { return 0; }
148
 
#endif
149
 
 
150
 
 
151
 
#endif /* __cplusplus */
152
 
#endif /* already included */
153
 
 
154
 
 
155
 
/*
156
 
vi:ts=4:et
157
 
*/