+++ /dev/null
-/* $Id$
-
-This file is part of libmspstrings
-Copyright © 2006-2007 Mikko Rasa
-Distributed under the LGPL
-*/
-
-#include "formatter.h"
-
-using namespace std;
-
-namespace Msp {
-
-Formatter::Formatter(const string &f):
- fmt(f),
- pos(fmt.begin())
-{
- advance();
-}
-
-/**
-Returns the result of the formatting operation. Will throw if not enough
-values have been fed to the formatter.
-*/
-const string &Formatter::str() const
-{
- if(pos!=fmt.end())
- throw Exception("Too few arguments for format");
-
- return result;
-}
-
-/**
-Advances the pos iterator to the next conversion, adding literal characters to
-the result. The iterator is left at the second character of the conversion
-(i.e. after the %).
-*/
-void Formatter::advance()
-{
- for(; pos!=fmt.end(); ++pos)
- {
- if(*pos=='%')
- {
- ++pos;
- if(pos==fmt.end())
- throw Exception("Malformed format string");
- if(*pos!='%')
- break;
- }
-
- result += *pos;
- }
-}
-
-/**
-Reads the next conversion from the format string and returns a corresponding
-Fmt object.
-*/
-Fmt Formatter::get_conversion()
-{
- if(pos==fmt.end())
- throw Exception("Too many arguments for format");
-
- string::iterator i = pos;
- for(; i!=fmt.end(); ++i)
- if(isalpha(*i))
- break;
-
- if(i==fmt.end())
- throw Exception("Malformed format string");
-
- ++i;
- string c(pos, i);
- pos = i;
-
- return Fmt(c);
-}
-
-} // namespace Msp