img_defs.h revision f91c8768670386683a281cc39141e21bdda9c97f
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/****************************************************************************** 46Modifications :- 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 62typedef 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 144void __cdecl abort(void); 145#endif 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 198void 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