1 #ifndef __JLANG__JSTRINGFACET__
2 #define __JLANG__JSTRINGFACET__
17 namespace JPP {
using namespace JLANG; }
27 public std::locale::facet
31 static std::locale::id
id;
45 std::locale::facet(refs)
72 const std::ios_base& format,
73 std::ios_base::iostate&
result,
74 std::string& buffer)
const
90 const std::ios_base& format,
92 const std::string& buffer)
const
94 return do_put(out, format, c, buffer);
104 inline std::istream&
ignore(std::istream& in)
const
107 in.setstate(std::ios_base::eofbit);
121 inline std::istream&
getline(std::istream& in,
122 std::string& buffer)
const
126 ios_base::iostate state = in.rdstate();
129 in.setstate(std::ios_base::eofbit);
132 if (state != ios_base::goodbit && state != ios_base::eofbit) {
147 static int i = std::ios_base::xalloc();
166 const std::ios_base& format,
167 std::ios_base::iostate&
result,
168 std::string& buffer)
const
172 result = (ios_base::iostate) 0;
174 streamsize
n = format.width();
177 n = numeric_limits<streamsize>::max();
184 result |= ios_base::failbit;
185 result |= ios_base::eofbit;
191 buffer.push_back(*i);
193 for (++i, --
n; i != __end &&
n != 0; ++i, --
n) {
194 buffer.push_back(*i);
198 result |= ios_base::eofbit;
216 const std::ios_base& format,
218 const std::string& buffer)
const
222 if (format.flags() & ios_base::right) {
223 for (streamsize i = buffer.size(); i < format.width(); ++i, ++out) {
228 for (string::const_iterator i = buffer.begin(); i != buffer.end(); ++i, ++out) {
232 if (format.flags() & ios_base::left) {
233 for (streamsize i = buffer.size(); i < format.width(); ++i, ++out) {
254 while (i != __end && *i !=
'\n') {
258 while (i != __end && *i ==
'\n') {
277 std::ios_base::iostate&
result,
278 std::string& buffer)
const
286 result |= ios_base::failbit;
287 result |= ios_base::eofbit;
293 for ( ; i != __end && *i !=
'\n'; ++i) {
294 buffer.push_back(*i);
Facet class to specify parsing of a JLANG::JString object.
JStringFacet(const JStringFacet &)
std::istream & ignore(std::istream &in) const
Ignore characters until next end of line.
virtual ostreambuf_iterator do_put(ostreambuf_iterator out, const std::ios_base &format, const char c, const std::string &buffer) const
Put string.
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.
static std::locale::id id
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.
static int getIndex()
Get index for stream associated facet data.
std::ostreambuf_iterator< char, std::char_traits< char > > ostreambuf_iterator
JStringFacet(std::size_t refs=0)
Constructor.
virtual JStringFacet * clone() const
Clone this facet.
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
Get string.
std::istream & getline(std::istream &in, std::string &buffer) const
Read characters until next end of line.
virtual istreambuf_iterator do_ignore(const istreambuf_iterator __begin, const istreambuf_iterator __end) const
Ignore characters until next end of line.
void operator=(const JStringFacet &)
virtual istreambuf_iterator do_getline(const istreambuf_iterator __begin, const istreambuf_iterator __end, std::ios_base::iostate &result, std::string &buffer) const
Read string.
Auxiliary classes and methods for language specific functionality.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).