1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#ifndef _PRINTF_H
/* Workaround PR90731 with GCC 9 when using ldbl redirects in C++. */
#include <bits/floatn.h>
#if defined __cplusplus && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
# if __GNUC_PREREQ (9, 0) && !__GNUC_PREREQ (9, 3)
# pragma GCC system_header
# endif
#endif
#include <stdio-common/printf.h>
# ifndef _ISOMAC
/* Internal interfaces for registered specifiers. */
extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden;
extern printf_function **__printf_function_table attribute_hidden;
extern printf_va_arg_function **__printf_va_arg_table attribute_hidden;
int __register_printf_specifier (int, printf_function,
printf_arginfo_size_function);
libc_hidden_proto (__register_printf_specifier)
/* The various kinds of arguments that can be passed to printf. */
union printf_arg
{
wchar_t pa_wchar;
int pa_int;
long int pa_long_int;
long long int pa_long_long_int;
unsigned int pa_u_int;
unsigned long int pa_u_long_int;
unsigned long long int pa_u_long_long_int;
double pa_double;
long double pa_long_double;
#if __HAVE_FLOAT128_UNLIKE_LDBL
_Float128 pa_float128;
#endif
const char *pa_string;
const wchar_t *pa_wstring;
void *pa_pointer;
void *pa_user;
};
/* Invoke a registered printf callback. Called from vfprintf and vfwprintf. */
int __printf_function_invoke (void *, printf_function callback,
union printf_arg *args_value,
size_t ndata_args,
struct printf_info *info) attribute_hidden;
int __wprintf_function_invoke (void *, printf_function callback,
union printf_arg *args_value,
size_t ndata_args,
struct printf_info *info) attribute_hidden;
#include <bits/types/locale_t.h>
/* Returns the width (as for printf, in bytes) of the converted ASCII
number in the characters in the range [FIRST, LAST). The range
must only contain ASCII digits. The caller is responsible for
avoiding overflow.
This function is used during non-wide digit translation. Wide
digit translate produces one wide character per ASCII digit,
so the width is simply LAST - FIRST. */
int __translated_number_width (locale_t loc,
const char *first, const char *last)
attribute_hidden;
struct __printf_buffer;
void __printf_buffer (struct __printf_buffer *buf, const char *format,
va_list ap, unsigned int mode_flags);
struct __wprintf_buffer;
void __wprintf_buffer (struct __wprintf_buffer *buf, const wchar_t *format,
va_list ap, unsigned int mode_flags);
extern int __printf_fp (FILE *, const struct printf_info *,
const void *const *);
libc_hidden_proto (__printf_fp)
void __printf_fphex_l_buffer (struct __printf_buffer *, locale_t,
const struct printf_info *,
const void *const *) attribute_hidden;
void __printf_fp_l_buffer (struct __printf_buffer *, locale_t,
const struct printf_info *,
const void *const *) attribute_hidden;
struct __wprintf_buffer;
void __wprintf_fphex_l_buffer (struct __wprintf_buffer *, locale_t,
const struct printf_info *,
const void *const *) attribute_hidden;
void __wprintf_fp_l_buffer (struct __wprintf_buffer *, locale_t,
const struct printf_info *,
const void *const *) attribute_hidden;
# endif /* !_ISOMAC */
#endif
|