1#ifndef _PRINTF_H
2
3/* Workaround PR90731 with GCC 9 when using ldbl redirects in C++. */
4#include <bits/floatn.h>
5#if defined __cplusplus && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
6# if __GNUC_PREREQ (9, 0) && !__GNUC_PREREQ (9, 3)
7# pragma GCC system_header
8# endif
9#endif
10
11#include <stdio-common/printf.h>
12
13# ifndef _ISOMAC
14
15/* Internal interfaces for registered specifiers. */
16extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden;
17extern printf_function **__printf_function_table attribute_hidden;
18extern printf_va_arg_function **__printf_va_arg_table attribute_hidden;
19int __register_printf_specifier (int, printf_function,
20 printf_arginfo_size_function);
21libc_hidden_proto (__register_printf_specifier)
22
23/* The various kinds of arguments that can be passed to printf. */
24union printf_arg
25 {
26 wchar_t pa_wchar;
27 int pa_int;
28 long int pa_long_int;
29 long long int pa_long_long_int;
30 unsigned int pa_u_int;
31 unsigned long int pa_u_long_int;
32 unsigned long long int pa_u_long_long_int;
33 double pa_double;
34 long double pa_long_double;
35#if __HAVE_FLOAT128_UNLIKE_LDBL
36 _Float128 pa_float128;
37#endif
38 const char *pa_string;
39 const wchar_t *pa_wstring;
40 void *pa_pointer;
41 void *pa_user;
42};
43
44#include <bits/types/locale_t.h>
45
46/* Now define the internal interfaces. */
47extern int __printf_fphex (FILE *, const struct printf_info *,
48 const void *const *) attribute_hidden;
49extern int __printf_fp (FILE *, const struct printf_info *,
50 const void *const *);
51libc_hidden_proto (__printf_fp)
52extern int __printf_fp_l (FILE *, locale_t, const struct printf_info *,
53 const void *const *);
54libc_hidden_proto (__printf_fp_l)
55
56extern unsigned int __guess_grouping (unsigned int intdig_max,
57 const char *grouping)
58 attribute_hidden;
59
60# endif /* !_ISOMAC */
61#endif
62