strings/format_types.hpp
#ifndef STLPLUS_FORMAT_TYPES
#define STLPLUS_FORMAT_TYPES
////////////////////////////////////////////////////////////////////////////////
// Author: Andy Rushton
// Copyright: (c) Southampton University 1999-2004
// (c) Andy Rushton 2004 onwards
// License: BSD License, see ../docs/license.html
// A Set of enumerations controlling the string formatting of numbers.
////////////////////////////////////////////////////////////////////////////////
namespace stlplus
{
////////////////////////////////////////////////////////////////////////////////
// Integer radix display representations:
// There are three ways in which the radix is represented:
// - none - the number is just printed as a number (e.g. 12345). Can be confusing for non-decimal radix
// - C style - for binary, octal and hex, the C-style prefices 0b, 0 and 0x are used
// note that this is an unsigned representation
// - Hash style - in the form radix#value - the value may be signed, e.g. 10#-9
enum radix_display_t
{
radix_none, // just print the number with no radix indicated
radix_hash_style, // none for decimal, hash style for all others
radix_hash_style_all, // hash style for all radices including decimal
radix_c_style, // C style for hex and octal, none for others
radix_c_style_or_hash // C style for hex and octal, none for decimal, hash style for others
};
////////////////////////////////////////////////////////////////////////////////
// Floating-point display representations:
// There are three formats for the printout:
// - fixed - formatted as a fixed-point number, so no mantissa is printed (equivalent to %f in printf)
// - floating - formatted as a normalised floating-point number (equivalent to %e in printf)
// - mixed - formatted as fixed-point if appropriate, otherwise the floating format (equivalent to %g in printf)
enum real_display_t
{
display_fixed, // %f
display_floating, // %e
display_mixed // %g
};
////////////////////////////////////////////////////////////////////////////////
// Alignment:
// There are three field alignments:
// - left aligned - the value is to the left of the field which is padded to the right with spaces
// - right aligned - the value is to the right of the field which is padded to the left with spaces
// - centred - the value is in the centre of the field and spaces added to both left and right
enum alignment_t
{
align_left,
align_right,
align_centre
};
////////////////////////////////////////////////////////////////////////////////
}
#endif