Go to the documentation of this file. 1 #ifndef __JLANG__JEQUATION__
2 #define __JLANG__JEQUATION__
19 namespace JPP {
using namespace JLANG; }
78 ostream::sentry sentry(out);
82 const locale&
loc = out.getloc();
84 if (has_facet<JEquationFacet>(
loc)) {
90 out << equation.
value;
97 out << equation.
value;
189 istream::sentry sentry(in,
false);
195 const locale&
loc = in.getloc();
197 if (has_facet<JEquationFacet>(
loc)) {
201 ios_base::iostate state = in.rdstate();
204 for (
int c; (c = in.peek()) != EOF && facet.
isSkipLine((
char) c); ) {
209 if (state == ios_base::goodbit) facet.
get(in, istreambuf_iterator<char>(), in, state, equation.
key);
210 if (state == ios_base::goodbit) facet.
get(in, istreambuf_iterator<char>(), in, state, equation.
sep);
211 if (state == ios_base::goodbit) facet.
getline(in, equation.
value);
218 JString::const_iterator p = equation.
value. begin();
219 JString::const_reverse_iterator q = equation.
value.rbegin();
221 for ( ; ; ++p, ++q) {
232 if (p != equation.
value.begin() || q != equation.
value.rbegin()) {
233 equation.
value = string(p, q.base());
237 if (state != ios_base::goodbit && state != ios_base::eofbit) {
241 if (!(state & ios_base::eofbit)) {
244 in.setstate(ios_base::badbit);
250 in.setstate(ios_base::failbit);
269 ostream::sentry sentry(out);
273 const locale&
loc = out.getloc();
275 if (has_facet<JEquationFacet>(
loc)) {
281 out << equation.
value;
288 out << equation.
value;
308 istringstream in(buffer);
310 in.imbue(locale(in.getloc(), facet.
clone()));
JEquation()
Default constructor.
bool isSkipLine(const char c) const
Test for skip line character.
Auxiliary data structure for equation.
friend std::istream & operator>>(std::istream &in, JEquation &equation)
Read equation from input stream.
bool isSeparator(const char c) const
Test for separator character.
bool isDivision(const char c) const
Test for division character.
const std::string & getValue() const
Get value.
std::istream & ignore(std::istream &in) const
Ignore characters until next end of line.
static JEquation valueOf(const std::string &buffer, const JEquationFacet &facet)
Extract equation.
JEquation & setEquation(const JEquationFacet &facet)
Set this equation to its value.
std::string toString() const
Convert equation to string.
equation_type(const std::string __key, const T &__value)
Constructor.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
virtual JEquationFacet * clone() const
Clone this facet.
General purpose equation class.
Wrapper class around STL string class.
Facet class to specify parsing of equations in currect locale (see class JLANG::JEquation).
const char getDefaultEndOfLine() const
Get default end of line character.
bool isWhiteSpace(const char c) const
Test for white space character.
JEquation(const std::string &buffer, const JEquationFacet &facet)
Constructor.
const char getSeparator() const
Get separator.
istreambuf_iterator get(const istreambuf_iterator __begin, const istreambuf_iterator __end, const std::ios_base &format, std::ios_base::iostate &result, char &buffer) const
Get character.
const char getDefaultSeparator() const
Get default separator character.
JEquation & setEquation(const std::string &buffer, const JEquationFacet &facet)
Set equation.
static equation_type< T > make_equation(const std::string &key, const T &value)
Auxiliary method to create equation type.
friend std::ostream & operator<<(std::ostream &out, const JEquation &equation)
Write equation to output stream.
char getLeftBracket() const
Get left bracket.
std::istream & getline(std::istream &in, std::string &buffer) const
Read characters until next end of line.
Auxiliary classes and methods for language specific functionality.
const std::string & getKey() const
Get key.
char getRightBracket() const
Get right bracket.
friend std::ostream & operator<<(std::ostream &out, const equation_type &equation)
Write equation to output stream.