1 #ifndef __JLANG__JEQUATIONFACET__
2 #define __JLANG__JEQUATIONFACET__
21 namespace JPP {
using namespace JLANG; }
85 const std::ios_base& format,
86 std::ios_base::iostate&
result,
103 const std::ios_base& format,
105 const char buffer)
const
107 return do_put(out, format, c, buffer);
118 const std::string
getPrefix(
const std::string& prefix,
const std::string& name)
const
133 std::istream&
pop(std::istream& in)
const
136 for (
int c; (c = in.peek()) != EOF &&
isWhiteSpace((
char) c); ) { in.get(); }
138 catch(
const std::exception& error) {};
156 const std::ios_base& format,
157 std::ios_base::iostate&
result,
158 std::string& buffer)
const override
162 result = (ios_base::iostate) 0;
164 streamsize
n = format.width();
167 n = numeric_limits<streamsize>::max();
178 result |= ios_base::failbit;
179 result |= ios_base::eofbit;
185 result |= ios_base::failbit;
190 buffer.push_back(*i);
196 buffer.push_back(*i);
199 result |= ios_base::eofbit;
219 const std::ios_base& format,
220 std::ios_base::iostate&
result,
225 result = (ios_base::iostate) 0;
235 result |= ios_base::failbit;
236 result |= ios_base::eofbit;
240 result |= ios_base::failbit;
261 const std::ios_base& format,
263 const std::string& buffer)
const override
267 if (format.flags() & ios_base::right) {
268 for (streamsize i = buffer.size(); i < format.width(); ++i, ++out) {
273 for (string::const_iterator i = buffer.begin(); i != buffer.end(); ++i, ++out) {
277 if (format.flags() & ios_base::left) {
278 for (streamsize i = buffer.size(); i < format.width(); ++i, ++out) {
297 const std::ios_base& format,
299 const char buffer)
const
303 if (format.flags() & ios_base::right) {
304 for (streamsize i = 1; i < format.width(); ++i, ++out) {
312 if (format.flags() & ios_base::left) {
313 for (streamsize i = 1; i < format.width(); ++i, ++out) {
360 std::ios_base::iostate&
result,
361 std::string& buffer)
const override
365 result = (ios_base::iostate) 0;
375 result |= ios_base::failbit;
376 result |= ios_base::eofbit;
386 for (
int count = 0; i != __end && (count != 0 || !
isEndOfLine(*i)); ++i) {
388 buffer.push_back(*i);
404 string::size_type pos = buffer.find(
getComment());
406 if (pos != string::npos) {
459 if (has_facet<JEquationFacet>(out.getloc()))
460 out << use_facet<JEquationFacet>(out.getloc()).getPreferredEndOfLine(
eol.index);
491 in.imbue(locale(in.getloc(), facet.
clone()));
508 out.imbue(locale(out.getloc(), facet.
clone()));
523 using namespace JLANG;
525 if (has_facet<JEquationFacet>(out.getloc()))
526 out << use_facet<JEquationFacet>(out.getloc()).getDefaultWhiteSpace();
543 using namespace JLANG;
545 if (has_facet<JEquationFacet>(out.getloc()))
546 out << use_facet<JEquationFacet>(out.getloc()).getDefaultDivision();
563 using namespace JLANG;
565 if (has_facet<JEquationFacet>(out.getloc()))
566 out << use_facet<JEquationFacet>(out.getloc()).getDefaultSeparator();
589 using namespace JLANG;
591 if (has_facet<JEquationFacet>(out.getloc()))
592 out << use_facet<JEquationFacet>(out.getloc()).getLeftBracket();
609 using namespace JLANG;
611 if (has_facet<JEquationFacet>(out.getloc()))
612 out << use_facet<JEquationFacet>(out.getloc()).getRightBracket();
Facet class to specify parsing of equations in currect locale (see class JLANG::JEquation).
void operator=(const JEquationFacet &)
JEquationFacet(const JEquationFacet &)
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.
ostreambuf_iterator put(ostreambuf_iterator out, const std::ios_base &format, const char c, const char buffer) const
Put character.
std::istream & pop(std::istream &in) const
Pop white spaces.
virtual istreambuf_iterator do_getline(const istreambuf_iterator __begin, const istreambuf_iterator __end, std::ios_base::iostate &result, std::string &buffer) const override
Read string.
JEquationFacet(const JEquationParameters ¶meters)
Constructor.
JEquationFacet()
Default constructor.
virtual istreambuf_iterator do_get(const istreambuf_iterator __begin, const istreambuf_iterator __end, const std::ios_base &format, std::ios_base::iostate &result, std::string &buffer) const override
Get string.
const std::string getPrefix(const std::string &prefix, const std::string &name) const
Get combined prefix for output.
virtual istreambuf_iterator do_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 ostreambuf_iterator do_put(ostreambuf_iterator out, const std::ios_base &format, const char c, const char buffer) const
Put character.
virtual ostreambuf_iterator do_put(ostreambuf_iterator out, const std::ios_base &format, const char c, const std::string &buffer) const override
Put string.
virtual JEquationFacet * clone() const override
Clone this facet.
Simple data structure to support I/O of equations (see class JLANG::JEquation).
bool isSeparator(const char c) const
Test for separator character.
bool isDivision(const char c) const
Test for division character.
const std::string & getComment() const
Get comment string.
bool isEndOfLine(const char c) const
Test for end of line character.
bool isRightBracket(const char c) const
Test for right bracket character.
bool isLeftBracket(const char c) const
Test for left bracket character.
bool isWhiteSpace(const char c) const
Test for white space character.
const char getDefaultDivision() const
Get default division character.
Facet class to specify parsing of a JLANG::JString object.
std::istreambuf_iterator< char, std::char_traits< char > > istreambuf_iterator
ostreambuf_iterator put(ostreambuf_iterator out, const std::ios_base &format, const char c, const std::string &buffer) const
Put string.
istreambuf_iterator get(const istreambuf_iterator __begin, const istreambuf_iterator __end, const std::ios_base &format, std::ios_base::iostate &result, std::string &buffer) const
Get string.
std::ostreambuf_iterator< char, std::char_traits< char > > ostreambuf_iterator
Auxiliary classes and methods for language specific functionality.
std::istream & operator>>(std::istream &in, const JLANG::JEquationFacet &facet)
Parse facet.
std::ostream & separator(std::ostream &out)
Print separator.
std::ostream & left_bracket(std::ostream &out)
Print left bracket.
JLANG::JEquationFacet setequation
Type definition of stream manipulator for equational I/O.
std::ostream & operator<<(std::ostream &out, const JLANG::JEquationFacet &facet)
Parse facet.
std::ostream & white_space(std::ostream &out)
Print white space.
std::ostream & right_bracket(std::ostream &out)
Print right bracket.
std::ostream & division(std::ostream &out)
Print division.
static const JLANG::JEndOfLine end_of_line
Print end of line.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary class for end of line.
friend std::ostream & operator<<(std::ostream &out, const JEndOfLine &eol)
Print end of line.
JEndOfLine()
Default constructor.
const JEndOfLine & operator()(const unsigned int i) const
Constructor.