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;
 
  202       istream::sentry sentry(in, 
false);
 
  208         const locale& 
loc = in.getloc();
 
  210         if (has_facet<JEquationFacet>(
loc)) {
 
  214           ios_base::iostate state = in.rdstate();
 
  217           for (
int c; (c = in.peek()) != EOF && facet.
isSkipLine((
char) c); ) {
 
  222           if (state == ios_base::goodbit) facet.
get(in, istreambuf_iterator<char>(), in, state, equation.
key);
 
  223           if (state == ios_base::goodbit) facet.
get(in, istreambuf_iterator<char>(), in, state, equation.
sep);
 
  224           if (state == ios_base::goodbit) facet.
getline(in, equation.
value);
 
  231             JString::const_iterator         p = equation.
value. begin();
 
  232             JString::const_reverse_iterator q = equation.
value.rbegin();
 
  234             for ( ; ; ++p, ++q) {
 
  245             if (p != equation.
value.begin() || q != equation.
value.rbegin()) {
 
  246               equation.
value = string(p, q.base());
 
  250           if (state != ios_base::goodbit && state != ios_base::eofbit) {
 
  254           if (!(state & ios_base::eofbit)) {
 
  257               in.setstate(ios_base::badbit);
 
  263           in.setstate(ios_base::failbit);
 
  282       ostream::sentry sentry(out);
 
  286         const locale& 
loc = out.getloc();
 
  288         if (has_facet<JEquationFacet>(
loc)) {
 
  294           out << equation.
value;
 
  301           out << equation.
value;
 
  321       istringstream in(buffer);
 
  323       in.imbue(locale(in.getloc(), facet.
clone()));
 
Facet class to specify parsing of equations in currect locale (see class JLANG::JEquation).
 
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.
 
virtual JEquationFacet * clone() const override
Clone this facet.
 
bool isSeparator(const char c) const
Test for separator character.
 
bool isDivision(const char c) const
Test for division character.
 
const char getDefaultSeparator() const
Get default separator character.
 
const char getDefaultEndOfLine() const
Get default end of line character.
 
char getLeftBracket() const
Get left bracket.
 
bool isSkipLine(const char c) const
Test for skip line character.
 
char getRightBracket() const
Get right bracket.
 
bool isWhiteSpace(const char c) const
Test for white space character.
 
General purpose equation class.
 
const std::string & getKey() const
Get key.
 
const std::string & getValue() const
Get value.
 
JEquation & setEquation(const JEquationFacet &facet)
Set this equation to its value.
 
JEquation()
Default constructor.
 
JEquation(const std::string &buffer, const JEquationFacet &facet)
Constructor.
 
std::string toString() const
Convert equation to string.
 
const char getSeparator() const
Get separator.
 
JEquation & setEquation(const std::string &buffer, const JEquationFacet &facet)
Set equation.
 
friend std::ostream & operator<<(std::ostream &out, const JEquation &equation)
Write equation to output stream.
 
static equation_type< T > make_equation(const std::string &key, const T &value)
Auxiliary method to create equation type.
 
JEquation(const std::string &key, const std::string &value)
Constructor.
 
static JEquation valueOf(const std::string &buffer, const JEquationFacet &facet)
Extract equation.
 
friend std::istream & operator>>(std::istream &in, JEquation &equation)
Read equation from input stream.
 
std::istream & ignore(std::istream &in) const
Ignore characters until next end of line.
 
std::istream & getline(std::istream &in, std::string &buffer) const
Read characters until next end of line.
 
Wrapper class around STL string class.
 
Auxiliary classes and methods for language specific functionality.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary data structure for equation.
 
friend std::ostream & operator<<(std::ostream &out, const equation_type &equation)
Write equation to output stream.
 
equation_type(const std::string __key, const T &__value)
Constructor.