1 #ifndef STLPLUS_FORMAT_TYPES
2 #define STLPLUS_FORMAT_TYPES
3 ////////////////////////////////////////////////////////////////////////////////
4 
5 //   Author:    Andy Rushton
6 //   Copyright: (c) Southampton University 1999-2004
7 //              (c) Andy Rushton           2004 onwards
8 //   License:   BSD License, see ../docs/license.html
9 
10 //   A Set of enumerations controlling the string formatting of numbers.
11 
12 ////////////////////////////////////////////////////////////////////////////////
13 
14 namespace stlplus
15 {
16 
17 ////////////////////////////////////////////////////////////////////////////////
18 // Integer radix display representations:
19 //   There are three ways in which the radix is represented:
20 //     - none - the number is just printed as a number (e.g. 12345). Can be confusing for non-decimal radix
21 //     - C style - for binary, octal and hex, the C-style prefices 0b, 0 and 0x are used
22 //       note that this is an unsigned representation
23 //     - Hash style - in the form radix#value - the value may be signed, e.g. 10#-9
24 
25 enum radix_display_t
26 {
27   radix_none,               // just print the number with no radix indicated
28   radix_hash_style,         // none for decimal, hash style for all others
29   radix_hash_style_all,     // hash style for all radices including decimal
30   radix_c_style,            // C style for hex and octal, none for others
31   radix_c_style_or_hash     // C style for hex and octal, none for decimal, hash style for others
32 };
33 
34 ////////////////////////////////////////////////////////////////////////////////
35 // Floating-point display representations:
36 // There are three formats for the printout:
37 //   - fixed - formatted as a fixed-point number, so no mantissa is printed (equivalent to %f in printf)
38 //   - floating - formatted as a normalised floating-point number (equivalent to %e in printf)
39 //   - mixed - formatted as fixed-point if appropriate, otherwise the floating format (equivalent to %g in printf)
40 
41 enum real_display_t
42 {
43   display_fixed,    // %f
44   display_floating, // %e
45   display_mixed     // %g
46 };
47 
48 ////////////////////////////////////////////////////////////////////////////////
49 // Alignment:
50 //   There are three field alignments:
51 //     - left aligned - the value is to the left of the field which is padded to the right with spaces
52 //     - right aligned - the value is to the right of the field which is padded to the left with spaces
53 //     - centred - the value is in the centre of the field and spaces added to both left and right
54 
55 enum alignment_t
56 {
57   align_left,
58   align_right,
59   align_centre
60 };
61 
62 ////////////////////////////////////////////////////////////////////////////////
63 
64 }
65 #endif
66