1*48a54d36SAndroid Build Coastguard Worker /* -*- Mode: C; tab-width: 4 -*- 2*48a54d36SAndroid Build Coastguard Worker * 3*48a54d36SAndroid Build Coastguard Worker * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved. 4*48a54d36SAndroid Build Coastguard Worker * 5*48a54d36SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*48a54d36SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*48a54d36SAndroid Build Coastguard Worker * You may obtain a copy of the License at 8*48a54d36SAndroid Build Coastguard Worker * 9*48a54d36SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*48a54d36SAndroid Build Coastguard Worker * 11*48a54d36SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*48a54d36SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*48a54d36SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*48a54d36SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*48a54d36SAndroid Build Coastguard Worker * limitations under the License. 16*48a54d36SAndroid Build Coastguard Worker */ 17*48a54d36SAndroid Build Coastguard Worker 18*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 19*48a54d36SAndroid Build Coastguard Worker /*! @header CommonServices 20*48a54d36SAndroid Build Coastguard Worker 21*48a54d36SAndroid Build Coastguard Worker Common Services for Mac OS X, Linux, Palm, VxWorks, Windows, and Windows CE. 22*48a54d36SAndroid Build Coastguard Worker */ 23*48a54d36SAndroid Build Coastguard Worker 24*48a54d36SAndroid Build Coastguard Worker #ifndef __COMMON_SERVICES__ 25*48a54d36SAndroid Build Coastguard Worker #define __COMMON_SERVICES__ 26*48a54d36SAndroid Build Coastguard Worker 27*48a54d36SAndroid Build Coastguard Worker #ifdef __cplusplus 28*48a54d36SAndroid Build Coastguard Worker extern "C" { 29*48a54d36SAndroid Build Coastguard Worker #endif 30*48a54d36SAndroid Build Coastguard Worker 31*48a54d36SAndroid Build Coastguard Worker #if 0 32*48a54d36SAndroid Build Coastguard Worker #pragma mark == Target == 33*48a54d36SAndroid Build Coastguard Worker #endif 34*48a54d36SAndroid Build Coastguard Worker 35*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 36*48a54d36SAndroid Build Coastguard Worker // Target 37*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 38*48a54d36SAndroid Build Coastguard Worker 39*48a54d36SAndroid Build Coastguard Worker // Macintosh 40*48a54d36SAndroid Build Coastguard Worker 41*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_MAC ) ) 42*48a54d36SAndroid Build Coastguard Worker #if( ( macintosh || __MACH__ ) && !KERNEL ) 43*48a54d36SAndroid Build Coastguard Worker // ConditionalMacros.h in CoreServices will define this TARGET_* flag. 44*48a54d36SAndroid Build Coastguard Worker #else 45*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_MAC 0 46*48a54d36SAndroid Build Coastguard Worker #endif 47*48a54d36SAndroid Build Coastguard Worker #endif 48*48a54d36SAndroid Build Coastguard Worker 49*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_API_MAC_OSX_KERNEL ) ) 50*48a54d36SAndroid Build Coastguard Worker #if( __MACH__ && KERNEL ) 51*48a54d36SAndroid Build Coastguard Worker #define TARGET_API_MAC_OSX_KERNEL 1 52*48a54d36SAndroid Build Coastguard Worker #else 53*48a54d36SAndroid Build Coastguard Worker #define TARGET_API_MAC_OSX_KERNEL 0 54*48a54d36SAndroid Build Coastguard Worker #endif 55*48a54d36SAndroid Build Coastguard Worker #endif 56*48a54d36SAndroid Build Coastguard Worker 57*48a54d36SAndroid Build Coastguard Worker // FreeBSD 58*48a54d36SAndroid Build Coastguard Worker 59*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_FREEBSD ) ) 60*48a54d36SAndroid Build Coastguard Worker #if( defined( __FreeBSD__ ) ) 61*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_FREEBSD 1 62*48a54d36SAndroid Build Coastguard Worker #else 63*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_FREEBSD 0 64*48a54d36SAndroid Build Coastguard Worker #endif 65*48a54d36SAndroid Build Coastguard Worker #endif 66*48a54d36SAndroid Build Coastguard Worker 67*48a54d36SAndroid Build Coastguard Worker // Linux 68*48a54d36SAndroid Build Coastguard Worker 69*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_LINUX ) ) 70*48a54d36SAndroid Build Coastguard Worker #if( defined( __linux__ ) ) 71*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_LINUX 1 72*48a54d36SAndroid Build Coastguard Worker #else 73*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_LINUX 0 74*48a54d36SAndroid Build Coastguard Worker #endif 75*48a54d36SAndroid Build Coastguard Worker #endif 76*48a54d36SAndroid Build Coastguard Worker 77*48a54d36SAndroid Build Coastguard Worker // Solaris 78*48a54d36SAndroid Build Coastguard Worker 79*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_SOLARIS ) ) 80*48a54d36SAndroid Build Coastguard Worker #if( defined(solaris) || (defined(__SVR4) && defined(sun)) ) 81*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_SOLARIS 1 82*48a54d36SAndroid Build Coastguard Worker #else 83*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_SOLARIS 0 84*48a54d36SAndroid Build Coastguard Worker #endif 85*48a54d36SAndroid Build Coastguard Worker #endif 86*48a54d36SAndroid Build Coastguard Worker 87*48a54d36SAndroid Build Coastguard Worker // Palm 88*48a54d36SAndroid Build Coastguard Worker 89*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_PALM ) ) 90*48a54d36SAndroid Build Coastguard Worker #if( defined( __PALMOS_TRAPS__ ) || defined( __PALMOS_ARMLET__ ) ) 91*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_PALM 1 92*48a54d36SAndroid Build Coastguard Worker #else 93*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_PALM 0 94*48a54d36SAndroid Build Coastguard Worker #endif 95*48a54d36SAndroid Build Coastguard Worker #endif 96*48a54d36SAndroid Build Coastguard Worker 97*48a54d36SAndroid Build Coastguard Worker // VxWorks 98*48a54d36SAndroid Build Coastguard Worker 99*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_VXWORKS ) ) 100*48a54d36SAndroid Build Coastguard Worker 101*48a54d36SAndroid Build Coastguard Worker // No predefined macro for VxWorks so just assume VxWorks if nothing else is set. 102*48a54d36SAndroid Build Coastguard Worker 103*48a54d36SAndroid Build Coastguard Worker #if( !macintosh && !__MACH__ && !defined( __FreeBSD__ ) && !defined( __linux__ ) && !defined ( __SVR4 ) && !defined ( __sun ) && !defined( __PALMOS_TRAPS__ ) && !defined( __PALMOS_ARMLET__ ) && !defined( _WIN32 ) ) 104*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_VXWORKS 1 105*48a54d36SAndroid Build Coastguard Worker #else 106*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_VXWORKS 0 107*48a54d36SAndroid Build Coastguard Worker #endif 108*48a54d36SAndroid Build Coastguard Worker #endif 109*48a54d36SAndroid Build Coastguard Worker 110*48a54d36SAndroid Build Coastguard Worker // Windows 111*48a54d36SAndroid Build Coastguard Worker 112*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_WIN32 ) ) 113*48a54d36SAndroid Build Coastguard Worker #if( macintosh || __MACH__ ) 114*48a54d36SAndroid Build Coastguard Worker // ConditionalMacros.h in CoreServices will define this TARGET_* flag. 115*48a54d36SAndroid Build Coastguard Worker #else 116*48a54d36SAndroid Build Coastguard Worker #if( defined( _WIN32 ) ) 117*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_WIN32 1 118*48a54d36SAndroid Build Coastguard Worker #else 119*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_WIN32 0 120*48a54d36SAndroid Build Coastguard Worker #endif 121*48a54d36SAndroid Build Coastguard Worker #endif 122*48a54d36SAndroid Build Coastguard Worker #endif 123*48a54d36SAndroid Build Coastguard Worker 124*48a54d36SAndroid Build Coastguard Worker // Windows CE 125*48a54d36SAndroid Build Coastguard Worker 126*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_OS_WINDOWS_CE ) ) 127*48a54d36SAndroid Build Coastguard Worker #if( defined( _WIN32_WCE ) ) 128*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_WINDOWS_CE 1 129*48a54d36SAndroid Build Coastguard Worker #else 130*48a54d36SAndroid Build Coastguard Worker #define TARGET_OS_WINDOWS_CE 0 131*48a54d36SAndroid Build Coastguard Worker #endif 132*48a54d36SAndroid Build Coastguard Worker #endif 133*48a54d36SAndroid Build Coastguard Worker 134*48a54d36SAndroid Build Coastguard Worker #if 0 135*48a54d36SAndroid Build Coastguard Worker #pragma mark == Includes == 136*48a54d36SAndroid Build Coastguard Worker #endif 137*48a54d36SAndroid Build Coastguard Worker 138*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 139*48a54d36SAndroid Build Coastguard Worker // Includes 140*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 141*48a54d36SAndroid Build Coastguard Worker 142*48a54d36SAndroid Build Coastguard Worker #if( !KERNEL ) 143*48a54d36SAndroid Build Coastguard Worker #if defined(WIN32) && !defined(_WSPIAPI_COUNTOF) 144*48a54d36SAndroid Build Coastguard Worker #define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0])) 145*48a54d36SAndroid Build Coastguard Worker #endif 146*48a54d36SAndroid Build Coastguard Worker #include <stddef.h> 147*48a54d36SAndroid Build Coastguard Worker #endif 148*48a54d36SAndroid Build Coastguard Worker 149*48a54d36SAndroid Build Coastguard Worker #if( ( macintosh || __MACH__ ) && !KERNEL ) 150*48a54d36SAndroid Build Coastguard Worker 151*48a54d36SAndroid Build Coastguard Worker #if( defined( __MWERKS__ ) ) 152*48a54d36SAndroid Build Coastguard Worker #if( __option( c9x ) ) 153*48a54d36SAndroid Build Coastguard Worker #include <stdbool.h> 154*48a54d36SAndroid Build Coastguard Worker #endif 155*48a54d36SAndroid Build Coastguard Worker #else 156*48a54d36SAndroid Build Coastguard Worker #include <stdbool.h> 157*48a54d36SAndroid Build Coastguard Worker #endif 158*48a54d36SAndroid Build Coastguard Worker 159*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 160*48a54d36SAndroid Build Coastguard Worker 161*48a54d36SAndroid Build Coastguard Worker #if( __MACH__ ) 162*48a54d36SAndroid Build Coastguard Worker 163*48a54d36SAndroid Build Coastguard Worker // Mac OS X 164*48a54d36SAndroid Build Coastguard Worker 165*48a54d36SAndroid Build Coastguard Worker #include <sys/types.h> 166*48a54d36SAndroid Build Coastguard Worker #include <netinet/in.h> 167*48a54d36SAndroid Build Coastguard Worker #include <arpa/inet.h> 168*48a54d36SAndroid Build Coastguard Worker #include <fcntl.h> 169*48a54d36SAndroid Build Coastguard Worker #include <pthread.h> 170*48a54d36SAndroid Build Coastguard Worker #include <sys/ioctl.h> 171*48a54d36SAndroid Build Coastguard Worker #include <sys/socket.h> 172*48a54d36SAndroid Build Coastguard Worker #include <unistd.h> 173*48a54d36SAndroid Build Coastguard Worker 174*48a54d36SAndroid Build Coastguard Worker #else 175*48a54d36SAndroid Build Coastguard Worker 176*48a54d36SAndroid Build Coastguard Worker // Classic Mac OS 177*48a54d36SAndroid Build Coastguard Worker 178*48a54d36SAndroid Build Coastguard Worker #include <ConditionalMacros.h> 179*48a54d36SAndroid Build Coastguard Worker #include <MacTypes.h> 180*48a54d36SAndroid Build Coastguard Worker 181*48a54d36SAndroid Build Coastguard Worker #endif 182*48a54d36SAndroid Build Coastguard Worker 183*48a54d36SAndroid Build Coastguard Worker #elif( KERNEL ) 184*48a54d36SAndroid Build Coastguard Worker 185*48a54d36SAndroid Build Coastguard Worker // Mac OS X Kernel 186*48a54d36SAndroid Build Coastguard Worker 187*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 188*48a54d36SAndroid Build Coastguard Worker 189*48a54d36SAndroid Build Coastguard Worker #include <libkern/OSTypes.h> 190*48a54d36SAndroid Build Coastguard Worker #include <sys/types.h> 191*48a54d36SAndroid Build Coastguard Worker 192*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_FREEBSD ) 193*48a54d36SAndroid Build Coastguard Worker 194*48a54d36SAndroid Build Coastguard Worker // FreeBSD 195*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 196*48a54d36SAndroid Build Coastguard Worker #include <pthread.h> 197*48a54d36SAndroid Build Coastguard Worker #include <netinet/in.h> 198*48a54d36SAndroid Build Coastguard Worker #include <arpa/inet.h> 199*48a54d36SAndroid Build Coastguard Worker #include <sys/socket.h> 200*48a54d36SAndroid Build Coastguard Worker 201*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_LINUX ) 202*48a54d36SAndroid Build Coastguard Worker 203*48a54d36SAndroid Build Coastguard Worker // Linux 204*48a54d36SAndroid Build Coastguard Worker 205*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 206*48a54d36SAndroid Build Coastguard Worker #include <arpa/inet.h> 207*48a54d36SAndroid Build Coastguard Worker 208*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_SOLARIS ) 209*48a54d36SAndroid Build Coastguard Worker 210*48a54d36SAndroid Build Coastguard Worker // Solaris 211*48a54d36SAndroid Build Coastguard Worker 212*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 213*48a54d36SAndroid Build Coastguard Worker 214*48a54d36SAndroid Build Coastguard Worker #include <arpa/inet.h> 215*48a54d36SAndroid Build Coastguard Worker #include <arpa/nameser.h> 216*48a54d36SAndroid Build Coastguard Worker 217*48a54d36SAndroid Build Coastguard Worker #if ( defined( BYTE_ORDER ) && defined( LITTLE_ENDIAN ) && ( BYTE_ORDER == LITTLE_ENDIAN ) ) 218*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_LITTLE_ENDIAN 1 219*48a54d36SAndroid Build Coastguard Worker #endif 220*48a54d36SAndroid Build Coastguard Worker #if ( defined( BYTE_ORDER ) && defined( BIG_ENDIAN ) && ( BYTE_ORDER == BIG_ENDIAN ) ) 221*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BIG_ENDIAN 1 222*48a54d36SAndroid Build Coastguard Worker #endif 223*48a54d36SAndroid Build Coastguard Worker 224*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_PALM ) 225*48a54d36SAndroid Build Coastguard Worker 226*48a54d36SAndroid Build Coastguard Worker // Palm (no special includes yet). 227*48a54d36SAndroid Build Coastguard Worker 228*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_VXWORKS ) 229*48a54d36SAndroid Build Coastguard Worker 230*48a54d36SAndroid Build Coastguard Worker // VxWorks 231*48a54d36SAndroid Build Coastguard Worker 232*48a54d36SAndroid Build Coastguard Worker #include "vxWorks.h" 233*48a54d36SAndroid Build Coastguard Worker 234*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_WIN32 ) 235*48a54d36SAndroid Build Coastguard Worker 236*48a54d36SAndroid Build Coastguard Worker // Windows 237*48a54d36SAndroid Build Coastguard Worker 238*48a54d36SAndroid Build Coastguard Worker #if( !defined( WIN32_WINDOWS ) ) 239*48a54d36SAndroid Build Coastguard Worker #define WIN32_WINDOWS 0x0401 240*48a54d36SAndroid Build Coastguard Worker #endif 241*48a54d36SAndroid Build Coastguard Worker 242*48a54d36SAndroid Build Coastguard Worker #if( !defined( _WIN32_WINDOWS ) ) 243*48a54d36SAndroid Build Coastguard Worker #define _WIN32_WINDOWS 0x0401 244*48a54d36SAndroid Build Coastguard Worker #endif 245*48a54d36SAndroid Build Coastguard Worker 246*48a54d36SAndroid Build Coastguard Worker #if( !defined( WIN32_LEAN_AND_MEAN ) ) 247*48a54d36SAndroid Build Coastguard Worker #define WIN32_LEAN_AND_MEAN // Needed to avoid redefinitions by Windows interfaces. 248*48a54d36SAndroid Build Coastguard Worker #endif 249*48a54d36SAndroid Build Coastguard Worker 250*48a54d36SAndroid Build Coastguard Worker #if( defined( __MWERKS__ ) ) 251*48a54d36SAndroid Build Coastguard Worker 252*48a54d36SAndroid Build Coastguard Worker #if( __option( c9x ) ) 253*48a54d36SAndroid Build Coastguard Worker #include <stdbool.h> 254*48a54d36SAndroid Build Coastguard Worker #endif 255*48a54d36SAndroid Build Coastguard Worker 256*48a54d36SAndroid Build Coastguard Worker #include <stdint.h> 257*48a54d36SAndroid Build Coastguard Worker 258*48a54d36SAndroid Build Coastguard Worker #elif( defined( _MSC_VER ) ) 259*48a54d36SAndroid Build Coastguard Worker 260*48a54d36SAndroid Build Coastguard Worker #pragma warning( disable:4127 ) // Disable "conditional expression is constant" warning for debug macros. 261*48a54d36SAndroid Build Coastguard Worker #pragma warning( disable:4706 ) // Disable "assignment within conditional expression" for Microsoft headers. 262*48a54d36SAndroid Build Coastguard Worker 263*48a54d36SAndroid Build Coastguard Worker #endif 264*48a54d36SAndroid Build Coastguard Worker 265*48a54d36SAndroid Build Coastguard Worker #include <windows.h> 266*48a54d36SAndroid Build Coastguard Worker #include <winsock2.h> 267*48a54d36SAndroid Build Coastguard Worker #include <Ws2tcpip.h> 268*48a54d36SAndroid Build Coastguard Worker 269*48a54d36SAndroid Build Coastguard Worker #if( defined( _MSC_VER ) ) 270*48a54d36SAndroid Build Coastguard Worker #pragma warning( default:4706 ) 271*48a54d36SAndroid Build Coastguard Worker #endif 272*48a54d36SAndroid Build Coastguard Worker 273*48a54d36SAndroid Build Coastguard Worker #else 274*48a54d36SAndroid Build Coastguard Worker #error unknown OS - update this file to support your OS 275*48a54d36SAndroid Build Coastguard Worker #endif 276*48a54d36SAndroid Build Coastguard Worker 277*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_BUILD_MAIN ) ) 278*48a54d36SAndroid Build Coastguard Worker #if( !TARGET_OS_VXWORKS ) 279*48a54d36SAndroid Build Coastguard Worker #define TARGET_BUILD_MAIN 1 280*48a54d36SAndroid Build Coastguard Worker #endif 281*48a54d36SAndroid Build Coastguard Worker #endif 282*48a54d36SAndroid Build Coastguard Worker 283*48a54d36SAndroid Build Coastguard Worker #if( __GNUC__ || !TARGET_OS_VXWORKS ) 284*48a54d36SAndroid Build Coastguard Worker #define TARGET_LANGUAGE_C_LIKE 1 285*48a54d36SAndroid Build Coastguard Worker #else 286*48a54d36SAndroid Build Coastguard Worker #define TARGET_LANGUAGE_C_LIKE 0 287*48a54d36SAndroid Build Coastguard Worker #endif 288*48a54d36SAndroid Build Coastguard Worker 289*48a54d36SAndroid Build Coastguard Worker #if 0 290*48a54d36SAndroid Build Coastguard Worker #pragma mark == CPU == 291*48a54d36SAndroid Build Coastguard Worker #endif 292*48a54d36SAndroid Build Coastguard Worker 293*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 294*48a54d36SAndroid Build Coastguard Worker // CPU 295*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 296*48a54d36SAndroid Build Coastguard Worker 297*48a54d36SAndroid Build Coastguard Worker // PowerPC 298*48a54d36SAndroid Build Coastguard Worker 299*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_CPU_PPC ) ) 300*48a54d36SAndroid Build Coastguard Worker #if( defined( __ppc__ ) || defined( __PPC__ ) || defined( powerpc ) || defined( ppc ) || defined( _M_MPPC ) ) 301*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_PPC 1 302*48a54d36SAndroid Build Coastguard Worker #else 303*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_PPC 0 304*48a54d36SAndroid Build Coastguard Worker #endif 305*48a54d36SAndroid Build Coastguard Worker #endif 306*48a54d36SAndroid Build Coastguard Worker 307*48a54d36SAndroid Build Coastguard Worker // x86 308*48a54d36SAndroid Build Coastguard Worker 309*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_CPU_X86 ) ) 310*48a54d36SAndroid Build Coastguard Worker #if( __INTEL__ || defined( __i386__ ) || defined( i386 ) || defined( intel ) || defined( _M_IX86 ) ) 311*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_X86 1 312*48a54d36SAndroid Build Coastguard Worker #else 313*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_X86 0 314*48a54d36SAndroid Build Coastguard Worker #endif 315*48a54d36SAndroid Build Coastguard Worker #endif 316*48a54d36SAndroid Build Coastguard Worker 317*48a54d36SAndroid Build Coastguard Worker // MIPS 318*48a54d36SAndroid Build Coastguard Worker 319*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_CPU_MIPS ) ) 320*48a54d36SAndroid Build Coastguard Worker #if( __MIPS__ || defined( MIPS32 ) || defined( R3000 ) || defined( R4000 ) || defined( R4650 ) || defined( _M_MRX000 ) ) 321*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_MIPS 1 322*48a54d36SAndroid Build Coastguard Worker #else 323*48a54d36SAndroid Build Coastguard Worker #define TARGET_CPU_MIPS 0 324*48a54d36SAndroid Build Coastguard Worker #endif 325*48a54d36SAndroid Build Coastguard Worker #endif 326*48a54d36SAndroid Build Coastguard Worker 327*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_CPU_PPC ) && !defined( TARGET_CPU_X86 ) && !defined( TARGET_CPU_MIPS ) ) 328*48a54d36SAndroid Build Coastguard Worker #error unknown CPU - update this file to support your CPU 329*48a54d36SAndroid Build Coastguard Worker #endif 330*48a54d36SAndroid Build Coastguard Worker 331*48a54d36SAndroid Build Coastguard Worker #if 0 332*48a54d36SAndroid Build Coastguard Worker #pragma mark == Byte Order == 333*48a54d36SAndroid Build Coastguard Worker #endif 334*48a54d36SAndroid Build Coastguard Worker 335*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 336*48a54d36SAndroid Build Coastguard Worker // Byte Order 337*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 338*48a54d36SAndroid Build Coastguard Worker 339*48a54d36SAndroid Build Coastguard Worker // TARGET_RT_LITTLE_ENDIAN 340*48a54d36SAndroid Build Coastguard Worker 341*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_LITTLE_ENDIAN ) ) 342*48a54d36SAndroid Build Coastguard Worker #if( MIPSEL || IL_LITTLE_ENDIAN || defined( __LITTLE_ENDIAN__ ) || \ 343*48a54d36SAndroid Build Coastguard Worker ( defined( BYTE_ORDER ) && defined( LITTLE_ENDIAN ) && ( BYTE_ORDER == LITTLE_ENDIAN ) ) || \ 344*48a54d36SAndroid Build Coastguard Worker ( defined( _BYTE_ORDER ) && defined( _LITTLE_ENDIAN ) && ( _BYTE_ORDER == _LITTLE_ENDIAN ) ) || \ 345*48a54d36SAndroid Build Coastguard Worker ( defined( __BYTE_ORDER ) && defined( __LITTLE_ENDIAN ) && ( __BYTE_ORDER == __LITTLE_ENDIAN ) ) || \ 346*48a54d36SAndroid Build Coastguard Worker TARGET_CPU_X86 || ( defined( TARGET_RT_BIG_ENDIAN ) && !TARGET_RT_BIG_ENDIAN ) ) 347*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_LITTLE_ENDIAN 1 348*48a54d36SAndroid Build Coastguard Worker #else 349*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_LITTLE_ENDIAN 0 350*48a54d36SAndroid Build Coastguard Worker #endif 351*48a54d36SAndroid Build Coastguard Worker #endif 352*48a54d36SAndroid Build Coastguard Worker 353*48a54d36SAndroid Build Coastguard Worker // TARGET_RT_BIG_ENDIAN 354*48a54d36SAndroid Build Coastguard Worker 355*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_BIG_ENDIAN ) ) 356*48a54d36SAndroid Build Coastguard Worker #if( MIPSEB || IL_BIG_ENDIAN || defined( __BIG_ENDIAN__ ) || \ 357*48a54d36SAndroid Build Coastguard Worker ( defined( BYTE_ORDER ) && defined( BIG_ENDIAN ) && ( BYTE_ORDER == BIG_ENDIAN ) ) || \ 358*48a54d36SAndroid Build Coastguard Worker ( defined( _BYTE_ORDER ) && defined( _BIG_ENDIAN ) && ( _BYTE_ORDER == _BIG_ENDIAN ) ) || \ 359*48a54d36SAndroid Build Coastguard Worker ( defined( __BYTE_ORDER ) && defined( __BIG_ENDIAN ) && ( __BYTE_ORDER == __BIG_ENDIAN ) ) || \ 360*48a54d36SAndroid Build Coastguard Worker ( defined( TARGET_RT_LITTLE_ENDIAN ) && !TARGET_RT_LITTLE_ENDIAN ) ) 361*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BIG_ENDIAN 1 362*48a54d36SAndroid Build Coastguard Worker #else 363*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BIG_ENDIAN 0 364*48a54d36SAndroid Build Coastguard Worker #endif 365*48a54d36SAndroid Build Coastguard Worker #endif 366*48a54d36SAndroid Build Coastguard Worker 367*48a54d36SAndroid Build Coastguard Worker #if( defined( TARGET_RT_LITTLE_ENDIAN ) && !defined( TARGET_RT_BIG_ENDIAN ) ) 368*48a54d36SAndroid Build Coastguard Worker #if( TARGET_RT_LITTLE_ENDIAN ) 369*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BIG_ENDIAN 0 370*48a54d36SAndroid Build Coastguard Worker #else 371*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BIG_ENDIAN 1 372*48a54d36SAndroid Build Coastguard Worker #endif 373*48a54d36SAndroid Build Coastguard Worker #endif 374*48a54d36SAndroid Build Coastguard Worker 375*48a54d36SAndroid Build Coastguard Worker #if( defined( TARGET_RT_BIG_ENDIAN ) && !defined( TARGET_RT_LITTLE_ENDIAN ) ) 376*48a54d36SAndroid Build Coastguard Worker #if( TARGET_RT_BIG_ENDIAN ) 377*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_LITTLE_ENDIAN 0 378*48a54d36SAndroid Build Coastguard Worker #else 379*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_LITTLE_ENDIAN 1 380*48a54d36SAndroid Build Coastguard Worker #endif 381*48a54d36SAndroid Build Coastguard Worker #endif 382*48a54d36SAndroid Build Coastguard Worker 383*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_LITTLE_ENDIAN ) || !defined( TARGET_RT_BIG_ENDIAN ) ) 384*48a54d36SAndroid Build Coastguard Worker #error unknown byte order - update this file to support your byte order 385*48a54d36SAndroid Build Coastguard Worker #endif 386*48a54d36SAndroid Build Coastguard Worker 387*48a54d36SAndroid Build Coastguard Worker // TARGET_RT_BYTE_ORDER 388*48a54d36SAndroid Build Coastguard Worker 389*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_BYTE_ORDER_BIG_ENDIAN ) ) 390*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BYTE_ORDER_BIG_ENDIAN 1234 391*48a54d36SAndroid Build Coastguard Worker #endif 392*48a54d36SAndroid Build Coastguard Worker 393*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_BYTE_ORDER_LITTLE_ENDIAN ) ) 394*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BYTE_ORDER_LITTLE_ENDIAN 4321 395*48a54d36SAndroid Build Coastguard Worker #endif 396*48a54d36SAndroid Build Coastguard Worker 397*48a54d36SAndroid Build Coastguard Worker #if( !defined( TARGET_RT_BYTE_ORDER ) ) 398*48a54d36SAndroid Build Coastguard Worker #if( TARGET_RT_LITTLE_ENDIAN ) 399*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BYTE_ORDER TARGET_RT_BYTE_ORDER_LITTLE_ENDIAN 400*48a54d36SAndroid Build Coastguard Worker #else 401*48a54d36SAndroid Build Coastguard Worker #define TARGET_RT_BYTE_ORDER TARGET_RT_BYTE_ORDER_BIG_ENDIAN 402*48a54d36SAndroid Build Coastguard Worker #endif 403*48a54d36SAndroid Build Coastguard Worker #endif 404*48a54d36SAndroid Build Coastguard Worker 405*48a54d36SAndroid Build Coastguard Worker #if 0 406*48a54d36SAndroid Build Coastguard Worker #pragma mark == Constants == 407*48a54d36SAndroid Build Coastguard Worker #endif 408*48a54d36SAndroid Build Coastguard Worker 409*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 410*48a54d36SAndroid Build Coastguard Worker // Constants 411*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 412*48a54d36SAndroid Build Coastguard Worker 413*48a54d36SAndroid Build Coastguard Worker #if( !TARGET_OS_MAC ) 414*48a54d36SAndroid Build Coastguard Worker #define CR '\r' 415*48a54d36SAndroid Build Coastguard Worker #endif 416*48a54d36SAndroid Build Coastguard Worker 417*48a54d36SAndroid Build Coastguard Worker #define LF '\n' 418*48a54d36SAndroid Build Coastguard Worker #define CRSTR "\r" 419*48a54d36SAndroid Build Coastguard Worker #define LFSTR "\n" 420*48a54d36SAndroid Build Coastguard Worker #define CRLF "\r\n" 421*48a54d36SAndroid Build Coastguard Worker #define CRCR "\r\r" 422*48a54d36SAndroid Build Coastguard Worker 423*48a54d36SAndroid Build Coastguard Worker #if 0 424*48a54d36SAndroid Build Coastguard Worker #pragma mark == Compatibility == 425*48a54d36SAndroid Build Coastguard Worker #endif 426*48a54d36SAndroid Build Coastguard Worker 427*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 428*48a54d36SAndroid Build Coastguard Worker // Compatibility 429*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 430*48a54d36SAndroid Build Coastguard Worker 431*48a54d36SAndroid Build Coastguard Worker // Macros to allow the same code to work on Windows and other sockets API-compatible platforms. 432*48a54d36SAndroid Build Coastguard Worker 433*48a54d36SAndroid Build Coastguard Worker #if( TARGET_OS_WIN32 ) 434*48a54d36SAndroid Build Coastguard Worker #define close_compat( X ) closesocket( X ) 435*48a54d36SAndroid Build Coastguard Worker #define errno_compat() (int) GetLastError() 436*48a54d36SAndroid Build Coastguard Worker #define set_errno_compat( X ) SetLastError( X ) 437*48a54d36SAndroid Build Coastguard Worker #define EWOULDBLOCK_compat WSAEWOULDBLOCK 438*48a54d36SAndroid Build Coastguard Worker #define ETIMEDOUT_compat WSAETIMEDOUT 439*48a54d36SAndroid Build Coastguard Worker #define ENOTCONN_compat WSAENOTCONN 440*48a54d36SAndroid Build Coastguard Worker #define IsValidSocket( X ) ( ( X ) != INVALID_SOCKET ) 441*48a54d36SAndroid Build Coastguard Worker #define kInvalidSocketRef INVALID_SOCKET 442*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 443*48a54d36SAndroid Build Coastguard Worker typedef SOCKET SocketRef; 444*48a54d36SAndroid Build Coastguard Worker #endif 445*48a54d36SAndroid Build Coastguard Worker #else 446*48a54d36SAndroid Build Coastguard Worker #define close_compat( X ) close( X ) 447*48a54d36SAndroid Build Coastguard Worker #define errno_compat() errno 448*48a54d36SAndroid Build Coastguard Worker #define set_errno_compat( X ) do { errno = ( X ); } while( 0 ) 449*48a54d36SAndroid Build Coastguard Worker #define EWOULDBLOCK_compat EWOULDBLOCK 450*48a54d36SAndroid Build Coastguard Worker #define ETIMEDOUT_compat ETIMEDOUT 451*48a54d36SAndroid Build Coastguard Worker #define ENOTCONN_compat ENOTCONN 452*48a54d36SAndroid Build Coastguard Worker #define IsValidSocket( X ) ( ( X ) >= 0 ) 453*48a54d36SAndroid Build Coastguard Worker #define kInvalidSocketRef -1 454*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 455*48a54d36SAndroid Build Coastguard Worker typedef int SocketRef; 456*48a54d36SAndroid Build Coastguard Worker #endif 457*48a54d36SAndroid Build Coastguard Worker #endif 458*48a54d36SAndroid Build Coastguard Worker 459*48a54d36SAndroid Build Coastguard Worker // socklen_t is not defined on the following platforms so emulate it if not defined: 460*48a54d36SAndroid Build Coastguard Worker // 461*48a54d36SAndroid Build Coastguard Worker // - Pre-Panther Mac OS X. Panther defines SO_NOADDRERR so trigger off that. 462*48a54d36SAndroid Build Coastguard Worker // - Windows SDK prior to 2003. 2003+ SDK's define EAI_AGAIN so trigger off that. 463*48a54d36SAndroid Build Coastguard Worker // - VxWorks 464*48a54d36SAndroid Build Coastguard Worker 465*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 466*48a54d36SAndroid Build Coastguard Worker #if( ( TARGET_OS_MAC && !defined( SO_NOADDRERR ) ) || ( TARGET_OS_WIN32 && !defined( EAI_AGAIN ) ) || TARGET_OS_VXWORKS ) 467*48a54d36SAndroid Build Coastguard Worker typedef int socklen_t; 468*48a54d36SAndroid Build Coastguard Worker #endif 469*48a54d36SAndroid Build Coastguard Worker #endif 470*48a54d36SAndroid Build Coastguard Worker 471*48a54d36SAndroid Build Coastguard Worker // ssize_t is not defined on the following platforms so emulate it if not defined: 472*48a54d36SAndroid Build Coastguard Worker // 473*48a54d36SAndroid Build Coastguard Worker // - Mac OS X when not building with BSD headers 474*48a54d36SAndroid Build Coastguard Worker // - Windows 475*48a54d36SAndroid Build Coastguard Worker 476*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 477*48a54d36SAndroid Build Coastguard Worker #if( !defined(_SSIZE_T) && ( TARGET_OS_WIN32 || !defined( _BSD_SSIZE_T_DEFINED_ ) ) && !TARGET_OS_FREEBSD && !TARGET_OS_LINUX && !TARGET_OS_VXWORKS && !TARGET_OS_MAC) 478*48a54d36SAndroid Build Coastguard Worker typedef int ssize_t; 479*48a54d36SAndroid Build Coastguard Worker #endif 480*48a54d36SAndroid Build Coastguard Worker #endif 481*48a54d36SAndroid Build Coastguard Worker 482*48a54d36SAndroid Build Coastguard Worker // sockaddr_storage is not supported on non-IPv6 machines so alias it to an IPv4-compatible structure. 483*48a54d36SAndroid Build Coastguard Worker 484*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 485*48a54d36SAndroid Build Coastguard Worker #if( !defined( AF_INET6 ) ) 486*48a54d36SAndroid Build Coastguard Worker #define sockaddr_storage sockaddr_in 487*48a54d36SAndroid Build Coastguard Worker #define ss_family sin_family 488*48a54d36SAndroid Build Coastguard Worker #endif 489*48a54d36SAndroid Build Coastguard Worker #endif 490*48a54d36SAndroid Build Coastguard Worker 491*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 492*48a54d36SAndroid Build Coastguard Worker /*! @defined SOCKADDR_IS_IP_LOOPBACK 493*48a54d36SAndroid Build Coastguard Worker 494*48a54d36SAndroid Build Coastguard Worker @abstract Determines if a sockaddr is an IPv4 or IPv6 loopback address (if IPv6 is supported). 495*48a54d36SAndroid Build Coastguard Worker */ 496*48a54d36SAndroid Build Coastguard Worker 497*48a54d36SAndroid Build Coastguard Worker #if( defined( AF_INET6 ) ) 498*48a54d36SAndroid Build Coastguard Worker #define SOCKADDR_IS_IP_LOOPBACK( SA ) \ 499*48a54d36SAndroid Build Coastguard Worker ( ( (const struct sockaddr *)( SA ) )->sa_family == AF_INET ) \ 500*48a54d36SAndroid Build Coastguard Worker ? ( ( (const struct sockaddr_in *)( SA ) )->sin_addr.s_addr == htonl( INADDR_LOOPBACK ) ) \ 501*48a54d36SAndroid Build Coastguard Worker : ( ( (const struct sockaddr *)( SA ) )->sa_family == AF_INET6 ) \ 502*48a54d36SAndroid Build Coastguard Worker ? IN6_IS_ADDR_LOOPBACK( &( (const struct sockaddr_in6 *)( SA ) )->sin6_addr ) \ 503*48a54d36SAndroid Build Coastguard Worker : 0 504*48a54d36SAndroid Build Coastguard Worker #else 505*48a54d36SAndroid Build Coastguard Worker #define SOCKADDR_IS_IP_LOOPBACK( SA ) \ 506*48a54d36SAndroid Build Coastguard Worker ( ( (const struct sockaddr *)( SA ) )->sa_family == AF_INET ) \ 507*48a54d36SAndroid Build Coastguard Worker ? ( ( (const struct sockaddr_in *)( SA ) )->sin_addr.s_addr == htonl( INADDR_LOOPBACK ) ) \ 508*48a54d36SAndroid Build Coastguard Worker : 0 509*48a54d36SAndroid Build Coastguard Worker #endif 510*48a54d36SAndroid Build Coastguard Worker 511*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 512*48a54d36SAndroid Build Coastguard Worker /*! @defined SOCKADDR_IS_IP_LINK_LOCAL 513*48a54d36SAndroid Build Coastguard Worker 514*48a54d36SAndroid Build Coastguard Worker @abstract Determines if a sockaddr is an IPv4 or IPv6 link-local address (if IPv6 is supported). 515*48a54d36SAndroid Build Coastguard Worker */ 516*48a54d36SAndroid Build Coastguard Worker 517*48a54d36SAndroid Build Coastguard Worker #if( defined( AF_INET6 ) ) 518*48a54d36SAndroid Build Coastguard Worker #define SOCKADDR_IS_IP_LINK_LOCAL( SA ) \ 519*48a54d36SAndroid Build Coastguard Worker ( ( ( (const struct sockaddr *)( SA ) )->sa_family == AF_INET ) \ 520*48a54d36SAndroid Build Coastguard Worker ? ( ( ( (uint8_t *)( &( (const struct sockaddr_in *)( SA ) )->sin_addr ) )[ 0 ] == 169 ) && \ 521*48a54d36SAndroid Build Coastguard Worker ( ( (uint8_t *)( &( (const struct sockaddr_in *)( SA ) )->sin_addr ) )[ 1 ] == 254 ) ) \ 522*48a54d36SAndroid Build Coastguard Worker : IN6_IS_ADDR_LOOPBACK( &( (const struct sockaddr_in6 *)( SA ) )->sin6_addr ) ) 523*48a54d36SAndroid Build Coastguard Worker #else 524*48a54d36SAndroid Build Coastguard Worker #define SOCKADDR_IS_IP_LINK_LOCAL( SA ) \ 525*48a54d36SAndroid Build Coastguard Worker ( ( ( (const struct sockaddr *)( SA ) )->sa_family == AF_INET ) \ 526*48a54d36SAndroid Build Coastguard Worker ? ( ( ( (uint8_t *)( &( (const struct sockaddr_in *)( SA ) )->sin_addr ) )[ 0 ] == 169 ) && \ 527*48a54d36SAndroid Build Coastguard Worker ( ( (uint8_t *)( &( (const struct sockaddr_in *)( SA ) )->sin_addr ) )[ 1 ] == 254 ) ) \ 528*48a54d36SAndroid Build Coastguard Worker : 0 ) 529*48a54d36SAndroid Build Coastguard Worker #endif 530*48a54d36SAndroid Build Coastguard Worker 531*48a54d36SAndroid Build Coastguard Worker // _beginthreadex and _endthreadex are not supported on Windows CE 2.1 or later (the C runtime issues with leaking 532*48a54d36SAndroid Build Coastguard Worker // resources have apparently been resolved and they seem to have just ripped out support for the API) so map it to 533*48a54d36SAndroid Build Coastguard Worker // CreateThread on Windows CE. 534*48a54d36SAndroid Build Coastguard Worker 535*48a54d36SAndroid Build Coastguard Worker #if( TARGET_OS_WINDOWS_CE ) 536*48a54d36SAndroid Build Coastguard Worker #define _beginthreadex_compat( SECURITY_PTR, STACK_SIZE, START_ADDRESS, ARG_LIST, FLAGS, THREAD_ID_PTR ) \ 537*48a54d36SAndroid Build Coastguard Worker (uintptr_t) CreateThread( SECURITY_PTR, STACK_SIZE, (LPTHREAD_START_ROUTINE) START_ADDRESS, ARG_LIST, FLAGS, \ 538*48a54d36SAndroid Build Coastguard Worker (LPDWORD) THREAD_ID_PTR ) 539*48a54d36SAndroid Build Coastguard Worker 540*48a54d36SAndroid Build Coastguard Worker #define _endthreadex_compat( RESULT ) ExitThread( (DWORD) RESULT ) 541*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_WIN32 ) 542*48a54d36SAndroid Build Coastguard Worker #define _beginthreadex_compat _beginthreadex 543*48a54d36SAndroid Build Coastguard Worker #define _endthreadex_compat _endthreadex 544*48a54d36SAndroid Build Coastguard Worker #endif 545*48a54d36SAndroid Build Coastguard Worker 546*48a54d36SAndroid Build Coastguard Worker // The C99 "inline" keyword is not supported by Microsoft compilers, but they do support __inline so map it when needed. 547*48a54d36SAndroid Build Coastguard Worker 548*48a54d36SAndroid Build Coastguard Worker #if( defined( _MSC_VER ) ) 549*48a54d36SAndroid Build Coastguard Worker #define inline_compat __inline 550*48a54d36SAndroid Build Coastguard Worker #else 551*48a54d36SAndroid Build Coastguard Worker #define inline_compat inline 552*48a54d36SAndroid Build Coastguard Worker #endif 553*48a54d36SAndroid Build Coastguard Worker 554*48a54d36SAndroid Build Coastguard Worker // Calling conventions 555*48a54d36SAndroid Build Coastguard Worker 556*48a54d36SAndroid Build Coastguard Worker #if( !defined( CALLBACK_COMPAT ) ) 557*48a54d36SAndroid Build Coastguard Worker #if( TARGET_OS_WIN32 || TARGET_OS_WINDOWS_CE ) 558*48a54d36SAndroid Build Coastguard Worker #define CALLBACK_COMPAT CALLBACK 559*48a54d36SAndroid Build Coastguard Worker #else 560*48a54d36SAndroid Build Coastguard Worker #define CALLBACK_COMPAT 561*48a54d36SAndroid Build Coastguard Worker #endif 562*48a54d36SAndroid Build Coastguard Worker #endif 563*48a54d36SAndroid Build Coastguard Worker 564*48a54d36SAndroid Build Coastguard Worker #if 0 565*48a54d36SAndroid Build Coastguard Worker #pragma mark == Macros == 566*48a54d36SAndroid Build Coastguard Worker #endif 567*48a54d36SAndroid Build Coastguard Worker 568*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 569*48a54d36SAndroid Build Coastguard Worker /*! @defined kSizeCString 570*48a54d36SAndroid Build Coastguard Worker 571*48a54d36SAndroid Build Coastguard Worker @abstract A meta-value to pass to supported routines to indicate the size should be calculated with strlen. 572*48a54d36SAndroid Build Coastguard Worker */ 573*48a54d36SAndroid Build Coastguard Worker 574*48a54d36SAndroid Build Coastguard Worker #define kSizeCString ( (size_t) -1 ) 575*48a54d36SAndroid Build Coastguard Worker 576*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 577*48a54d36SAndroid Build Coastguard Worker /*! @defined sizeof_array 578*48a54d36SAndroid Build Coastguard Worker 579*48a54d36SAndroid Build Coastguard Worker @abstract Determines the number of elements in an array. 580*48a54d36SAndroid Build Coastguard Worker */ 581*48a54d36SAndroid Build Coastguard Worker 582*48a54d36SAndroid Build Coastguard Worker #define sizeof_array( X ) ( sizeof( X ) / sizeof( X[ 0 ] ) ) 583*48a54d36SAndroid Build Coastguard Worker 584*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 585*48a54d36SAndroid Build Coastguard Worker /*! @defined sizeof_element 586*48a54d36SAndroid Build Coastguard Worker 587*48a54d36SAndroid Build Coastguard Worker @abstract Determines the size of an array element. 588*48a54d36SAndroid Build Coastguard Worker */ 589*48a54d36SAndroid Build Coastguard Worker 590*48a54d36SAndroid Build Coastguard Worker #define sizeof_element( X ) sizeof( X[ 0 ] ) 591*48a54d36SAndroid Build Coastguard Worker 592*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 593*48a54d36SAndroid Build Coastguard Worker /*! @defined sizeof_string 594*48a54d36SAndroid Build Coastguard Worker 595*48a54d36SAndroid Build Coastguard Worker @abstract Determines the size of a constant C string, excluding the null terminator. 596*48a54d36SAndroid Build Coastguard Worker */ 597*48a54d36SAndroid Build Coastguard Worker 598*48a54d36SAndroid Build Coastguard Worker #define sizeof_string( X ) ( sizeof( ( X ) ) - 1 ) 599*48a54d36SAndroid Build Coastguard Worker 600*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 601*48a54d36SAndroid Build Coastguard Worker /*! @defined sizeof_field 602*48a54d36SAndroid Build Coastguard Worker 603*48a54d36SAndroid Build Coastguard Worker @abstract Determines the size of a field of a type. 604*48a54d36SAndroid Build Coastguard Worker */ 605*48a54d36SAndroid Build Coastguard Worker 606*48a54d36SAndroid Build Coastguard Worker #define sizeof_field( TYPE, FIELD ) sizeof( ( ( (TYPE *) 0 )->FIELD ) ) 607*48a54d36SAndroid Build Coastguard Worker 608*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 609*48a54d36SAndroid Build Coastguard Worker /*! @function RoundUp 610*48a54d36SAndroid Build Coastguard Worker 611*48a54d36SAndroid Build Coastguard Worker @abstract Rounds X up to a multiple of Y. 612*48a54d36SAndroid Build Coastguard Worker */ 613*48a54d36SAndroid Build Coastguard Worker 614*48a54d36SAndroid Build Coastguard Worker #define RoundUp( X, Y ) ( ( X ) + ( ( Y ) - ( ( X ) % ( Y ) ) ) ) 615*48a54d36SAndroid Build Coastguard Worker 616*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 617*48a54d36SAndroid Build Coastguard Worker /*! @function IsAligned 618*48a54d36SAndroid Build Coastguard Worker 619*48a54d36SAndroid Build Coastguard Worker @abstract Returns non-zero if X is aligned to a Y byte boundary and 0 if not. Y must be a power of 2. 620*48a54d36SAndroid Build Coastguard Worker */ 621*48a54d36SAndroid Build Coastguard Worker 622*48a54d36SAndroid Build Coastguard Worker #define IsAligned( X, Y ) ( ( ( X ) & ( ( Y ) - 1 ) ) == 0 ) 623*48a54d36SAndroid Build Coastguard Worker 624*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 625*48a54d36SAndroid Build Coastguard Worker /*! @function IsFieldAligned 626*48a54d36SAndroid Build Coastguard Worker 627*48a54d36SAndroid Build Coastguard Worker @abstract Returns non-zero if FIELD of type TYPE is aligned to a Y byte boundary and 0 if not. Y must be a power of 2. 628*48a54d36SAndroid Build Coastguard Worker */ 629*48a54d36SAndroid Build Coastguard Worker 630*48a54d36SAndroid Build Coastguard Worker #define IsFieldAligned( X, TYPE, FIELD, Y ) IsAligned( ( (uintptr_t)( X ) ) + offsetof( TYPE, FIELD ), ( Y ) ) 631*48a54d36SAndroid Build Coastguard Worker 632*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 633*48a54d36SAndroid Build Coastguard Worker /*! @function AlignDown 634*48a54d36SAndroid Build Coastguard Worker 635*48a54d36SAndroid Build Coastguard Worker @abstract Aligns X down to a Y byte boundary. Y must be a power of 2. 636*48a54d36SAndroid Build Coastguard Worker */ 637*48a54d36SAndroid Build Coastguard Worker 638*48a54d36SAndroid Build Coastguard Worker #define AlignDown( X, Y ) ( ( X ) & ~( ( Y ) - 1 ) ) 639*48a54d36SAndroid Build Coastguard Worker 640*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 641*48a54d36SAndroid Build Coastguard Worker /*! @function AlignUp 642*48a54d36SAndroid Build Coastguard Worker 643*48a54d36SAndroid Build Coastguard Worker @abstract Aligns X up to a Y byte boundary. Y must be a power of 2. 644*48a54d36SAndroid Build Coastguard Worker */ 645*48a54d36SAndroid Build Coastguard Worker 646*48a54d36SAndroid Build Coastguard Worker #define AlignUp( X, Y ) ( ( ( X ) + ( ( Y ) - 1 ) ) & ~( ( Y ) - 1 ) ) 647*48a54d36SAndroid Build Coastguard Worker 648*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 649*48a54d36SAndroid Build Coastguard Worker /*! @function Min 650*48a54d36SAndroid Build Coastguard Worker 651*48a54d36SAndroid Build Coastguard Worker @abstract Returns the lesser of X and Y. 652*48a54d36SAndroid Build Coastguard Worker */ 653*48a54d36SAndroid Build Coastguard Worker 654*48a54d36SAndroid Build Coastguard Worker #if( !defined( Min ) ) 655*48a54d36SAndroid Build Coastguard Worker #define Min( X, Y ) ( ( ( X ) < ( Y ) ) ? ( X ) : ( Y ) ) 656*48a54d36SAndroid Build Coastguard Worker #endif 657*48a54d36SAndroid Build Coastguard Worker 658*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 659*48a54d36SAndroid Build Coastguard Worker /*! @function Max 660*48a54d36SAndroid Build Coastguard Worker 661*48a54d36SAndroid Build Coastguard Worker @abstract Returns the greater of X and Y. 662*48a54d36SAndroid Build Coastguard Worker */ 663*48a54d36SAndroid Build Coastguard Worker 664*48a54d36SAndroid Build Coastguard Worker #if( !defined( Max ) ) 665*48a54d36SAndroid Build Coastguard Worker #define Max( X, Y ) ( ( ( X ) > ( Y ) ) ? ( X ) : ( Y ) ) 666*48a54d36SAndroid Build Coastguard Worker #endif 667*48a54d36SAndroid Build Coastguard Worker 668*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 669*48a54d36SAndroid Build Coastguard Worker /*! @function InsertBits 670*48a54d36SAndroid Build Coastguard Worker 671*48a54d36SAndroid Build Coastguard Worker @abstract Inserts BITS (both 0 and 1 bits) into X, controlled by MASK and SHIFT, and returns the result. 672*48a54d36SAndroid Build Coastguard Worker 673*48a54d36SAndroid Build Coastguard Worker @discussion 674*48a54d36SAndroid Build Coastguard Worker 675*48a54d36SAndroid Build Coastguard Worker MASK is the bitmask of the bits in the final position. 676*48a54d36SAndroid Build Coastguard Worker SHIFT is the number of bits to shift left for 1 to reach the first bit position of MASK. 677*48a54d36SAndroid Build Coastguard Worker 678*48a54d36SAndroid Build Coastguard Worker For example, if you wanted to insert 0x3 into the leftmost 4 bits of a 32-bit value: 679*48a54d36SAndroid Build Coastguard Worker 680*48a54d36SAndroid Build Coastguard Worker InsertBits( 0, 0x3, 0xF0000000U, 28 ) == 0x30000000 681*48a54d36SAndroid Build Coastguard Worker */ 682*48a54d36SAndroid Build Coastguard Worker 683*48a54d36SAndroid Build Coastguard Worker #define InsertBits( X, BITS, MASK, SHIFT ) ( ( ( X ) & ~( MASK ) ) | ( ( ( BITS ) << ( SHIFT ) ) & ( MASK ) ) ) 684*48a54d36SAndroid Build Coastguard Worker 685*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 686*48a54d36SAndroid Build Coastguard Worker /*! @function ExtractBits 687*48a54d36SAndroid Build Coastguard Worker 688*48a54d36SAndroid Build Coastguard Worker @abstract Extracts bits from X, controlled by MASK and SHIFT, and returns the result. 689*48a54d36SAndroid Build Coastguard Worker 690*48a54d36SAndroid Build Coastguard Worker @discussion 691*48a54d36SAndroid Build Coastguard Worker 692*48a54d36SAndroid Build Coastguard Worker MASK is the bitmask of the bits in the final position. 693*48a54d36SAndroid Build Coastguard Worker SHIFT is the number of bits to shift right to right justify MASK. 694*48a54d36SAndroid Build Coastguard Worker 695*48a54d36SAndroid Build Coastguard Worker For example, if you had a 32-bit value (e.g. 0x30000000) wanted the left-most 4 bits (e.g. 3 in this example): 696*48a54d36SAndroid Build Coastguard Worker 697*48a54d36SAndroid Build Coastguard Worker ExtractBits( 0x30000000U, 0xF0000000U, 28 ) == 0x3 698*48a54d36SAndroid Build Coastguard Worker */ 699*48a54d36SAndroid Build Coastguard Worker 700*48a54d36SAndroid Build Coastguard Worker #define ExtractBits( X, MASK, SHIFT ) ( ( ( X ) >> ( SHIFT ) ) & ( ( MASK ) >> ( SHIFT ) ) ) 701*48a54d36SAndroid Build Coastguard Worker 702*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 703*48a54d36SAndroid Build Coastguard Worker /*! @function Stringify 704*48a54d36SAndroid Build Coastguard Worker 705*48a54d36SAndroid Build Coastguard Worker @abstract Stringify's an expression. 706*48a54d36SAndroid Build Coastguard Worker 707*48a54d36SAndroid Build Coastguard Worker @discussion 708*48a54d36SAndroid Build Coastguard Worker 709*48a54d36SAndroid Build Coastguard Worker Stringify macros to process raw text passed via -D options to C string constants. The double-wrapping is necessary 710*48a54d36SAndroid Build Coastguard Worker because the C preprocessor doesn't perform its normal argument expansion pre-scan with stringified macros so the 711*48a54d36SAndroid Build Coastguard Worker -D macro needs to be expanded once via the wrapper macro then stringified so the raw text is stringified. Otherwise, 712*48a54d36SAndroid Build Coastguard Worker the replacement value would be used instead of the symbolic name (only for preprocessor symbols like #defines). 713*48a54d36SAndroid Build Coastguard Worker 714*48a54d36SAndroid Build Coastguard Worker For example: 715*48a54d36SAndroid Build Coastguard Worker 716*48a54d36SAndroid Build Coastguard Worker #define kMyConstant 1 717*48a54d36SAndroid Build Coastguard Worker 718*48a54d36SAndroid Build Coastguard Worker printf( "%s", Stringify( kMyConstant ) ); // Prints "kMyConstant" 719*48a54d36SAndroid Build Coastguard Worker printf( "%s", StringifyExpansion( kMyConstant ) ); // Prints "1" 720*48a54d36SAndroid Build Coastguard Worker 721*48a54d36SAndroid Build Coastguard Worker Non-preprocessor symbols do not have this issue. For example: 722*48a54d36SAndroid Build Coastguard Worker 723*48a54d36SAndroid Build Coastguard Worker enum 724*48a54d36SAndroid Build Coastguard Worker { 725*48a54d36SAndroid Build Coastguard Worker kMyConstant = 1 726*48a54d36SAndroid Build Coastguard Worker }; 727*48a54d36SAndroid Build Coastguard Worker 728*48a54d36SAndroid Build Coastguard Worker printf( "%s", Stringify( kMyConstant ) ); // Prints "kMyConstant" 729*48a54d36SAndroid Build Coastguard Worker printf( "%s", StringifyExpansion( kMyConstant ) ); // Prints "kMyConstant" 730*48a54d36SAndroid Build Coastguard Worker 731*48a54d36SAndroid Build Coastguard Worker See <http://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html> for more info on C preprocessor pre-scanning. 732*48a54d36SAndroid Build Coastguard Worker */ 733*48a54d36SAndroid Build Coastguard Worker 734*48a54d36SAndroid Build Coastguard Worker #define Stringify( X ) # X 735*48a54d36SAndroid Build Coastguard Worker #define StringifyExpansion( X ) Stringify( X ) 736*48a54d36SAndroid Build Coastguard Worker 737*48a54d36SAndroid Build Coastguard Worker #if 0 738*48a54d36SAndroid Build Coastguard Worker #pragma mark == Types == 739*48a54d36SAndroid Build Coastguard Worker #endif 740*48a54d36SAndroid Build Coastguard Worker 741*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 742*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 743*48a54d36SAndroid Build Coastguard Worker // Standard Types 744*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 745*48a54d36SAndroid Build Coastguard Worker 746*48a54d36SAndroid Build Coastguard Worker #if( !defined( INT8_MIN ) ) 747*48a54d36SAndroid Build Coastguard Worker 748*48a54d36SAndroid Build Coastguard Worker #define INT8_MIN SCHAR_MIN 749*48a54d36SAndroid Build Coastguard Worker 750*48a54d36SAndroid Build Coastguard Worker #if( defined( _MSC_VER ) ) 751*48a54d36SAndroid Build Coastguard Worker 752*48a54d36SAndroid Build Coastguard Worker // C99 stdint.h not supported in VC++/VS.NET yet. 753*48a54d36SAndroid Build Coastguard Worker 754*48a54d36SAndroid Build Coastguard Worker typedef INT8 int8_t; 755*48a54d36SAndroid Build Coastguard Worker typedef UINT8 uint8_t; 756*48a54d36SAndroid Build Coastguard Worker typedef INT16 int16_t; 757*48a54d36SAndroid Build Coastguard Worker typedef UINT16 uint16_t; 758*48a54d36SAndroid Build Coastguard Worker typedef INT32 int32_t; 759*48a54d36SAndroid Build Coastguard Worker typedef UINT32 uint32_t; 760*48a54d36SAndroid Build Coastguard Worker typedef __int64 int64_t; 761*48a54d36SAndroid Build Coastguard Worker typedef unsigned __int64 uint64_t; 762*48a54d36SAndroid Build Coastguard Worker 763*48a54d36SAndroid Build Coastguard Worker #elif( TARGET_OS_VXWORKS && ( TORNADO_VERSION < 220 ) ) 764*48a54d36SAndroid Build Coastguard Worker typedef long long int64_t; 765*48a54d36SAndroid Build Coastguard Worker typedef unsigned long long uint64_t; 766*48a54d36SAndroid Build Coastguard Worker #endif 767*48a54d36SAndroid Build Coastguard Worker 768*48a54d36SAndroid Build Coastguard Worker typedef int8_t int_least8_t; 769*48a54d36SAndroid Build Coastguard Worker typedef int16_t int_least16_t; 770*48a54d36SAndroid Build Coastguard Worker typedef int32_t int_least32_t; 771*48a54d36SAndroid Build Coastguard Worker typedef int64_t int_least64_t; 772*48a54d36SAndroid Build Coastguard Worker 773*48a54d36SAndroid Build Coastguard Worker typedef uint8_t uint_least8_t; 774*48a54d36SAndroid Build Coastguard Worker typedef uint16_t uint_least16_t; 775*48a54d36SAndroid Build Coastguard Worker typedef uint32_t uint_least32_t; 776*48a54d36SAndroid Build Coastguard Worker typedef uint64_t uint_least64_t; 777*48a54d36SAndroid Build Coastguard Worker 778*48a54d36SAndroid Build Coastguard Worker typedef int8_t int_fast8_t; 779*48a54d36SAndroid Build Coastguard Worker typedef int16_t int_fast16_t; 780*48a54d36SAndroid Build Coastguard Worker typedef int32_t int_fast32_t; 781*48a54d36SAndroid Build Coastguard Worker typedef int64_t int_fast64_t; 782*48a54d36SAndroid Build Coastguard Worker 783*48a54d36SAndroid Build Coastguard Worker typedef uint8_t uint_fast8_t; 784*48a54d36SAndroid Build Coastguard Worker typedef uint16_t uint_fast16_t; 785*48a54d36SAndroid Build Coastguard Worker typedef uint32_t uint_fast32_t; 786*48a54d36SAndroid Build Coastguard Worker typedef uint64_t uint_fast64_t; 787*48a54d36SAndroid Build Coastguard Worker 788*48a54d36SAndroid Build Coastguard Worker #if( !defined( _MSC_VER ) || TARGET_OS_WINDOWS_CE ) 789*48a54d36SAndroid Build Coastguard Worker typedef long int intptr_t; 790*48a54d36SAndroid Build Coastguard Worker typedef unsigned long int uintptr_t; 791*48a54d36SAndroid Build Coastguard Worker #endif 792*48a54d36SAndroid Build Coastguard Worker 793*48a54d36SAndroid Build Coastguard Worker #endif 794*48a54d36SAndroid Build Coastguard Worker 795*48a54d36SAndroid Build Coastguard Worker // Macros for minimum-width integer constants 796*48a54d36SAndroid Build Coastguard Worker 797*48a54d36SAndroid Build Coastguard Worker #if( !defined( INT8_C ) ) 798*48a54d36SAndroid Build Coastguard Worker #define INT8_C( value ) value 799*48a54d36SAndroid Build Coastguard Worker #endif 800*48a54d36SAndroid Build Coastguard Worker 801*48a54d36SAndroid Build Coastguard Worker #if( !defined( INT16_C ) ) 802*48a54d36SAndroid Build Coastguard Worker #define INT16_C( value ) value 803*48a54d36SAndroid Build Coastguard Worker #endif 804*48a54d36SAndroid Build Coastguard Worker 805*48a54d36SAndroid Build Coastguard Worker #if( !defined( INT32_C ) ) 806*48a54d36SAndroid Build Coastguard Worker #define INT32_C( value ) value ## L 807*48a54d36SAndroid Build Coastguard Worker #endif 808*48a54d36SAndroid Build Coastguard Worker 809*48a54d36SAndroid Build Coastguard Worker #if( !defined( INT64_C ) ) 810*48a54d36SAndroid Build Coastguard Worker #if( defined( _MSC_VER ) ) 811*48a54d36SAndroid Build Coastguard Worker #define INT64_C( value ) value ## i64 812*48a54d36SAndroid Build Coastguard Worker #else 813*48a54d36SAndroid Build Coastguard Worker #define INT64_C( value ) value ## LL 814*48a54d36SAndroid Build Coastguard Worker #endif 815*48a54d36SAndroid Build Coastguard Worker #endif 816*48a54d36SAndroid Build Coastguard Worker 817*48a54d36SAndroid Build Coastguard Worker #if( !defined( UINT8_C ) ) 818*48a54d36SAndroid Build Coastguard Worker #define UINT8_C( value ) value ## U 819*48a54d36SAndroid Build Coastguard Worker #endif 820*48a54d36SAndroid Build Coastguard Worker 821*48a54d36SAndroid Build Coastguard Worker #if( !defined( UINT16_C ) ) 822*48a54d36SAndroid Build Coastguard Worker #define UINT16_C( value ) value ## U 823*48a54d36SAndroid Build Coastguard Worker #endif 824*48a54d36SAndroid Build Coastguard Worker 825*48a54d36SAndroid Build Coastguard Worker #if( !defined( UINT32_C ) ) 826*48a54d36SAndroid Build Coastguard Worker #define UINT32_C( value ) value ## UL 827*48a54d36SAndroid Build Coastguard Worker #endif 828*48a54d36SAndroid Build Coastguard Worker 829*48a54d36SAndroid Build Coastguard Worker #if( !defined( UINT64_C ) ) 830*48a54d36SAndroid Build Coastguard Worker #if( defined( _MSC_VER ) ) 831*48a54d36SAndroid Build Coastguard Worker #define UINT64_C( value ) value ## UI64 832*48a54d36SAndroid Build Coastguard Worker #else 833*48a54d36SAndroid Build Coastguard Worker #define UINT64_C( value ) value ## ULL 834*48a54d36SAndroid Build Coastguard Worker #endif 835*48a54d36SAndroid Build Coastguard Worker #endif 836*48a54d36SAndroid Build Coastguard Worker 837*48a54d36SAndroid Build Coastguard Worker #if 0 838*48a54d36SAndroid Build Coastguard Worker #pragma mark == bool == 839*48a54d36SAndroid Build Coastguard Worker #endif 840*48a54d36SAndroid Build Coastguard Worker 841*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 842*48a54d36SAndroid Build Coastguard Worker // Boolean Constants and Types 843*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 844*48a54d36SAndroid Build Coastguard Worker 845*48a54d36SAndroid Build Coastguard Worker // C++ defines bool, true, and false. Metrowerks allows this to be controlled by the "bool" option though. 846*48a54d36SAndroid Build Coastguard Worker // C99 defines __bool_true_false_are_defined when bool, true, and false are defined. 847*48a54d36SAndroid Build Coastguard Worker // MacTypes.h defines true and false (Mac builds only). 848*48a54d36SAndroid Build Coastguard Worker // 849*48a54d36SAndroid Build Coastguard Worker // Note: The Metrowerks has to be in its own block because Microsoft Visual Studio .NET does not completely 850*48a54d36SAndroid Build Coastguard Worker // short-circuit and gets confused by the option( bool ) portion of the conditional. 851*48a54d36SAndroid Build Coastguard Worker 852*48a54d36SAndroid Build Coastguard Worker #if( defined( __MWERKS__ ) ) 853*48a54d36SAndroid Build Coastguard Worker 854*48a54d36SAndroid Build Coastguard Worker // Note: The following test is done on separate lines because CodeWarrior doesn't like it all on one line. 855*48a54d36SAndroid Build Coastguard Worker 856*48a54d36SAndroid Build Coastguard Worker #if( !__bool_true_false_are_defined && ( !defined( __cplusplus ) || !__option( bool ) ) ) 857*48a54d36SAndroid Build Coastguard Worker #define COMMON_SERVICES_NEEDS_BOOL 1 858*48a54d36SAndroid Build Coastguard Worker #else 859*48a54d36SAndroid Build Coastguard Worker #define COMMON_SERVICES_NEEDS_BOOL 0 860*48a54d36SAndroid Build Coastguard Worker #endif 861*48a54d36SAndroid Build Coastguard Worker 862*48a54d36SAndroid Build Coastguard Worker // Workaround when building with CodeWarrior, but using the Apple stdbool.h header, which uses _Bool. 863*48a54d36SAndroid Build Coastguard Worker 864*48a54d36SAndroid Build Coastguard Worker #if( __bool_true_false_are_defined && !defined( __cplusplus ) && !__option( c9x ) ) 865*48a54d36SAndroid Build Coastguard Worker #define _Bool int 866*48a54d36SAndroid Build Coastguard Worker #endif 867*48a54d36SAndroid Build Coastguard Worker 868*48a54d36SAndroid Build Coastguard Worker // Workaround when building with CodeWarrior for C++ with bool disabled and using the Apple stdbool.h header, 869*48a54d36SAndroid Build Coastguard Worker // which defines true and false to map to C++ true and false (which are not enabled). Serenity Now! 870*48a54d36SAndroid Build Coastguard Worker 871*48a54d36SAndroid Build Coastguard Worker #if( __bool_true_false_are_defined && defined( __cplusplus ) && !__option( bool ) ) 872*48a54d36SAndroid Build Coastguard Worker #define true 1 873*48a54d36SAndroid Build Coastguard Worker #define false 0 874*48a54d36SAndroid Build Coastguard Worker #endif 875*48a54d36SAndroid Build Coastguard Worker #else 876*48a54d36SAndroid Build Coastguard Worker #define COMMON_SERVICES_NEEDS_BOOL ( !defined( __cplusplus ) && !__bool_true_false_are_defined ) 877*48a54d36SAndroid Build Coastguard Worker #endif 878*48a54d36SAndroid Build Coastguard Worker 879*48a54d36SAndroid Build Coastguard Worker #if( COMMON_SERVICES_NEEDS_BOOL ) 880*48a54d36SAndroid Build Coastguard Worker 881*48a54d36SAndroid Build Coastguard Worker typedef int bool; 882*48a54d36SAndroid Build Coastguard Worker 883*48a54d36SAndroid Build Coastguard Worker #define bool bool 884*48a54d36SAndroid Build Coastguard Worker 885*48a54d36SAndroid Build Coastguard Worker #if( !defined( __MACTYPES__ ) && !defined( true ) && !defined( false ) ) 886*48a54d36SAndroid Build Coastguard Worker #define true 1 887*48a54d36SAndroid Build Coastguard Worker #define false 0 888*48a54d36SAndroid Build Coastguard Worker #endif 889*48a54d36SAndroid Build Coastguard Worker 890*48a54d36SAndroid Build Coastguard Worker #define __bool_true_false_are_defined 1 891*48a54d36SAndroid Build Coastguard Worker #endif 892*48a54d36SAndroid Build Coastguard Worker 893*48a54d36SAndroid Build Coastguard Worker // IOKit IOTypes.h typedef's bool if TYPE_BOOL is not defined so define it here to prevent redefinition by IOTypes.h. 894*48a54d36SAndroid Build Coastguard Worker 895*48a54d36SAndroid Build Coastguard Worker #if( TARGET_API_MAC_OSX_KERNEL ) 896*48a54d36SAndroid Build Coastguard Worker #define TYPE_BOOL 1 897*48a54d36SAndroid Build Coastguard Worker #endif 898*48a54d36SAndroid Build Coastguard Worker 899*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 900*48a54d36SAndroid Build Coastguard Worker /*! @typedef CStr255 901*48a54d36SAndroid Build Coastguard Worker 902*48a54d36SAndroid Build Coastguard Worker @abstract 255 character null-terminated (C-style) string. 903*48a54d36SAndroid Build Coastguard Worker */ 904*48a54d36SAndroid Build Coastguard Worker 905*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 906*48a54d36SAndroid Build Coastguard Worker typedef char CStr255[ 256 ]; 907*48a54d36SAndroid Build Coastguard Worker #endif 908*48a54d36SAndroid Build Coastguard Worker 909*48a54d36SAndroid Build Coastguard Worker #endif // TARGET_LANGUAGE_C_LIKE 910*48a54d36SAndroid Build Coastguard Worker 911*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 912*48a54d36SAndroid Build Coastguard Worker /*! @defined TYPE_LONGLONG_NATIVE 913*48a54d36SAndroid Build Coastguard Worker 914*48a54d36SAndroid Build Coastguard Worker @abstract Defines whether long long (or its equivalent) is natively supported or requires special libraries. 915*48a54d36SAndroid Build Coastguard Worker */ 916*48a54d36SAndroid Build Coastguard Worker 917*48a54d36SAndroid Build Coastguard Worker #if( !defined( TYPE_LONGLONG_NATIVE ) ) 918*48a54d36SAndroid Build Coastguard Worker #if( !TARGET_OS_VXWORKS ) 919*48a54d36SAndroid Build Coastguard Worker #define TYPE_LONGLONG_NATIVE 1 920*48a54d36SAndroid Build Coastguard Worker #else 921*48a54d36SAndroid Build Coastguard Worker #define TYPE_LONGLONG_NATIVE 0 922*48a54d36SAndroid Build Coastguard Worker #endif 923*48a54d36SAndroid Build Coastguard Worker #endif 924*48a54d36SAndroid Build Coastguard Worker 925*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 926*48a54d36SAndroid Build Coastguard Worker /*! @defined long_long_compat 927*48a54d36SAndroid Build Coastguard Worker 928*48a54d36SAndroid Build Coastguard Worker @abstract Compatibility type to map to the closest thing to long long and unsigned long long. 929*48a54d36SAndroid Build Coastguard Worker 930*48a54d36SAndroid Build Coastguard Worker @discussion 931*48a54d36SAndroid Build Coastguard Worker 932*48a54d36SAndroid Build Coastguard Worker Neither long long nor unsigned long long are supported by Microsoft compilers, but they do support proprietary 933*48a54d36SAndroid Build Coastguard Worker "__int64" and "unsigned __int64" equivalents so map to those types if the real long long is not supported. 934*48a54d36SAndroid Build Coastguard Worker */ 935*48a54d36SAndroid Build Coastguard Worker 936*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 937*48a54d36SAndroid Build Coastguard Worker #if( TARGET_OS_WIN32 ) 938*48a54d36SAndroid Build Coastguard Worker typedef __int64 long_long_compat; 939*48a54d36SAndroid Build Coastguard Worker typedef unsigned __int64 unsigned_long_long_compat; 940*48a54d36SAndroid Build Coastguard Worker #else 941*48a54d36SAndroid Build Coastguard Worker typedef signed long long long_long_compat; 942*48a54d36SAndroid Build Coastguard Worker typedef unsigned long long unsigned_long_long_compat; 943*48a54d36SAndroid Build Coastguard Worker #endif 944*48a54d36SAndroid Build Coastguard Worker #endif 945*48a54d36SAndroid Build Coastguard Worker 946*48a54d36SAndroid Build Coastguard Worker #if 0 947*48a54d36SAndroid Build Coastguard Worker #pragma mark == Errors == 948*48a54d36SAndroid Build Coastguard Worker #endif 949*48a54d36SAndroid Build Coastguard Worker 950*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 951*48a54d36SAndroid Build Coastguard Worker /*! @enum OSStatus 952*48a54d36SAndroid Build Coastguard Worker 953*48a54d36SAndroid Build Coastguard Worker @abstract Status Code 954*48a54d36SAndroid Build Coastguard Worker 955*48a54d36SAndroid Build Coastguard Worker @constant kNoErr 0 No error occurred. 956*48a54d36SAndroid Build Coastguard Worker @constant kInProgressErr 1 Operation in progress. 957*48a54d36SAndroid Build Coastguard Worker @constant kUnknownErr -6700 Unknown error occurred. 958*48a54d36SAndroid Build Coastguard Worker @constant kOptionErr -6701 Option was not acceptable. 959*48a54d36SAndroid Build Coastguard Worker @constant kSelectorErr -6702 Selector passed in is invalid or unknown. 960*48a54d36SAndroid Build Coastguard Worker @constant kExecutionStateErr -6703 Call made in the wrong execution state (e.g. called at interrupt time). 961*48a54d36SAndroid Build Coastguard Worker @constant kPathErr -6704 Path is invalid, too long, or otherwise not usable. 962*48a54d36SAndroid Build Coastguard Worker @constant kParamErr -6705 Parameter is incorrect, missing, or not appropriate. 963*48a54d36SAndroid Build Coastguard Worker @constant kParamCountErr -6706 Incorrect or unsupported number of parameters. 964*48a54d36SAndroid Build Coastguard Worker @constant kCommandErr -6707 Command invalid or not supported. 965*48a54d36SAndroid Build Coastguard Worker @constant kIDErr -6708 Unknown, invalid, or inappropriate identifier. 966*48a54d36SAndroid Build Coastguard Worker @constant kStateErr -6709 Not in appropriate state to perform operation. 967*48a54d36SAndroid Build Coastguard Worker @constant kRangeErr -6710 Index is out of range or not valid. 968*48a54d36SAndroid Build Coastguard Worker @constant kRequestErr -6711 Request was improperly formed or not appropriate. 969*48a54d36SAndroid Build Coastguard Worker @constant kResponseErr -6712 Response was incorrect or out of sequence. 970*48a54d36SAndroid Build Coastguard Worker @constant kChecksumErr -6713 Checksum does not match the actual data. 971*48a54d36SAndroid Build Coastguard Worker @constant kNotHandledErr -6714 Operation was not handled (or not handled completely). 972*48a54d36SAndroid Build Coastguard Worker @constant kVersionErr -6715 Version is not incorrect or not compatibile. 973*48a54d36SAndroid Build Coastguard Worker @constant kSignatureErr -6716 Signature did not match what was expected. 974*48a54d36SAndroid Build Coastguard Worker @constant kFormatErr -6717 Unknown, invalid, or inappropriate file/data format. 975*48a54d36SAndroid Build Coastguard Worker @constant kNotInitializedErr -6718 Action request before needed services were initialized. 976*48a54d36SAndroid Build Coastguard Worker @constant kAlreadyInitializedErr -6719 Attempt made to initialize when already initialized. 977*48a54d36SAndroid Build Coastguard Worker @constant kNotInUseErr -6720 Object not in use (e.g. cannot abort if not already in use). 978*48a54d36SAndroid Build Coastguard Worker @constant kInUseErr -6721 Object is in use (e.g. cannot reuse active param blocks). 979*48a54d36SAndroid Build Coastguard Worker @constant kTimeoutErr -6722 Timeout occurred. 980*48a54d36SAndroid Build Coastguard Worker @constant kCanceledErr -6723 Operation canceled (successful cancel). 981*48a54d36SAndroid Build Coastguard Worker @constant kAlreadyCanceledErr -6724 Operation has already been canceled. 982*48a54d36SAndroid Build Coastguard Worker @constant kCannotCancelErr -6725 Operation could not be canceled (maybe already done or invalid). 983*48a54d36SAndroid Build Coastguard Worker @constant kDeletedErr -6726 Object has already been deleted. 984*48a54d36SAndroid Build Coastguard Worker @constant kNotFoundErr -6727 Something was not found. 985*48a54d36SAndroid Build Coastguard Worker @constant kNoMemoryErr -6728 Not enough memory was available to perform the operation. 986*48a54d36SAndroid Build Coastguard Worker @constant kNoResourcesErr -6729 Resources unavailable to perform the operation. 987*48a54d36SAndroid Build Coastguard Worker @constant kDuplicateErr -6730 Duplicate found or something is a duplicate. 988*48a54d36SAndroid Build Coastguard Worker @constant kImmutableErr -6731 Entity is not changeable. 989*48a54d36SAndroid Build Coastguard Worker @constant kUnsupportedDataErr -6732 Data is unknown or not supported. 990*48a54d36SAndroid Build Coastguard Worker @constant kIntegrityErr -6733 Data is corrupt. 991*48a54d36SAndroid Build Coastguard Worker @constant kIncompatibleErr -6734 Data is not compatible or it is in an incompatible format. 992*48a54d36SAndroid Build Coastguard Worker @constant kUnsupportedErr -6735 Feature or option is not supported. 993*48a54d36SAndroid Build Coastguard Worker @constant kUnexpectedErr -6736 Error occurred that was not expected. 994*48a54d36SAndroid Build Coastguard Worker @constant kValueErr -6737 Value is not appropriate. 995*48a54d36SAndroid Build Coastguard Worker @constant kNotReadableErr -6738 Could not read or reading is not allowed. 996*48a54d36SAndroid Build Coastguard Worker @constant kNotWritableErr -6739 Could not write or writing is not allowed. 997*48a54d36SAndroid Build Coastguard Worker @constant kBadReferenceErr -6740 An invalid or inappropriate reference was specified. 998*48a54d36SAndroid Build Coastguard Worker @constant kFlagErr -6741 An invalid, inappropriate, or unsupported flag was specified. 999*48a54d36SAndroid Build Coastguard Worker @constant kMalformedErr -6742 Something was not formed correctly. 1000*48a54d36SAndroid Build Coastguard Worker @constant kSizeErr -6743 Size was too big, too small, or not appropriate. 1001*48a54d36SAndroid Build Coastguard Worker @constant kNameErr -6744 Name was not correct, allowed, or appropriate. 1002*48a54d36SAndroid Build Coastguard Worker @constant kNotReadyErr -6745 Device or service is not ready. 1003*48a54d36SAndroid Build Coastguard Worker @constant kReadErr -6746 Could not read. 1004*48a54d36SAndroid Build Coastguard Worker @constant kWriteErr -6747 Could not write. 1005*48a54d36SAndroid Build Coastguard Worker @constant kMismatchErr -6748 Something does not match. 1006*48a54d36SAndroid Build Coastguard Worker @constant kDateErr -6749 Date is invalid or out-of-range. 1007*48a54d36SAndroid Build Coastguard Worker @constant kUnderrunErr -6750 Less data than expected. 1008*48a54d36SAndroid Build Coastguard Worker @constant kOverrunErr -6751 More data than expected. 1009*48a54d36SAndroid Build Coastguard Worker @constant kEndingErr -6752 Connection, session, or something is ending. 1010*48a54d36SAndroid Build Coastguard Worker @constant kConnectionErr -6753 Connection failed or could not be established. 1011*48a54d36SAndroid Build Coastguard Worker @constant kAuthenticationErr -6754 Authentication failed or is not supported. 1012*48a54d36SAndroid Build Coastguard Worker @constant kOpenErr -6755 Could not open file, pipe, device, etc. 1013*48a54d36SAndroid Build Coastguard Worker @constant kTypeErr -6756 Incorrect or incompatible type (e.g. file, data, etc.). 1014*48a54d36SAndroid Build Coastguard Worker @constant kSkipErr -6757 Items should be or was skipped. 1015*48a54d36SAndroid Build Coastguard Worker @constant kNoAckErr -6758 No acknowledge. 1016*48a54d36SAndroid Build Coastguard Worker @constant kCollisionErr -6759 Collision occurred (e.g. two on bus at same time). 1017*48a54d36SAndroid Build Coastguard Worker @constant kBackoffErr -6760 Backoff in progress and operation intentionally failed. 1018*48a54d36SAndroid Build Coastguard Worker @constant kNoAddressAckErr -6761 No acknowledge of address. 1019*48a54d36SAndroid Build Coastguard Worker @constant kBusyErr -6762 Cannot perform because something is busy. 1020*48a54d36SAndroid Build Coastguard Worker @constant kNoSpaceErr -6763 Not enough space to perform operation. 1021*48a54d36SAndroid Build Coastguard Worker */ 1022*48a54d36SAndroid Build Coastguard Worker 1023*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 1024*48a54d36SAndroid Build Coastguard Worker #if( !TARGET_OS_MAC && !TARGET_API_MAC_OSX_KERNEL ) 1025*48a54d36SAndroid Build Coastguard Worker typedef int32_t OSStatus; 1026*48a54d36SAndroid Build Coastguard Worker #endif 1027*48a54d36SAndroid Build Coastguard Worker #endif 1028*48a54d36SAndroid Build Coastguard Worker 1029*48a54d36SAndroid Build Coastguard Worker #define kNoErr 0 1030*48a54d36SAndroid Build Coastguard Worker #define kInProgressErr 1 1031*48a54d36SAndroid Build Coastguard Worker 1032*48a54d36SAndroid Build Coastguard Worker // Generic error codes are in the range -6700 to -6779. 1033*48a54d36SAndroid Build Coastguard Worker 1034*48a54d36SAndroid Build Coastguard Worker #define kGenericErrorBase -6700 // Starting error code for all generic errors. 1035*48a54d36SAndroid Build Coastguard Worker 1036*48a54d36SAndroid Build Coastguard Worker #define kUnknownErr -6700 1037*48a54d36SAndroid Build Coastguard Worker #define kOptionErr -6701 1038*48a54d36SAndroid Build Coastguard Worker #define kSelectorErr -6702 1039*48a54d36SAndroid Build Coastguard Worker #define kExecutionStateErr -6703 1040*48a54d36SAndroid Build Coastguard Worker #define kPathErr -6704 1041*48a54d36SAndroid Build Coastguard Worker #define kParamErr -6705 1042*48a54d36SAndroid Build Coastguard Worker #define kParamCountErr -6706 1043*48a54d36SAndroid Build Coastguard Worker #define kCommandErr -6707 1044*48a54d36SAndroid Build Coastguard Worker #define kIDErr -6708 1045*48a54d36SAndroid Build Coastguard Worker #define kStateErr -6709 1046*48a54d36SAndroid Build Coastguard Worker #define kRangeErr -6710 1047*48a54d36SAndroid Build Coastguard Worker #define kRequestErr -6711 1048*48a54d36SAndroid Build Coastguard Worker #define kResponseErr -6712 1049*48a54d36SAndroid Build Coastguard Worker #define kChecksumErr -6713 1050*48a54d36SAndroid Build Coastguard Worker #define kNotHandledErr -6714 1051*48a54d36SAndroid Build Coastguard Worker #define kVersionErr -6715 1052*48a54d36SAndroid Build Coastguard Worker #define kSignatureErr -6716 1053*48a54d36SAndroid Build Coastguard Worker #define kFormatErr -6717 1054*48a54d36SAndroid Build Coastguard Worker #define kNotInitializedErr -6718 1055*48a54d36SAndroid Build Coastguard Worker #define kAlreadyInitializedErr -6719 1056*48a54d36SAndroid Build Coastguard Worker #define kNotInUseErr -6720 1057*48a54d36SAndroid Build Coastguard Worker #define kInUseErr -6721 1058*48a54d36SAndroid Build Coastguard Worker #define kTimeoutErr -6722 1059*48a54d36SAndroid Build Coastguard Worker #define kCanceledErr -6723 1060*48a54d36SAndroid Build Coastguard Worker #define kAlreadyCanceledErr -6724 1061*48a54d36SAndroid Build Coastguard Worker #define kCannotCancelErr -6725 1062*48a54d36SAndroid Build Coastguard Worker #define kDeletedErr -6726 1063*48a54d36SAndroid Build Coastguard Worker #define kNotFoundErr -6727 1064*48a54d36SAndroid Build Coastguard Worker #define kNoMemoryErr -6728 1065*48a54d36SAndroid Build Coastguard Worker #define kNoResourcesErr -6729 1066*48a54d36SAndroid Build Coastguard Worker #define kDuplicateErr -6730 1067*48a54d36SAndroid Build Coastguard Worker #define kImmutableErr -6731 1068*48a54d36SAndroid Build Coastguard Worker #define kUnsupportedDataErr -6732 1069*48a54d36SAndroid Build Coastguard Worker #define kIntegrityErr -6733 1070*48a54d36SAndroid Build Coastguard Worker #define kIncompatibleErr -6734 1071*48a54d36SAndroid Build Coastguard Worker #define kUnsupportedErr -6735 1072*48a54d36SAndroid Build Coastguard Worker #define kUnexpectedErr -6736 1073*48a54d36SAndroid Build Coastguard Worker #define kValueErr -6737 1074*48a54d36SAndroid Build Coastguard Worker #define kNotReadableErr -6738 1075*48a54d36SAndroid Build Coastguard Worker #define kNotWritableErr -6739 1076*48a54d36SAndroid Build Coastguard Worker #define kBadReferenceErr -6740 1077*48a54d36SAndroid Build Coastguard Worker #define kFlagErr -6741 1078*48a54d36SAndroid Build Coastguard Worker #define kMalformedErr -6742 1079*48a54d36SAndroid Build Coastguard Worker #define kSizeErr -6743 1080*48a54d36SAndroid Build Coastguard Worker #define kNameErr -6744 1081*48a54d36SAndroid Build Coastguard Worker #define kNotReadyErr -6745 1082*48a54d36SAndroid Build Coastguard Worker #define kReadErr -6746 1083*48a54d36SAndroid Build Coastguard Worker #define kWriteErr -6747 1084*48a54d36SAndroid Build Coastguard Worker #define kMismatchErr -6748 1085*48a54d36SAndroid Build Coastguard Worker #define kDateErr -6749 1086*48a54d36SAndroid Build Coastguard Worker #define kUnderrunErr -6750 1087*48a54d36SAndroid Build Coastguard Worker #define kOverrunErr -6751 1088*48a54d36SAndroid Build Coastguard Worker #define kEndingErr -6752 1089*48a54d36SAndroid Build Coastguard Worker #define kConnectionErr -6753 1090*48a54d36SAndroid Build Coastguard Worker #define kAuthenticationErr -6754 1091*48a54d36SAndroid Build Coastguard Worker #define kOpenErr -6755 1092*48a54d36SAndroid Build Coastguard Worker #define kTypeErr -6756 1093*48a54d36SAndroid Build Coastguard Worker #define kSkipErr -6757 1094*48a54d36SAndroid Build Coastguard Worker #define kNoAckErr -6758 1095*48a54d36SAndroid Build Coastguard Worker #define kCollisionErr -6759 1096*48a54d36SAndroid Build Coastguard Worker #define kBackoffErr -6760 1097*48a54d36SAndroid Build Coastguard Worker #define kNoAddressAckErr -6761 1098*48a54d36SAndroid Build Coastguard Worker #define kBusyErr -6762 1099*48a54d36SAndroid Build Coastguard Worker #define kNoSpaceErr -6763 1100*48a54d36SAndroid Build Coastguard Worker 1101*48a54d36SAndroid Build Coastguard Worker #define kGenericErrorEnd -6779 // Last generic error code (inclusive) 1102*48a54d36SAndroid Build Coastguard Worker 1103*48a54d36SAndroid Build Coastguard Worker #if 0 1104*48a54d36SAndroid Build Coastguard Worker #pragma mark == Mac Compatibility == 1105*48a54d36SAndroid Build Coastguard Worker #endif 1106*48a54d36SAndroid Build Coastguard Worker 1107*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 1108*48a54d36SAndroid Build Coastguard Worker // Mac Compatibility 1109*48a54d36SAndroid Build Coastguard Worker //=========================================================================================================================== 1110*48a54d36SAndroid Build Coastguard Worker 1111*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1112*48a54d36SAndroid Build Coastguard Worker /*! @enum Duration 1113*48a54d36SAndroid Build Coastguard Worker 1114*48a54d36SAndroid Build Coastguard Worker @abstract Type used to specify a duration of time. 1115*48a54d36SAndroid Build Coastguard Worker 1116*48a54d36SAndroid Build Coastguard Worker @constant kDurationImmediate Indicates no delay/wait time. 1117*48a54d36SAndroid Build Coastguard Worker @constant kDurationMicrosecond Microsecond units. 1118*48a54d36SAndroid Build Coastguard Worker @constant kDurationMillisecond Millisecond units. 1119*48a54d36SAndroid Build Coastguard Worker @constant kDurationSecond Second units. 1120*48a54d36SAndroid Build Coastguard Worker @constant kDurationMinute Minute units. 1121*48a54d36SAndroid Build Coastguard Worker @constant kDurationHour Hour units. 1122*48a54d36SAndroid Build Coastguard Worker @constant kDurationDay Day units. 1123*48a54d36SAndroid Build Coastguard Worker @constant kDurationForever Infinite period of time (no timeout). 1124*48a54d36SAndroid Build Coastguard Worker 1125*48a54d36SAndroid Build Coastguard Worker @discussion 1126*48a54d36SAndroid Build Coastguard Worker 1127*48a54d36SAndroid Build Coastguard Worker Duration values are intended to be multiplied by the specific interval to achieve an actual duration. For example, 1128*48a54d36SAndroid Build Coastguard Worker to wait for 5 seconds you would use "5 * kDurationSecond". 1129*48a54d36SAndroid Build Coastguard Worker */ 1130*48a54d36SAndroid Build Coastguard Worker 1131*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 1132*48a54d36SAndroid Build Coastguard Worker #if( !TARGET_OS_MAC ) 1133*48a54d36SAndroid Build Coastguard Worker typedef int32_t Duration; 1134*48a54d36SAndroid Build Coastguard Worker #endif 1135*48a54d36SAndroid Build Coastguard Worker #endif 1136*48a54d36SAndroid Build Coastguard Worker 1137*48a54d36SAndroid Build Coastguard Worker #define kDurationImmediate 0L 1138*48a54d36SAndroid Build Coastguard Worker #define kDurationMicrosecond -1L 1139*48a54d36SAndroid Build Coastguard Worker #define kDurationMillisecond 1L 1140*48a54d36SAndroid Build Coastguard Worker #define kDurationSecond ( 1000L * kDurationMillisecond ) 1141*48a54d36SAndroid Build Coastguard Worker #define kDurationMinute ( 60L * kDurationSecond ) 1142*48a54d36SAndroid Build Coastguard Worker #define kDurationHour ( 60L * kDurationMinute ) 1143*48a54d36SAndroid Build Coastguard Worker #define kDurationDay ( 24L * kDurationHour ) 1144*48a54d36SAndroid Build Coastguard Worker #define kDurationForever 0x7FFFFFFFL 1145*48a54d36SAndroid Build Coastguard Worker 1146*48a54d36SAndroid Build Coastguard Worker // Seconds <-> Minutes <-> Hours <-> Days <-> Weeks <-> Months <-> Years conversions 1147*48a54d36SAndroid Build Coastguard Worker 1148*48a54d36SAndroid Build Coastguard Worker #define kNanosecondsPerMicrosecond 1000 1149*48a54d36SAndroid Build Coastguard Worker #define kNanosecondsPerMillisecond 1000000 1150*48a54d36SAndroid Build Coastguard Worker #define kNanosecondsPerSecond 1000000000 1151*48a54d36SAndroid Build Coastguard Worker #define kMicrosecondsPerSecond 1000000 1152*48a54d36SAndroid Build Coastguard Worker #define kMicrosecondsPerMillisecond 1000 1153*48a54d36SAndroid Build Coastguard Worker #define kMillisecondsPerSecond 1000 1154*48a54d36SAndroid Build Coastguard Worker #define kSecondsPerMinute 60 1155*48a54d36SAndroid Build Coastguard Worker #define kSecondsPerHour ( 60 * 60 ) // 3600 1156*48a54d36SAndroid Build Coastguard Worker #define kSecondsPerDay ( 60 * 60 * 24 ) // 86400 1157*48a54d36SAndroid Build Coastguard Worker #define kSecondsPerWeek ( 60 * 60 * 24 * 7 ) // 604800 1158*48a54d36SAndroid Build Coastguard Worker #define kMinutesPerHour 60 1159*48a54d36SAndroid Build Coastguard Worker #define kMinutesPerDay ( 60 * 24 ) // 1440 1160*48a54d36SAndroid Build Coastguard Worker #define kHoursPerDay 24 1161*48a54d36SAndroid Build Coastguard Worker #define kDaysPerWeek 7 1162*48a54d36SAndroid Build Coastguard Worker #define kWeeksPerYear 52 1163*48a54d36SAndroid Build Coastguard Worker #define kMonthsPerYear 12 1164*48a54d36SAndroid Build Coastguard Worker 1165*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1166*48a54d36SAndroid Build Coastguard Worker /*! @defined VersionStages 1167*48a54d36SAndroid Build Coastguard Worker 1168*48a54d36SAndroid Build Coastguard Worker @abstract NumVersion-style version stages. 1169*48a54d36SAndroid Build Coastguard Worker */ 1170*48a54d36SAndroid Build Coastguard Worker 1171*48a54d36SAndroid Build Coastguard Worker #define kVersionStageDevelopment 0x20 1172*48a54d36SAndroid Build Coastguard Worker #define kVersionStageAlpha 0x40 1173*48a54d36SAndroid Build Coastguard Worker #define kVersionStageBeta 0x60 1174*48a54d36SAndroid Build Coastguard Worker #define kVersionStageFinal 0x80 1175*48a54d36SAndroid Build Coastguard Worker 1176*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1177*48a54d36SAndroid Build Coastguard Worker /*! @function NumVersionBuild 1178*48a54d36SAndroid Build Coastguard Worker 1179*48a54d36SAndroid Build Coastguard Worker @abstract Builds a 32-bit Mac-style NumVersion value (e.g. NumVersionBuild( 1, 2, 3, kVersionStageBeta, 4 ) -> 1.2.3b4). 1180*48a54d36SAndroid Build Coastguard Worker */ 1181*48a54d36SAndroid Build Coastguard Worker 1182*48a54d36SAndroid Build Coastguard Worker #define NumVersionBuild( MAJOR, MINOR, BUGFIX, STAGE, REV ) \ 1183*48a54d36SAndroid Build Coastguard Worker ( ( ( ( MAJOR ) & 0xFF ) << 24 ) | \ 1184*48a54d36SAndroid Build Coastguard Worker ( ( ( MINOR ) & 0x0F ) << 20 ) | \ 1185*48a54d36SAndroid Build Coastguard Worker ( ( ( BUGFIX ) & 0x0F ) << 16 ) | \ 1186*48a54d36SAndroid Build Coastguard Worker ( ( ( STAGE ) & 0xFF ) << 8 ) | \ 1187*48a54d36SAndroid Build Coastguard Worker ( ( ( REV ) & 0xFF ) ) ) 1188*48a54d36SAndroid Build Coastguard Worker 1189*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractMajor( VERSION ) ( (uint8_t)( ( ( VERSION ) >> 24 ) & 0xFF ) ) 1190*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractMinorAndBugFix( VERSION ) ( (uint8_t)( ( ( VERSION ) >> 16 ) & 0xFF ) ) 1191*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractMinor( VERSION ) ( (uint8_t)( ( ( VERSION ) >> 20 ) & 0x0F ) ) 1192*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractBugFix( VERSION ) ( (uint8_t)( ( ( VERSION ) >> 16 ) & 0x0F ) ) 1193*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractStage( VERSION ) ( (uint8_t)( ( ( VERSION ) >> 8 ) & 0xFF ) ) 1194*48a54d36SAndroid Build Coastguard Worker #define NumVersionExtractRevision( VERSION ) ( (uint8_t)( ( VERSION ) & 0xFF ) ) 1195*48a54d36SAndroid Build Coastguard Worker 1196*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1197*48a54d36SAndroid Build Coastguard Worker /*! @function NumVersionCompare 1198*48a54d36SAndroid Build Coastguard Worker 1199*48a54d36SAndroid Build Coastguard Worker @abstract Compares two NumVersion values and returns the following values: 1200*48a54d36SAndroid Build Coastguard Worker 1201*48a54d36SAndroid Build Coastguard Worker left < right -> -1 1202*48a54d36SAndroid Build Coastguard Worker left > right -> 1 1203*48a54d36SAndroid Build Coastguard Worker left = right -> 0 1204*48a54d36SAndroid Build Coastguard Worker */ 1205*48a54d36SAndroid Build Coastguard Worker 1206*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 1207*48a54d36SAndroid Build Coastguard Worker int NumVersionCompare( uint32_t inLeft, uint32_t inRight ); 1208*48a54d36SAndroid Build Coastguard Worker #endif 1209*48a54d36SAndroid Build Coastguard Worker 1210*48a54d36SAndroid Build Coastguard Worker #if 0 1211*48a54d36SAndroid Build Coastguard Worker #pragma mark == Binary Constants == 1212*48a54d36SAndroid Build Coastguard Worker #endif 1213*48a54d36SAndroid Build Coastguard Worker 1214*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1215*48a54d36SAndroid Build Coastguard Worker /*! @defined binary_4 1216*48a54d36SAndroid Build Coastguard Worker 1217*48a54d36SAndroid Build Coastguard Worker @abstract Macro to generate an 4-bit constant using binary notation (e.g. binary_4( 1010 ) == 0xA). 1218*48a54d36SAndroid Build Coastguard Worker */ 1219*48a54d36SAndroid Build Coastguard Worker 1220*48a54d36SAndroid Build Coastguard Worker #define binary_4( a ) binary_4_hex_wrap( hex_digit4( a ) ) 1221*48a54d36SAndroid Build Coastguard Worker #define binary_4_hex_wrap( a ) binary_4_hex( a ) 1222*48a54d36SAndroid Build Coastguard Worker #define binary_4_hex( a ) ( 0x ## a ) 1223*48a54d36SAndroid Build Coastguard Worker 1224*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1225*48a54d36SAndroid Build Coastguard Worker /*! @defined binary_8 1226*48a54d36SAndroid Build Coastguard Worker 1227*48a54d36SAndroid Build Coastguard Worker @abstract Macro to generate an 8-bit constant using binary notation (e.g. binary_8( 01111011 ) == 0x7B). 1228*48a54d36SAndroid Build Coastguard Worker */ 1229*48a54d36SAndroid Build Coastguard Worker 1230*48a54d36SAndroid Build Coastguard Worker #define binary_8( a ) binary_8_hex_wrap( hex_digit8( a ) ) 1231*48a54d36SAndroid Build Coastguard Worker #define binary_8_hex_wrap( a ) binary_8_hex( a ) 1232*48a54d36SAndroid Build Coastguard Worker #define binary_8_hex( a ) ( 0x ## a ) 1233*48a54d36SAndroid Build Coastguard Worker 1234*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1235*48a54d36SAndroid Build Coastguard Worker /*! @defined binary_16 1236*48a54d36SAndroid Build Coastguard Worker 1237*48a54d36SAndroid Build Coastguard Worker @abstract Macro to generate an 16-bit constant using binary notation (e.g. binary_16( 01111011, 01111011 ) == 0x7B7B). 1238*48a54d36SAndroid Build Coastguard Worker */ 1239*48a54d36SAndroid Build Coastguard Worker 1240*48a54d36SAndroid Build Coastguard Worker #define binary_16( a, b ) binary_16_hex_wrap( hex_digit8( a ), hex_digit8( b ) ) 1241*48a54d36SAndroid Build Coastguard Worker #define binary_16_hex_wrap( a, b ) binary_16_hex( a, b ) 1242*48a54d36SAndroid Build Coastguard Worker #define binary_16_hex( a, b ) ( 0x ## a ## b ) 1243*48a54d36SAndroid Build Coastguard Worker 1244*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1245*48a54d36SAndroid Build Coastguard Worker /*! @defined binary_32 1246*48a54d36SAndroid Build Coastguard Worker 1247*48a54d36SAndroid Build Coastguard Worker @abstract Macro to generate an 32-bit constant using binary notation 1248*48a54d36SAndroid Build Coastguard Worker (e.g. binary_32( 01111011, 01111011, 01111011, 01111011 ) == 0x7B7B7B7B). 1249*48a54d36SAndroid Build Coastguard Worker */ 1250*48a54d36SAndroid Build Coastguard Worker 1251*48a54d36SAndroid Build Coastguard Worker #define binary_32( a, b, c, d ) binary_32_hex_wrap( hex_digit8( a ), hex_digit8( b ), hex_digit8( c ), hex_digit8( d ) ) 1252*48a54d36SAndroid Build Coastguard Worker #define binary_32_hex_wrap( a, b, c, d ) binary_32_hex( a, b, c, d ) 1253*48a54d36SAndroid Build Coastguard Worker #define binary_32_hex( a, b, c, d ) ( 0x ## a ## b ## c ## d ) 1254*48a54d36SAndroid Build Coastguard Worker 1255*48a54d36SAndroid Build Coastguard Worker // Binary Constant Helpers 1256*48a54d36SAndroid Build Coastguard Worker 1257*48a54d36SAndroid Build Coastguard Worker #define hex_digit8( a ) HEX_DIGIT_ ## a 1258*48a54d36SAndroid Build Coastguard Worker #define hex_digit4( a ) HEX_DIGIT_ ## 0000 ## a 1259*48a54d36SAndroid Build Coastguard Worker 1260*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000000 00 1261*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000001 01 1262*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000010 02 1263*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000011 03 1264*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000100 04 1265*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000101 05 1266*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000110 06 1267*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00000111 07 1268*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001000 08 1269*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001001 09 1270*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001010 0A 1271*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001011 0B 1272*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001100 0C 1273*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001101 0D 1274*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001110 0E 1275*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00001111 0F 1276*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010000 10 1277*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010001 11 1278*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010010 12 1279*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010011 13 1280*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010100 14 1281*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010101 15 1282*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010110 16 1283*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00010111 17 1284*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011000 18 1285*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011001 19 1286*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011010 1A 1287*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011011 1B 1288*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011100 1C 1289*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011101 1D 1290*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011110 1E 1291*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00011111 1F 1292*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100000 20 1293*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100001 21 1294*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100010 22 1295*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100011 23 1296*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100100 24 1297*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100101 25 1298*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100110 26 1299*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00100111 27 1300*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101000 28 1301*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101001 29 1302*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101010 2A 1303*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101011 2B 1304*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101100 2C 1305*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101101 2D 1306*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101110 2E 1307*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00101111 2F 1308*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110000 30 1309*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110001 31 1310*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110010 32 1311*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110011 33 1312*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110100 34 1313*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110101 35 1314*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110110 36 1315*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00110111 37 1316*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111000 38 1317*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111001 39 1318*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111010 3A 1319*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111011 3B 1320*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111100 3C 1321*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111101 3D 1322*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111110 3E 1323*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_00111111 3F 1324*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000000 40 1325*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000001 41 1326*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000010 42 1327*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000011 43 1328*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000100 44 1329*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000101 45 1330*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000110 46 1331*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01000111 47 1332*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001000 48 1333*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001001 49 1334*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001010 4A 1335*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001011 4B 1336*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001100 4C 1337*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001101 4D 1338*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001110 4E 1339*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01001111 4F 1340*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010000 50 1341*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010001 51 1342*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010010 52 1343*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010011 53 1344*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010100 54 1345*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010101 55 1346*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010110 56 1347*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01010111 57 1348*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011000 58 1349*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011001 59 1350*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011010 5A 1351*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011011 5B 1352*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011100 5C 1353*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011101 5D 1354*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011110 5E 1355*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01011111 5F 1356*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100000 60 1357*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100001 61 1358*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100010 62 1359*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100011 63 1360*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100100 64 1361*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100101 65 1362*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100110 66 1363*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01100111 67 1364*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101000 68 1365*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101001 69 1366*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101010 6A 1367*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101011 6B 1368*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101100 6C 1369*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101101 6D 1370*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101110 6E 1371*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01101111 6F 1372*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110000 70 1373*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110001 71 1374*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110010 72 1375*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110011 73 1376*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110100 74 1377*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110101 75 1378*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110110 76 1379*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01110111 77 1380*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111000 78 1381*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111001 79 1382*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111010 7A 1383*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111011 7B 1384*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111100 7C 1385*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111101 7D 1386*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111110 7E 1387*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_01111111 7F 1388*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000000 80 1389*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000001 81 1390*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000010 82 1391*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000011 83 1392*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000100 84 1393*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000101 85 1394*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000110 86 1395*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10000111 87 1396*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001000 88 1397*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001001 89 1398*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001010 8A 1399*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001011 8B 1400*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001100 8C 1401*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001101 8D 1402*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001110 8E 1403*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10001111 8F 1404*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010000 90 1405*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010001 91 1406*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010010 92 1407*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010011 93 1408*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010100 94 1409*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010101 95 1410*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010110 96 1411*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10010111 97 1412*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011000 98 1413*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011001 99 1414*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011010 9A 1415*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011011 9B 1416*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011100 9C 1417*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011101 9D 1418*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011110 9E 1419*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10011111 9F 1420*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100000 A0 1421*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100001 A1 1422*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100010 A2 1423*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100011 A3 1424*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100100 A4 1425*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100101 A5 1426*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100110 A6 1427*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10100111 A7 1428*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101000 A8 1429*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101001 A9 1430*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101010 AA 1431*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101011 AB 1432*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101100 AC 1433*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101101 AD 1434*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101110 AE 1435*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10101111 AF 1436*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110000 B0 1437*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110001 B1 1438*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110010 B2 1439*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110011 B3 1440*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110100 B4 1441*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110101 B5 1442*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110110 B6 1443*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10110111 B7 1444*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111000 B8 1445*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111001 B9 1446*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111010 BA 1447*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111011 BB 1448*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111100 BC 1449*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111101 BD 1450*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111110 BE 1451*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_10111111 BF 1452*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000000 C0 1453*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000001 C1 1454*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000010 C2 1455*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000011 C3 1456*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000100 C4 1457*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000101 C5 1458*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000110 C6 1459*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11000111 C7 1460*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001000 C8 1461*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001001 C9 1462*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001010 CA 1463*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001011 CB 1464*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001100 CC 1465*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001101 CD 1466*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001110 CE 1467*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11001111 CF 1468*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010000 D0 1469*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010001 D1 1470*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010010 D2 1471*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010011 D3 1472*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010100 D4 1473*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010101 D5 1474*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010110 D6 1475*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11010111 D7 1476*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011000 D8 1477*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011001 D9 1478*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011010 DA 1479*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011011 DB 1480*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011100 DC 1481*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011101 DD 1482*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011110 DE 1483*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11011111 DF 1484*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100000 E0 1485*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100001 E1 1486*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100010 E2 1487*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100011 E3 1488*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100100 E4 1489*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100101 E5 1490*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100110 E6 1491*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11100111 E7 1492*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101000 E8 1493*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101001 E9 1494*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101010 EA 1495*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101011 EB 1496*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101100 EC 1497*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101101 ED 1498*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101110 EE 1499*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11101111 EF 1500*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110000 F0 1501*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110001 F1 1502*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110010 F2 1503*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110011 F3 1504*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110100 F4 1505*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110101 F5 1506*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110110 F6 1507*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11110111 F7 1508*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111000 F8 1509*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111001 F9 1510*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111010 FA 1511*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111011 FB 1512*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111100 FC 1513*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111101 FD 1514*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111110 FE 1515*48a54d36SAndroid Build Coastguard Worker #define HEX_DIGIT_11111111 FF 1516*48a54d36SAndroid Build Coastguard Worker 1517*48a54d36SAndroid Build Coastguard Worker #if 0 1518*48a54d36SAndroid Build Coastguard Worker #pragma mark == Debugging == 1519*48a54d36SAndroid Build Coastguard Worker #endif 1520*48a54d36SAndroid Build Coastguard Worker 1521*48a54d36SAndroid Build Coastguard Worker //--------------------------------------------------------------------------------------------------------------------------- 1522*48a54d36SAndroid Build Coastguard Worker /*! @function CommonServicesTest 1523*48a54d36SAndroid Build Coastguard Worker 1524*48a54d36SAndroid Build Coastguard Worker @abstract Unit test. 1525*48a54d36SAndroid Build Coastguard Worker */ 1526*48a54d36SAndroid Build Coastguard Worker 1527*48a54d36SAndroid Build Coastguard Worker #if( DEBUG ) 1528*48a54d36SAndroid Build Coastguard Worker #if( TARGET_LANGUAGE_C_LIKE ) 1529*48a54d36SAndroid Build Coastguard Worker OSStatus CommonServicesTest( void ); 1530*48a54d36SAndroid Build Coastguard Worker #endif 1531*48a54d36SAndroid Build Coastguard Worker #endif 1532*48a54d36SAndroid Build Coastguard Worker 1533*48a54d36SAndroid Build Coastguard Worker #ifdef __cplusplus 1534*48a54d36SAndroid Build Coastguard Worker } 1535*48a54d36SAndroid Build Coastguard Worker #endif 1536*48a54d36SAndroid Build Coastguard Worker 1537*48a54d36SAndroid Build Coastguard Worker #endif // __COMMON_SERVICES__ 1538