Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
fmt_defs.h
Go to the documentation of this file.
1
30#ifndef RW_FMT_DEFS_H_INCLUDED
31#define RW_FMT_DEFS_H_INCLUDED
32
33#include <rw_testdefs.h>
34
35#include <stddef.h> // for ptrdiff_t, size_t
36
37
39// convenience typedefs
40typedef unsigned char UChar;
41typedef unsigned short UShrt;
42typedef unsigned int UInt;
43typedef unsigned long ULong;
44
45#ifdef _RWSTD_LONG_LONG
46
47typedef unsigned _RWSTD_LONG_LONG ULLong;
48
49#endif // _RWSTD_LONG_LONG
50
51typedef void (*funptr_t)();
52
53struct DummyStruct { };
54typedef void (DummyStruct::*memptr_t)() const;
55
56
58struct Buffer {
59 char **pbuf; // pointer to the output buffer
60 size_t *pbufsize; // pointer to the size of the buffer
61 size_t maxsize; // maximum not-to-exceed size
62 size_t endoff; // offset of the last character
63};
64
65
67struct FmtSpec
68{
69 // optional flags
70 unsigned fl_minus : 1;
71 unsigned fl_plus : 1;
72 unsigned fl_pound : 1;
73 unsigned fl_space : 1;
74 unsigned fl_zero : 1;
75
76 // optional length modifier
77 enum Modifier {
79 mod_h, // short modifier
80 mod_hh, // char modifier
81 mod_l, // long modifier
82 mod_ll, // long long modifier
83 mod_j, // intmax_t modifier
84 mod_z, // size_t modifier
85 mod_t, // ptrdiff_t modifier
86 mod_L, // long double modifier
87 mod_ext_A, // extension: arrays
88 mod_ext_I // extension: int as ios::iostate
89 };
90
92
93 unsigned cond : 1; // have an if/else clause
94 unsigned cond_true : 1; // if/else clause is active (true)
95 unsigned cond_begin : 1; // beginning of an if/else clause
96 unsigned cond_end : 1; // end of an if/else clause
97
98 // note that the signedness of a bitfield is implementation-defined
99 // unless explicitly declared signed or unsigned
100
101 // extension: 8, 16, 32, and 64 bit integer width modifier
102 signed int iwidth : 4;
103
104 // extension: optional numerical base 2 - 36
105 signed int base : 7;
106
107 // extension: optional parameter number
109
110 // optional field width and precision
111 int width;
112 int prec;
113
114 // extension: string argument
115 char *strarg;
116
117 // required conversion specifier
119
120 // extension: fill character
121 int fill;
122
123#ifndef _RWSTD_NO_LONG_DOUBLE
124 typedef long double ldbl_t;
125#else
126 typedef double ldbl_t; // bogus (for convenience)
127#endif // _RWSTD_NO_LONG_DOUBLE
128
129#ifdef _RWSTD_LONG_LONG
131#else
132 typedef long llong_t; // bogus (for convenience)
133#endif // _RWSTD_LONG_LONG
134
135#ifdef _RWSTD_INT64_T
136 typedef _RWSTD_INT64_T i64_t;
137#else
138 typedef int i64_t; // likely bogus (for convenience)
139#endif // _RWSTD_INT64_T
140
141#ifdef _RWSTD_INT32_T
142 typedef _RWSTD_INT32_T i32_t;
143#else
144 typedef int i32_t;
145#endif // _RWSTD_INT64_T
146
147#ifdef _RWSTD_WINT_T
148 typedef _RWSTD_WINT_T wint_t;
149#else
150 typedef int wint_t;
151#endif // _RWSTD_WINT_T
152
154 typedef ptrdiff_t diff_t;
157
158 typedef int int_t;
159 typedef long long_t;
160 typedef void* ptr_t;
161 typedef double dbl_t;
162
163 union {
172 size_t size_;
174
179};
180
181
183// format a character string
184extern int
185_rw_fmtstr (const FmtSpec&, Buffer&, const char*, size_t);
186
187// format errno value/name
188extern int
189_rw_fmterrno (const FmtSpec&, Buffer&, int);
190
191// format Windows GetLastError(), or errno value/name
192extern int
193_rw_fmtlasterror (const FmtSpec&, Buffer&, int);
194
195// format the name/value of an LC_XXX constant/environment variable
196extern int
197_rw_fmtlc (const FmtSpec&, Buffer&, int);
198
199// format ctype_base::mask
200extern int
201_rw_fmtmask (const FmtSpec&, Buffer&, int);
202
203// format a character mask (alpha|alnum|...|xdigit)
204extern int
205_rw_fmtcharmask (const FmtSpec&, Buffer&, int);
206
207// format ios_base::iostate
208extern int
209_rw_fmtiostate (const FmtSpec&, Buffer&, int);
210
211// format ios_base::fmtflags
212extern int
213_rw_fmtflags (const FmtSpec&, Buffer&, int);
214
215// format ios_base::openmode
216extern int
217_rw_fmtopenmode (const FmtSpec&, Buffer&, int);
218
219// format ios_base::seekdir
220extern int
221_rw_fmtseekdir (const FmtSpec&, Buffer&, int);
222
223// format ios_base::event
224extern int
225_rw_fmtevent (const FmtSpec&, Buffer&, int);
226
227extern int
228_rw_fmtmonpat (const FmtSpec&, Buffer&, const char [4]);
229
230// format a signal value/name
231extern int
232_rw_fmtsignal (const FmtSpec&, Buffer&, int);
233
234// format a bitset of arbitrary size
235extern int
236_rw_fmtbits (const FmtSpec&, Buffer&, const void*, size_t);
237
238#endif // RW_FMT_DEFS_H_INCLUDED
@ ULLong
#define _RWSTD_LONG_LONG
#define _RWSTD_WINT_T
Definition _defs.h:1266
int _rw_fmtiostate(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:236
int _rw_fmtseekdir(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:299
int _rw_fmtcharmask(const FmtSpec &, Buffer &, int)
int _rw_fmtmask(const FmtSpec &, Buffer &, int)
void(DummyStruct::* memptr_t)() const
Definition fmt_defs.h:54
int _rw_fmtevent(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:316
int _rw_fmtopenmode(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:253
unsigned char UChar
Definition fmt_defs.h:40
unsigned long ULong
Definition fmt_defs.h:43
void(* funptr_t)()
Definition fmt_defs.h:51
int _rw_fmtbits(const FmtSpec &, Buffer &, const void *, size_t)
int _rw_fmterrno(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:657
unsigned int UInt
Definition fmt_defs.h:42
int _rw_fmtsignal(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:461
int _rw_fmtflags(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:154
int _rw_fmtmonpat(const FmtSpec &, Buffer &, const char[4])
Definition fmt_bits.cpp:406
int _rw_fmtstr(const FmtSpec &, Buffer &, const char *, size_t)
Definition printf.cpp:2316
int _rw_fmtlasterror(const FmtSpec &, Buffer &, int)
int _rw_fmtlc(const FmtSpec &, Buffer &, int)
Definition fmt_bits.cpp:349
unsigned short UShrt
Definition fmt_defs.h:41
size_t maxsize
Definition fmt_defs.h:61
char ** pbuf
Definition fmt_defs.h:59
size_t endoff
Definition fmt_defs.h:62
size_t * pbufsize
Definition fmt_defs.h:60
size_t size_
Definition fmt_defs.h:172
int int_t
Definition fmt_defs.h:158
::funptr_t funptr_t
Definition fmt_defs.h:155
unsigned fl_pound
Definition fmt_defs.h:72
ptrdiff_t diff_t
Definition fmt_defs.h:154
signed int base
Definition fmt_defs.h:105
int_t int_
Definition fmt_defs.h:170
::memptr_t memptr_t
Definition fmt_defs.h:156
unsigned cond
Definition fmt_defs.h:93
unsigned fl_minus
Definition fmt_defs.h:70
i32_t i32_
Definition fmt_defs.h:169
Modifier mod
Definition fmt_defs.h:91
unsigned fl_space
Definition fmt_defs.h:73
ldbl_t ldbl_
Definition fmt_defs.h:164
::size_t size_t
Definition fmt_defs.h:153
i64_t i64_
Definition fmt_defs.h:166
int wint_t
Definition fmt_defs.h:150
unsigned fl_zero
Definition fmt_defs.h:74
int prec
Definition fmt_defs.h:112
int width
Definition fmt_defs.h:111
long long_t
Definition fmt_defs.h:159
memptr_t memptr_
Definition fmt_defs.h:176
long double ldbl_t
Definition fmt_defs.h:124
int i64_t
Definition fmt_defs.h:138
dbl_t dbl_
Definition fmt_defs.h:175
char * strarg
Definition fmt_defs.h:115
unsigned cond_begin
Definition fmt_defs.h:95
ptr_t ptr_
Definition fmt_defs.h:167
signed int iwidth
Definition fmt_defs.h:102
wint_t wint_
Definition fmt_defs.h:173
long llong_t
Definition fmt_defs.h:132
void * ptr_t
Definition fmt_defs.h:160
int i32_t
Definition fmt_defs.h:144
double dbl_t
Definition fmt_defs.h:161
unsigned fl_plus
Definition fmt_defs.h:71
int cvtspec
Definition fmt_defs.h:118
diff_t diff_
Definition fmt_defs.h:171
long_t long_
Definition fmt_defs.h:168
unsigned cond_true
Definition fmt_defs.h:94
funptr_t funptr_
Definition fmt_defs.h:177
llong_t llong_
Definition fmt_defs.h:165
union FmtSpec::@64 param
long paramno
Definition fmt_defs.h:108
int fill
Definition fmt_defs.h:121
@ mod_t
Definition fmt_defs.h:85
@ mod_L
Definition fmt_defs.h:86
@ mod_z
Definition fmt_defs.h:84
@ mod_hh
Definition fmt_defs.h:80
@ mod_ext_A
Definition fmt_defs.h:87
@ mod_h
Definition fmt_defs.h:79
@ mod_l
Definition fmt_defs.h:81
@ mod_ll
Definition fmt_defs.h:82
@ mod_ext_I
Definition fmt_defs.h:88
@ mod_j
Definition fmt_defs.h:83
@ mod_none
Definition fmt_defs.h:78
unsigned cond_end
Definition fmt_defs.h:96