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
|
#ifndef BU_FMT_H
#define BU_FMT_H
namespace Bu
{
typedef struct Fmt
{
enum Alignment
{
Left = 0,
Center = 1,
Right = 2
};
Fmt() :
uMinWidth( 0 ),
cFillChar(' '),
uRadix( 10 ),
uAlign( Right ),
bPlus( false ),
bCaps( true ),
bTokenize( true )
{
}
Fmt( unsigned int uMinWidth, unsigned int uRadix=10,
Alignment a=Right, bool bPlus=false, bool bCaps=true,
char cFill=' ') :
uMinWidth( uMinWidth ),
cFillChar(cFill),
uRadix( uRadix ),
uAlign( a ),
bPlus( bPlus ),
bCaps( bCaps ),
bTokenize( true )
{
}
Fmt( unsigned int uMinWidth, Alignment a,
unsigned int uRadix=10, bool bPlus=false, bool bCaps=true,
char cFill=' ') :
uMinWidth( uMinWidth ),
cFillChar(cFill),
uRadix( uRadix ),
uAlign( a ),
bPlus( bPlus ),
bCaps( bCaps ),
bTokenize( true )
{
}
static Fmt hex( unsigned int uWidth=0, bool bCaps=true )
{
return Fmt( uWidth, 16, Right, false, bCaps, '0' );
}
static Fmt oct( unsigned int uWidth=0 )
{
return Fmt( uWidth, 8, Right, false, false, '0' );
}
static Fmt bin( unsigned int uWidth=0 )
{
return Fmt( uWidth, 1, Right, false, false, '0' );
}
static Fmt ptr( bool bCaps=true )
{
return Fmt( sizeof(ptrdiff_t)*2, 16, Right, false, bCaps, '0' );
}
Fmt &width( unsigned int uWidth );
Fmt &fill( char cFill='0' );
Fmt &radix( unsigned int uRadix );
Fmt &align( Alignment eAlign );
Fmt &plus( bool bPlus=true );
Fmt &caps( bool bCaps=true );
Fmt &tokenize( bool bTokenize=true );
Fmt &left();
Fmt &right();
Fmt ¢er();
unsigned char uMinWidth;
char cFillChar;
unsigned short uRadix : 6;
unsigned short uAlign : 2;
unsigned short bPlus : 1;
unsigned short bCaps : 1;
unsigned short bTokenize : 1;
} Fmt;
};
#endif
|