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