X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FFormat.cci;h=2f3765e775669d6e5e7366c4d479648b27cb73ba;hb=e9816d699770dea77c989c97ef53bf2266ce7b6b;hp=ed1ad8534d02ca9644d54c792c376ff80081592a;hpb=af697a0c8591b38f7ee7dbc3d1d0293f4ff72d37;p=senf.git diff --git a/senf/Utils/Format.cci b/senf/Utils/Format.cci index ed1ad85..2f3765e 100644 --- a/senf/Utils/Format.cci +++ b/senf/Utils/Format.cci @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2009 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -28,13 +28,170 @@ // Custom includes #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -prefix_ senf::format::eng::eng(double v_, double d_) - : v (v_), d (d_) +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// senf::format::eng + +prefix_ senf::format::eng::eng(float v, float d) + : v_ (v), d_ (d), haveWidth_ (false), width_ (0), havePrecision_ (false), precision_ (0), + haveFill_ (false), fill_ (' '), mask_ (), flags_ () {} -///////////////////////////////cci.e/////////////////////////////////////// +prefix_ senf::format::eng const & senf::format::eng::setw(unsigned w) + const +{ + haveWidth_ = true; + width_ = w; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::setprecision(unsigned p) + const +{ + havePrecision_ = true; + precision_ = p; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::setfill(char c) + const +{ + haveFill_ = true; + fill_ = c; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::showbase() + const +{ + mask_ |= std::ios_base::showbase; + flags_ |= std::ios_base::showbase; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::noshowbase() + const +{ + mask_ |= std::ios_base::showbase; + flags_ &= ~std::ios_base::showbase; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::showpos() + const +{ + mask_ |= std::ios_base::showpos; + flags_ |= std::ios_base::showpos; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::noshowpos() + const +{ + mask_ |= std::ios_base::showpos; + flags_ &= ~std::ios_base::showpos; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::showpoint() + const +{ + mask_ |= std::ios_base::showpoint; + flags_ |= std::ios_base::showpoint; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::noshowpoint() + const +{ + mask_ |= std::ios_base::showpoint; + flags_ &= ~std::ios_base::showpoint; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::uppercase() + const +{ + mask_ |= std::ios_base::uppercase; + flags_ |= std::ios_base::uppercase; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::nouppercase() + const +{ + mask_ |= std::ios_base::uppercase; + flags_ &= ~std::ios_base::uppercase; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::left() + const +{ + mask_ |= std::ios_base::adjustfield; + flags_ &= ~std::ios_base::adjustfield; + flags_ |= std::ios_base::left; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::internal() + const +{ + mask_ |= std::ios_base::adjustfield; + flags_ &= ~std::ios_base::adjustfield; + flags_ |= std::ios_base::internal; + return *this; +} + +prefix_ senf::format::eng const & senf::format::eng::right() + const +{ + mask_ |= std::ios_base::adjustfield; + flags_ &= ~std::ios_base::adjustfield; + flags_ |= std::ios_base::right; + return *this; +} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// senf::format::IndentHelper + +prefix_ senf::format::IndentHelper::IndentHelper() + : instance_level(1) +{ + ++static_level; +} + +prefix_ senf::format::IndentHelper::~IndentHelper() +{ + static_level -= instance_level; +} + +prefix_ void senf::format::IndentHelper::increase() +{ + ++static_level; + ++instance_level; +} + +prefix_ unsigned int senf::format::IndentHelper::level() + const +{ + return static_level; +} + +prefix_ std::ostream & senf::format::operator<<(std::ostream & os, senf::format::IndentHelper const & indent) +{ + for (unsigned int i=0, j=indent.level(); i