• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/usr/include/
1/* Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3
4   The GNU C Library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8
9   The GNU C Library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with the GNU C Library; if not, write to the Free
16   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17   02111-1307 USA.  */
18
19/*
20 *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
21 */
22
23#ifndef _INTTYPES_H
24#define _INTTYPES_H	1
25
26#include <features.h>
27/* Get the type definitions.  */
28#include <stdint.h>
29
30#ifdef __UCLIBC_HAS_WCHAR__
31/* Get a definition for wchar_t.  But we must not define wchar_t itself.  */
32#ifndef ____gwchar_t_defined
33# ifdef __cplusplus
34#  define __gwchar_t wchar_t
35# elif defined __WCHAR_TYPE__
36typedef __WCHAR_TYPE__ __gwchar_t;
37# else
38#  define __need_wchar_t
39#  include <stddef.h>
40typedef wchar_t __gwchar_t;
41# endif
42# define ____gwchar_t_defined	1
43#endif
44#endif
45
46
47/* The ISO C99 standard specifies that these macros must only be
48   defined if explicitly requested.  */
49#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
50
51# if __WORDSIZE == 64
52#  define __PRI64_PREFIX	"l"
53#  define __PRIPTR_PREFIX	"l"
54# else
55#  define __PRI64_PREFIX	"ll"
56#  define __PRIPTR_PREFIX
57# endif
58
59/* Macros for printing format specifiers.  */
60
61/* Decimal notation.  */
62# define PRId8		"d"
63# define PRId16		"d"
64# define PRId32		"d"
65# define PRId64		__PRI64_PREFIX "d"
66
67# define PRIdLEAST8	"d"
68# define PRIdLEAST16	"d"
69# define PRIdLEAST32	"d"
70# define PRIdLEAST64	__PRI64_PREFIX "d"
71
72# define PRIdFAST8	"d"
73# define PRIdFAST16	__PRIPTR_PREFIX "d"
74# define PRIdFAST32	__PRIPTR_PREFIX "d"
75# define PRIdFAST64	__PRI64_PREFIX "d"
76
77
78# define PRIi8		"i"
79# define PRIi16		"i"
80# define PRIi32		"i"
81# define PRIi64		__PRI64_PREFIX "i"
82
83# define PRIiLEAST8	"i"
84# define PRIiLEAST16	"i"
85# define PRIiLEAST32	"i"
86# define PRIiLEAST64	__PRI64_PREFIX "i"
87
88# define PRIiFAST8	"i"
89# define PRIiFAST16	__PRIPTR_PREFIX "i"
90# define PRIiFAST32	__PRIPTR_PREFIX "i"
91# define PRIiFAST64	__PRI64_PREFIX "i"
92
93/* Octal notation.  */
94# define PRIo8		"o"
95# define PRIo16		"o"
96# define PRIo32		"o"
97# define PRIo64		__PRI64_PREFIX "o"
98
99# define PRIoLEAST8	"o"
100# define PRIoLEAST16	"o"
101# define PRIoLEAST32	"o"
102# define PRIoLEAST64	__PRI64_PREFIX "o"
103
104# define PRIoFAST8	"o"
105# define PRIoFAST16	__PRIPTR_PREFIX "o"
106# define PRIoFAST32	__PRIPTR_PREFIX "o"
107# define PRIoFAST64	__PRI64_PREFIX "o"
108
109/* Unsigned integers.  */
110# define PRIu8		"u"
111# define PRIu16		"u"
112# define PRIu32		"u"
113# define PRIu64		__PRI64_PREFIX "u"
114
115# define PRIuLEAST8	"u"
116# define PRIuLEAST16	"u"
117# define PRIuLEAST32	"u"
118# define PRIuLEAST64	__PRI64_PREFIX "u"
119
120# define PRIuFAST8	"u"
121# define PRIuFAST16	__PRIPTR_PREFIX "u"
122# define PRIuFAST32	__PRIPTR_PREFIX "u"
123# define PRIuFAST64	__PRI64_PREFIX "u"
124
125/* lowercase hexadecimal notation.  */
126# define PRIx8		"x"
127# define PRIx16		"x"
128# define PRIx32		"x"
129# define PRIx64		__PRI64_PREFIX "x"
130
131# define PRIxLEAST8	"x"
132# define PRIxLEAST16	"x"
133# define PRIxLEAST32	"x"
134# define PRIxLEAST64	__PRI64_PREFIX "x"
135
136# define PRIxFAST8	"x"
137# define PRIxFAST16	__PRIPTR_PREFIX "x"
138# define PRIxFAST32	__PRIPTR_PREFIX "x"
139# define PRIxFAST64	__PRI64_PREFIX "x"
140
141/* UPPERCASE hexadecimal notation.  */
142# define PRIX8		"X"
143# define PRIX16		"X"
144# define PRIX32		"X"
145# define PRIX64		__PRI64_PREFIX "X"
146
147# define PRIXLEAST8	"X"
148# define PRIXLEAST16	"X"
149# define PRIXLEAST32	"X"
150# define PRIXLEAST64	__PRI64_PREFIX "X"
151
152# define PRIXFAST8	"X"
153# define PRIXFAST16	__PRIPTR_PREFIX "X"
154# define PRIXFAST32	__PRIPTR_PREFIX "X"
155# define PRIXFAST64	__PRI64_PREFIX "X"
156
157
158/* Macros for printing `intmax_t' and `uintmax_t'.  */
159# define PRIdMAX	__PRI64_PREFIX "d"
160# define PRIiMAX	__PRI64_PREFIX "i"
161# define PRIoMAX	__PRI64_PREFIX "o"
162# define PRIuMAX	__PRI64_PREFIX "u"
163# define PRIxMAX	__PRI64_PREFIX "x"
164# define PRIXMAX	__PRI64_PREFIX "X"
165
166
167/* Macros for printing `intptr_t' and `uintptr_t'.  */
168# define PRIdPTR	__PRIPTR_PREFIX "d"
169# define PRIiPTR	__PRIPTR_PREFIX "i"
170# define PRIoPTR	__PRIPTR_PREFIX "o"
171# define PRIuPTR	__PRIPTR_PREFIX "u"
172# define PRIxPTR	__PRIPTR_PREFIX "x"
173# define PRIXPTR	__PRIPTR_PREFIX "X"
174
175
176/* Macros for scanning format specifiers.  */
177
178/* Signed decimal notation.  */
179# define SCNd8		"hhd"
180# define SCNd16		"hd"
181# define SCNd32		"d"
182# define SCNd64		__PRI64_PREFIX "d"
183
184# define SCNdLEAST8	"hhd"
185# define SCNdLEAST16	"hd"
186# define SCNdLEAST32	"d"
187# define SCNdLEAST64	__PRI64_PREFIX "d"
188
189# define SCNdFAST8	"hhd"
190# define SCNdFAST16	__PRIPTR_PREFIX "d"
191# define SCNdFAST32	__PRIPTR_PREFIX "d"
192# define SCNdFAST64	__PRI64_PREFIX "d"
193
194/* Signed decimal notation.  */
195# define SCNi8		"hhi"
196# define SCNi16		"hi"
197# define SCNi32		"i"
198# define SCNi64		__PRI64_PREFIX "i"
199
200# define SCNiLEAST8	"hhi"
201# define SCNiLEAST16	"hi"
202# define SCNiLEAST32	"i"
203# define SCNiLEAST64	__PRI64_PREFIX "i"
204
205# define SCNiFAST8	"hhi"
206# define SCNiFAST16	__PRIPTR_PREFIX "i"
207# define SCNiFAST32	__PRIPTR_PREFIX "i"
208# define SCNiFAST64	__PRI64_PREFIX "i"
209
210/* Unsigned decimal notation.  */
211# define SCNu8		"hhu"
212# define SCNu16		"hu"
213# define SCNu32		"u"
214# define SCNu64		__PRI64_PREFIX "u"
215
216# define SCNuLEAST8	"hhu"
217# define SCNuLEAST16	"hu"
218# define SCNuLEAST32	"u"
219# define SCNuLEAST64	__PRI64_PREFIX "u"
220
221# define SCNuFAST8	"hhu"
222# define SCNuFAST16	__PRIPTR_PREFIX "u"
223# define SCNuFAST32	__PRIPTR_PREFIX "u"
224# define SCNuFAST64	__PRI64_PREFIX "u"
225
226/* Octal notation.  */
227# define SCNo8		"hho"
228# define SCNo16		"ho"
229# define SCNo32		"o"
230# define SCNo64		__PRI64_PREFIX "o"
231
232# define SCNoLEAST8	"hho"
233# define SCNoLEAST16	"ho"
234# define SCNoLEAST32	"o"
235# define SCNoLEAST64	__PRI64_PREFIX "o"
236
237# define SCNoFAST8	"hho"
238# define SCNoFAST16	__PRIPTR_PREFIX "o"
239# define SCNoFAST32	__PRIPTR_PREFIX "o"
240# define SCNoFAST64	__PRI64_PREFIX "o"
241
242/* Hexadecimal notation.  */
243# define SCNx8		"hhx"
244# define SCNx16		"hx"
245# define SCNx32		"x"
246# define SCNx64		__PRI64_PREFIX "x"
247
248# define SCNxLEAST8	"hhx"
249# define SCNxLEAST16	"hx"
250# define SCNxLEAST32	"x"
251# define SCNxLEAST64	__PRI64_PREFIX "x"
252
253# define SCNxFAST8	"hhx"
254# define SCNxFAST16	__PRIPTR_PREFIX "x"
255# define SCNxFAST32	__PRIPTR_PREFIX "x"
256# define SCNxFAST64	__PRI64_PREFIX "x"
257
258
259/* Macros for scanning `intmax_t' and `uintmax_t'.  */
260# define SCNdMAX	__PRI64_PREFIX "d"
261# define SCNiMAX	__PRI64_PREFIX "i"
262# define SCNoMAX	__PRI64_PREFIX "o"
263# define SCNuMAX	__PRI64_PREFIX "u"
264# define SCNxMAX	__PRI64_PREFIX "x"
265
266/* Macros for scaning `intptr_t' and `uintptr_t'.  */
267# define SCNdPTR	__PRIPTR_PREFIX "d"
268# define SCNiPTR	__PRIPTR_PREFIX "i"
269# define SCNoPTR	__PRIPTR_PREFIX "o"
270# define SCNuPTR	__PRIPTR_PREFIX "u"
271# define SCNxPTR	__PRIPTR_PREFIX "x"
272
273#endif	/* C++ && format macros */
274
275
276__BEGIN_DECLS
277
278#if __WORDSIZE == 64
279
280/* We have to define the `uintmax_t' type using `ldiv_t'.  */
281typedef struct
282  {
283    long int quot;		/* Quotient.  */
284    long int rem;		/* Remainder.  */
285  } imaxdiv_t;
286
287#else
288
289/* We have to define the `uintmax_t' type using `lldiv_t'.  */
290typedef struct
291  {
292    long long int quot;		/* Quotient.  */
293    long long int rem;		/* Remainder.  */
294  } imaxdiv_t;
295
296#endif
297
298
299/* Compute absolute value of N.  */
300extern intmax_t imaxabs (intmax_t __n) __THROW __attribute__ ((__const__));
301
302/* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */
303extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
304      __THROW __attribute__ ((__const__));
305
306/* Like `strtol' but convert to `intmax_t'.  */
307extern intmax_t strtoimax (__const char *__restrict __nptr,
308			   char **__restrict __endptr, int __base) __THROW;
309
310/* Like `strtoul' but convert to `uintmax_t'.  */
311extern uintmax_t strtoumax (__const char *__restrict __nptr,
312			    char ** __restrict __endptr, int __base) __THROW;
313
314#ifdef __UCLIBC_HAS_WCHAR__
315/* Like `wcstol' but convert to `intmax_t'.  */
316extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
317			   __gwchar_t **__restrict __endptr, int __base)
318     __THROW;
319
320/* Like `wcstoul' but convert to `uintmax_t'.  */
321extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
322			    __gwchar_t ** __restrict __endptr, int __base)
323     __THROW;
324#endif
325
326#if 0 /*def __USE_EXTERN_INLINES*/
327
328# if __WORDSIZE == 64
329
330extern long int __strtol_internal (__const char *__restrict __nptr,
331				   char **__restrict __endptr,
332				   int __base, int __group)
333  __THROW __nonnull ((1)) __wur;
334/* Like `strtol' but convert to `intmax_t'.  */
335__extern_inline intmax_t
336__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
337		  int base))
338{
339  return __strtol_internal (nptr, endptr, base, 0);
340}
341
342extern unsigned long int __strtoul_internal (__const char *
343					     __restrict __nptr,
344					     char ** __restrict __endptr,
345					     int __base, int __group)
346  __THROW __nonnull ((1)) __wur;
347/* Like `strtoul' but convert to `uintmax_t'.  */
348__extern_inline uintmax_t
349__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
350		  int base))
351{
352  return __strtoul_internal (nptr, endptr, base, 0);
353}
354
355extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
356				   __gwchar_t **__restrict __endptr,
357				   int __base, int __group)
358  __THROW __nonnull ((1)) __wur;
359/* Like `wcstol' but convert to `intmax_t'.  */
360__extern_inline intmax_t
361__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
362		  __gwchar_t **__restrict endptr, int base))
363{
364  return __wcstol_internal (nptr, endptr, base, 0);
365}
366
367extern unsigned long int __wcstoul_internal (__const __gwchar_t *
368					     __restrict __nptr,
369					     __gwchar_t **
370					     __restrict __endptr,
371					     int __base, int __group)
372  __THROW __nonnull ((1)) __wur;
373/* Like `wcstoul' but convert to `uintmax_t'.  */
374__extern_inline uintmax_t
375__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
376		  __gwchar_t **__restrict endptr, int base))
377{
378  return __wcstoul_internal (nptr, endptr, base, 0);
379}
380
381# else /* __WORDSIZE == 32 */
382
383__extension__
384extern long long int __strtoll_internal (__const char *__restrict __nptr,
385					 char **__restrict __endptr,
386					 int __base, int __group)
387  __THROW __nonnull ((1)) __wur;
388/* Like `strtol' but convert to `intmax_t'.  */
389__extern_inline intmax_t
390__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
391		  int base))
392{
393  return __strtoll_internal (nptr, endptr, base, 0);
394}
395
396__extension__
397extern unsigned long long int __strtoull_internal (__const char *
398						   __restrict __nptr,
399						   char **
400						   __restrict __endptr,
401						   int __base,
402						   int __group)
403  __THROW __nonnull ((1)) __wur;
404/* Like `strtoul' but convert to `uintmax_t'.  */
405__extern_inline uintmax_t
406__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
407		  int base))
408{
409  return __strtoull_internal (nptr, endptr, base, 0);
410}
411
412__extension__
413extern long long int __wcstoll_internal (__const __gwchar_t *
414					 __restrict __nptr,
415					 __gwchar_t **__restrict __endptr,
416					 int __base, int __group)
417  __THROW __nonnull ((1)) __wur;
418/* Like `wcstol' but convert to `intmax_t'.  */
419__extern_inline intmax_t
420__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
421		  __gwchar_t **__restrict endptr, int base))
422{
423  return __wcstoll_internal (nptr, endptr, base, 0);
424}
425
426
427__extension__
428extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
429						   __restrict __nptr,
430						   __gwchar_t **
431						   __restrict __endptr,
432						   int __base,
433						   int __group)
434  __THROW __nonnull ((1)) __wur;
435/* Like `wcstoul' but convert to `uintmax_t'.  */
436__extern_inline uintmax_t
437__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
438		  __gwchar_t **__restrict endptr, int base))
439{
440  return __wcstoull_internal (nptr, endptr, base, 0);
441}
442
443# endif	/* __WORDSIZE == 32	*/
444#endif	/* Use extern inlines.  */
445
446__END_DECLS
447
448#endif /* inttypes.h */
449