X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FFormat.cci;h=dccbaddf6a836e89e810a0ac0077cd95d1192f71;hb=refs%2Fheads%2Fmaster;hp=ed1ad8534d02ca9644d54c792c376ff80081592a;hpb=af697a0c8591b38f7ee7dbc3d1d0293f4ff72d37;p=senf.git diff --git a/senf/Utils/Format.cci b/senf/Utils/Format.cci index ed1ad85..dccbadd 100644 --- a/senf/Utils/Format.cci +++ b/senf/Utils/Format.cci @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2009 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief Format inline non-template implementation */ @@ -28,13 +33,170 @@ // Custom includes #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// + +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// senf::format::eng -prefix_ senf::format::eng::eng(double v_, double d_) - : v (v_), d (d_) +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