X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstrings%2Ffmt.h;h=3c1db9d3e3c37c14f76ad6a7cba166925f00a26f;hb=99b9121e2158603372c7313400283b622e6754d8;hp=ba75958802b7760b6f6b352827e4f313048e717f;hpb=b42ed73a1b241c0e93ee03c43c4584b41c549bac;p=libs%2Fcore.git diff --git a/source/strings/fmt.h b/source/strings/fmt.h index ba75958..3c1db9d 100644 --- a/source/strings/fmt.h +++ b/source/strings/fmt.h @@ -1,18 +1,20 @@ -/* $Id$ - -This file is part of libmspstrings -Copyright © 2006-2008 Mikko Rasa -Distributed under the LGPL -*/ - #ifndef MSP_STRINGS_FMT_H_ #define MSP_STRINGS_FMT_H_ #include +#include #include namespace Msp { +class format_error: public std::logic_error +{ +public: + format_error(const std::string &w): std::logic_error(w) { } + virtual ~format_error() throw() = default; +}; + + /** Stores formatting information for converting variables into strings. Can be applied to an std::ostream or fed to lexical_cast. Also used internally by @@ -66,22 +68,22 @@ public: }; private: - unsigned wd; - unsigned prec; - bool spos; - wchar_t fillc; - Base base; - bool sbase; - FloatMode fmode; - bool spoint; - Align align; - bool ucase; - Type type; + unsigned wd = 0; + unsigned prec = 6; + bool spos = false; + wchar_t fillc = ' '; + Base base = DEC; + bool sbase = false; + FloatMode fmode = AUTOFLT; + bool spoint = false; + Align align = RIGHT; + bool ucase = false; + Type type = STR; public: - Fmt() { reset(); } - Fmt(const char *f) { reset(); parse(f); } - Fmt(const std::string &f) { reset(); parse(f.c_str()); } + Fmt() = default; + Fmt(const char *f) { parse(f); } + Fmt(const std::string &f) { parse(f.c_str()); } private: void parse(const char *); @@ -89,19 +91,20 @@ private: public: Fmt &width(unsigned w) { wd = w; return *this; } Fmt &precision(unsigned p) { prec = p; return *this; } - Fmt &showpos(bool s=true) { spos = s; return *this; } + Fmt &showpos(bool s = true) { spos = s; return *this; } Fmt &fill(wchar_t f) { fillc = f; return *this; } Fmt &fixed() { fmode = FIXED; return *this; } Fmt &scientific() { fmode = SCI; return *this; } - Fmt &showpoint(bool s=true) { spoint = s; return *this; } - Fmt &showbase(bool s=true) { sbase = s; return *this; } + Fmt &showpoint(bool s = true) { spoint = s; return *this; } + Fmt &showbase(bool s = true) { sbase = s; return *this; } Fmt &left() { align = LEFT; return *this; } Fmt &right() { align = RIGHT; return *this; } Fmt &dec() { base = DEC; return *this; } Fmt &hex() { base = HEX; return *this; } Fmt &oct() { base = OCT; return *this; } Fmt &bin() { base = BIN; return *this; } - Fmt &uppercase(bool u=true) { ucase = u; return *this; } + Fmt &autobase() { base = AUTOBASE; return *this; } + Fmt &uppercase(bool u = true) { ucase = u; return *this; } Fmt &numeric() { type = NUM; return *this; } Fmt &character() { type = CHAR; return *this; } Fmt &string() { type = STR; return *this; }