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