0023024: Update headers of OCCT files
[occt.git] / src / Standard / Standard_Macro.hxx
1 // Copyright (c) 1998-1999 Matra Datavision
2 // Copyright (c) 1999-2012 OPEN CASCADE SAS
3 //
4 // The content of this file is subject to the Open CASCADE Technology Public
5 // License Version 6.5 (the "License"). You may not use the content of this file
6 // except in compliance with the License. Please obtain a copy of the License
7 // at http://www.opencascade.org and read it completely before using this file.
8 //
9 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11 //
12 // The Original Code and all software distributed under the License is
13 // distributed on an "AS IS" basis, without warranty of any kind, and the
14 // Initial Developer hereby disclaims all such warranties, including without
15 // limitation, any warranties of merchantability, fitness for a particular
16 // purpose or non-infringement. Please see the License for the specific terms
17 // and conditions governing the rights and limitations under the License.
18
19 // Purpose:   This file is intended to be the first file #included to any
20 //            Open CASCADE source. It defines platform-specific pre-processor 
21 //            macros necessary for correct compilation of Open CASCADE code
22
23 #ifndef _Standard_Macro_HeaderFile
24 # define _Standard_Macro_HeaderFile
25
26 #ifdef HAVE_CONFIG_H
27 # include <config.h>
28 #endif /* HAVE_CONFIG_H */
29
30 // Standard OCC macros: Handle(), STANDARD_TYPE()
31 # define   Handle(ClassName)      Handle_##ClassName
32 # define   STANDARD_TYPE(aType)   aType##_Type_()
33
34 //======================================================
35 // Windows-specific definitions
36 //======================================================
37
38 // check if WNT macro is not defined but compiler is MSVC
39 #if defined(_MSC_VER) && !defined(WNT)
40 #error "Wrong compiler options has been detected. Add /DWNT option for proper compilation!!!!!"
41 #endif
42
43 # if defined(WNT) && !defined(HAVE_NO_DLL)
44
45 #  ifndef Standard_EXPORT
46 #   define Standard_EXPORT __declspec( dllexport )
47 // For global variables :
48 #   define Standard_EXPORTEXTERN __declspec( dllexport ) extern
49 #   define Standard_EXPORTEXTERNC extern "C" __declspec( dllexport )
50 #  endif  /* Standard_EXPORT */
51
52 #  ifndef Standard_IMPORT
53 #   define Standard_IMPORT __declspec( dllimport ) extern
54 #   define Standard_IMPORTC extern "C" __declspec( dllimport )
55 #  endif  /* Standard_IMPORT */
56
57 // We must be careful including windows.h: it is really poisonous stuff!
58 // The most annoying are #defines of many identifiers that you could use in 
59 // normal code without knowing that Windows has its own knowledge of them...
60 // So lets protect ourselves by switching OFF as much as possible of this in advance.
61 // If someone needs more from windows.h, he is encouraged to #undef these symbols
62 // or include windows.h prior to any OCCT stuff.
63 // Note that we define each symbol to itself, so that it still can be used
64 // e.g. as name of variable, method etc.
65 #ifndef WIN32_LEAN_AND_MEAN
66 #define WIN32_LEAN_AND_MEAN   /* exclude extra Windows stuff */
67 #endif
68 #ifndef NOMINMAX
69 #define NOMINMAX NOMINMAX     /* avoid #define min() and max() */
70 #endif
71 #ifndef NOMSG
72 #define NOMSG NOMSG           /* avoid #define SendMessage etc. */
73 #endif
74 #ifndef NODRAWTEXT
75 #define NODRAWTEXT NODRAWTEXT /* avoid #define DrawText etc. */
76 #endif
77 #ifndef NONLS
78 #define NONLS NONLS           /* avoid #define CompareString etc. */
79 #endif
80 #ifndef NOGDI
81 #define NOGDI NOGDI           /* avoid #define SetPrinter (winspool.h) etc. */
82 #endif
83 #ifndef NOSERVICE
84 #define NOSERVICE NOSERVICE   
85 #endif
86 #ifndef NOKERNEL
87 #define NOKERNEL NOKERNEL
88 #endif
89 #ifndef NOUSER
90 #define NOUSER NOUSER
91 #endif
92 #ifndef NOMCX
93 #define NOMCX NOMCX
94 #endif
95 #ifndef NOIME
96 #define NOIME NOIME
97 #endif
98
99 # else  /* WNT */
100
101 //======================================================
102 // UNIX definitions
103 //======================================================
104
105 #  ifndef Standard_EXPORT
106 #   define Standard_EXPORT
107 // For global variables :
108 #   define Standard_EXPORTEXTERN extern
109 #   define Standard_EXPORTEXTERNC extern "C"
110 #  endif  /* Standard_EXPORT */
111
112 #  ifndef Standard_IMPORT
113 #   define Standard_IMPORT extern
114 #   define Standard_IMPORTC extern "C"
115 #  endif  /* Standard_IMPORT */
116
117 // Compatibility with old SUN compilers
118
119 // This preprocessor directive is a kludge to get around
120 // a bug in the Sun Workshop 5.0 compiler, it keeps the
121 // /usr/include/memory.h file from being #included
122 // with an incompatible extern "C" definition of memchr
123 // October 18, 2000  <rboehne@ricardo-us.com>
124 #if __SUNPRO_CC_COMPAT == 5
125 #define _MEMORY_H
126 #endif
127
128 # endif  /* WNT */
129
130 //======================================================
131 // Other
132 //======================================================
133
134 # ifndef __Standard_API
135 //#  ifdef WNT
136 #   if !defined(WNT) || defined(__Standard_DLL) || defined(__FSD_DLL) || defined(__MMgt_DLL) || defined(__OSD_DLL) || defined(__Plugin_DLL) || defined(__Quantity_DLL) || defined(__Resource_DLL) || defined(__SortTools_DLL) || defined(__StdFail_DLL) || defined(__Storage_DLL) || defined(__TColStd_DLL) || defined(__TCollection_DLL) || defined(__TShort_DLL) || defined(__Units_DLL) || defined(__UnitsAPI_DLL) || defined(__Dico_DLL)
137 #    define __Standard_API Standard_EXPORT
138 #    define __Standard_APIEXTERN Standard_EXPORTEXTERN
139 #   else
140 #    define __Standard_API Standard_IMPORT
141 #    define __Standard_APIEXTERN Standard_IMPORT
142 #   endif  // __Standard_DLL
143 //#  else
144 //#   define __Standard_API
145 //#  endif  // WNT
146 # endif  // __Standard_API
147
148 // Define _OCC64 variable (unless already defined) if platform is known to be 64-bit
149 #ifndef _OCC64
150 #if defined (__alpha) || defined(DECOSF1) || defined(_WIN64) || defined(__amd64) || defined(__x86_64)
151 #define _OCC64 1
152 #endif
153 #endif
154
155 #endif