X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffmt.cpp;h=0c1531d8315dfe8c19560be5b28ed2b8374cf9e7;hp=b476c36f6c2def97ec4093e7259ec52d1cad48bc;hb=9573cffd8df40a81cd7c338d63d07e4965eb3854;hpb=4ec2cf9b91a9918f02990c40145bb39a87b0e2bb diff --git a/source/fmt.cpp b/source/fmt.cpp index b476c36..0c1531d 100644 --- a/source/fmt.cpp +++ b/source/fmt.cpp @@ -1,4 +1,11 @@ -#include +/* $Id$ + +This file is part of libmspstrings +Copyright © 2006-2008 Mikko Rasa +Distributed under the LGPL +*/ + +#include #include "fmt.h" using namespace std; @@ -16,10 +23,11 @@ Fmt &Fmt::reset() fillc=' '; base=DEC; sbase=false; - fmode=EXP; + fmode=AUTOFLT; spoint=false; align=RIGHT; ucase=false; + type=STR; return *this; } @@ -88,27 +96,36 @@ void Fmt::parse(const char *f) } } - if(*f=='x' || *f=='X') + type=NUM; + if(*f=='d' || *f=='u') + base=DEC; + else if(*f=='x' || *f=='X') base=HEX; else if(*f=='o') base=OCT; + else if(*f=='b') + base=BIN; else if(*f=='e' || *f=='E') fmode=SCI; else if(*f=='f' || *f=='F') fmode=FIXED; else if(*f=='g' || *f=='G') - fmode=EXP; - else if(*f=='p') + fmode=AUTOFLT; + else if(*f=='p' || *f=='P') { base=HEX; sbase=true; } - else if(*f=='d' || *f=='i' || *f=='u' || *f=='c' || *f=='s') - ; + else if(*f=='c') + type=CHAR; + else if(*f=='s') + type=STR; + else if(*f=='i') + base=AUTOBASE; else throw InvalidParameterValue("Invalid conversion specifier"); - if(*f=='E' || *f=='F' || *f=='G' || *f=='X') + if(*f=='E' || *f=='F' || *f=='G' || *f=='X' || *f=='P') ucase=true; ++f;