1 /*
2 * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
3 * Copyright (c) Imagination Technologies Limited, UK
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sub license, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
12 *
13 * The above copyright notice and this permission notice (including the
14 * next paragraph) shall be included in all copies or substantial portions
15 * of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 */
25
26
27 /*!****************************************************************************
28 @File img_defs.h
29
30 @Title Common header containing type definitions for portability
31
32 @Author Imagination Technologies
33
34 @date August 2001
35
36 @Platform cross platform / environment
37
38 @Description Contains variable and structure definitions. Any platform
39 specific types should be defined in this file.
40
41 @DoxygenVer
42
43 ******************************************************************************/
44
45 /******************************************************************************
46 Modifications :-
47
48 $Log: img_defs.h $
49 *****************************************************************************/
50 #if !defined (__IMG_DEFS_H__)
51 #define __IMG_DEFS_H__
52
53 #include "img_types.h"
54
55 /*!
56 *****************************************************************************
57 * These types should be changed on a per-platform basis to retain
58 * the indicated number of bits per type. e.g.: A DP_INT_16 should be
59 * always reflect a signed 16 bit value.
60 *****************************************************************************/
61
62 typedef enum img_tag_TriStateSwitch {
63 IMG_ON = 0x00,
64 IMG_OFF,
65 IMG_IGNORE
66
67 } img_TriStateSwitch, * img_pTriStateSwitch;
68
69 #define IMG_SUCCESS 0
70 #define IMG_FAILED -1
71
72 #define IMG_NULL 0
73 #define IMG_NO_REG 1
74
75 #if defined (NO_INLINE_FUNCS)
76 #define INLINE
77 #define FORCE_INLINE
78 #else
79 #if defined(_UITRON_)
80 #define INLINE
81 #define FORCE_INLINE static
82 #define INLINE_IS_PRAGMA
83 #else
84 #if defined (__cplusplus)
85 #define INLINE inline
86 #define FORCE_INLINE inline
87 #else
88 #define INLINE __inline
89 #if defined(UNDER_CE) || defined(UNDER_XP) || defined(UNDER_VISTA)
90 #define FORCE_INLINE __forceinline
91 #else
92 #define FORCE_INLINE static __inline
93 #endif
94 #endif
95 #endif
96 #endif
97
98 /* Use this in any file, or use attributes under GCC - see below */
99 #ifndef PVR_UNREFERENCED_PARAMETER
100 #define PVR_UNREFERENCED_PARAMETER(param) (param) = (param)
101 #endif
102
103 /* The best way to supress unused parameter warnings using GCC is to use a
104 * variable attribute. Place the unref__ between the type and name of an
105 * unused parameter in a function parameter list, eg `int unref__ var'. This
106 * should only be used in GCC build environments, for example, in files that
107 * compile only on Linux. Other files should use UNREFERENCED_PARAMETER */
108 #ifdef __GNUC__
109 #define unref__ __attribute__ ((unused))
110 #else
111 #define unref__
112 #endif
113
114 #if defined(UNDER_CE)
115
116 /* This may need to be _stdcall */
117 #define IMG_CALLCONV
118 #define IMG_INTERNAL
119 #define IMG_RESTRICT
120
121 #define IMG_EXPORT
122 #define IMG_IMPORT IMG_EXPORT
123
124 #ifdef DEBUG
125 #define IMG_ABORT() TerminateProcess(GetCurrentProcess(), 0)
126 #else
127 #define IMG_ABORT() for(;;);
128 #endif
129 #else
130 #if defined(_WIN32)
131
132 #define IMG_CALLCONV __stdcall
133 #define IMG_INTERNAL
134 #define IMG_EXPORT __declspec(dllexport)
135 #define IMG_RESTRICT __restrict
136
137
138 /* IMG_IMPORT is defined as IMG_EXPORT so that headers and implementations match.
139 * Some compilers require the header to be declared IMPORT, while the implementation is declared EXPORT
140 */
141 #define IMG_IMPORT IMG_EXPORT
142 #if defined( UNDER_VISTA ) && !defined(USE_CODE)
143 #ifndef _INC_STDLIB
144 void __cdecl abort(void);
145 #endif
img_abort(void)146 __forceinline void __declspec(noreturn) img_abort(void)
147 {
148 for (;;) abort();
149 }
150 #define IMG_ABORT() img_abort()
151 #endif
152 #else
153 #if defined (__SYMBIAN32__)
154
155 #if defined (__GNUC__)
156 #define IMG_IMPORT
157 #define IMG_EXPORT __declspec(dllexport)
158 #define IMG_RESTRICT __restrict__
159 #define NONSHARABLE_CLASS(x) class x
160 #else
161 #if defined (__CC_ARM)
162 #define IMG_IMPORT __declspec(dllimport)
163 #define IMG_EXPORT __declspec(dllexport)
164 #pragma warning("Please make sure that you've enabled the --restrict mode t")
165 /* The ARMCC compiler currently requires that you've enabled the --restrict mode
166 to permit the use of this keyword */
167 # define IMG_RESTRICT /*restrict*/
168 #endif
169 #endif
170
171 #define IMG_CALLCONV
172 #define IMG_INTERNAL
173 #define IMG_EXTERNAL
174
175 #else
176 #if defined(__linux__)
177
178 #define IMG_CALLCONV
179 #define IMG_INTERNAL __attribute__ ((visibility ("hidden")))
180 #define IMG_EXPORT
181 #define IMG_IMPORT
182 #define IMG_RESTRICT __restrict__
183
184 #else
185 #if defined(_UITRON_)
186 #define IMG_CALLCONV
187 #define IMG_INTERNAL
188 #define IMG_EXPORT
189 #define IMG_RESTRICT
190
191 #define __cdecl
192
193 /* IMG_IMPORT is defined as IMG_EXPORT so that headers and implementations match.
194 * Some compilers require the header to be declared IMPORT, while the implementation is declared EXPORT
195 */
196 #define IMG_IMPORT IMG_EXPORT
197 #ifndef USE_CODE
198 void SysAbort(char const *pMessage);
199 #define IMG_ABORT() SysAbort("ImgAbort")
200 #endif
201 #else
202 #error("define an OS")
203 #endif
204 #endif
205 #endif
206 #endif
207 #endif
208
209 // Use default definition if not overridden
210 #ifndef IMG_ABORT
211 #define IMG_ABORT() abort()
212 #endif
213
214
215 #endif /* #if !defined (__IMG_DEFS_H__) */
216 /*****************************************************************************
217 End of file (IMG_DEFS.H)
218 *****************************************************************************/
219
220