X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffmt.cpp;fp=source%2Ffmt.cpp;h=0000000000000000000000000000000000000000;hp=e06f71ab456f40d55825345ea413bc6981d10dd6;hb=b42ed73a1b241c0e93ee03c43c4584b41c549bac;hpb=5b1368cb791cab043f0435628cacbaff36e39b7b diff --git a/source/fmt.cpp b/source/fmt.cpp deleted file mode 100644 index e06f71a..0000000 --- a/source/fmt.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* $Id$ - -This file is part of libmspstrings -Copyright © 2006-2008 Mikko Rasa -Distributed under the LGPL -*/ - -#include -#include "fmt.h" - -using namespace std; - -namespace Msp { - -void Fmt::parse(const char *f) -{ - if(*f=='%') ++f; - - for(; *f; ++f) - { - if(*f=='#') - { - sbase = true; - spoint = true; - } - else if(*f=='0') - fillc = '0'; - else if(*f=='-') - align = LEFT; - else if(*f=='+') - spos = true; - else - break; - } - - wd = 0; - for(; *f; ++f) - { - if(*f>='0' && *f<='9') - wd = wd*10+(*f-'0'); - else - break; - } - - if(*f=='.') - { - ++f; - prec = 0; - for(; *f; ++f) - { - if(*f>='0' && *f<='9') - prec = prec*10+(*f-'0'); - else - break; - } - } - - 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 = AUTOFLT; - else if(*f=='p' || *f=='P') - { - base = HEX; - sbase = true; - } - 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' || *f=='P') - ucase = true; - - ++f; - - if(*f) - throw InvalidParameterValue("Extra characters in conversion specification"); -} - -Fmt &Fmt::reset() -{ - wd = 0; - prec = 6; - spos = false; - fillc = ' '; - base = DEC; - sbase = false; - fmode = AUTOFLT; - spoint = false; - align = RIGHT; - ucase = false; - type = STR; - - return *this; -} - -void Fmt::apply(ostream &out) const -{ - out.flags(((base==HEX) ? ios_base::hex : (base==OCT) ? ios_base::oct : ios_base::dec) - | ((fmode==SCI) ? ios_base::scientific : (fmode==FIXED) ? ios_base::fixed : ios_base::fmtflags(0)) - | (fillc=='0' ? ios_base::internal : (align==LEFT) ? ios_base::left : ios_base::right) - | (sbase ? ios_base::showbase : ios_base::fmtflags(0)) - | (spoint ? ios_base::showpoint : ios_base::fmtflags(0)) - | (spos ? ios_base::showpos : ios_base::fmtflags(0)) - | (ucase ? ios_base::uppercase : ios_base::fmtflags(0))); - out.fill(fillc); - out.width(wd); - out.precision(prec); -} - -} // namespace Msp