xref: /aosp_15_r20/external/mdnsresponder/mDNSShared/CommonServices.h (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
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