+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, bool & v) const
+ {
+ if (b.flags() & ios_base::boolalpha) {
+ numpunct_facet p;
+ lyx::docstring const truename = from_local8bit(p.truename());
+ lyx::docstring const falsename = from_local8bit(p.falsename());
+ lyx::docstring s;
+ s.resize(16);
+ bool ok = true;
+ size_t n = 0;
+ size_t const tsize = truename.size();
+ size_t const fsize = falsename.size();
+ for (; iit != eit; ++iit) {
+ s += *iit;
+ ++n;
+ bool true_ok = support::prefixIs(truename, s);
+ bool false_ok = support::prefixIs(falsename, s);
+ if (!true_ok && !false_ok) {
+ ++iit;
+ ok = false;
+ break;
+ }
+ if ((true_ok && n == tsize) ||
+ (false_ok && n == fsize)) {
+ ++iit;
+ break;
+ }
+ }
+ if (ok) {
+ err = ios_base::goodbit;
+ v = truename == s ? true : false;
+ } else
+ err = ios_base::failbit;
+ if (iit == eit)
+ err |= ios_base::eofbit;
+ return iit;
+ } else {
+ long l;
+ iter_type end = this->do_get(iit, eit, b, err, l);
+ if (!(err & ios_base::failbit)) {
+ if (l == 0)
+ v = false;
+ else if (l == 1)
+ v = true;
+ else
+ err |= ios_base::failbit;
+ }
+ return end;
+ }
+ }
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, long & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, unsigned short & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, unsigned int & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, unsigned long & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+
+#ifdef LYX_USE_LONG_LONG
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, long long & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, unsigned long long & v) const
+ {
+ return do_get_integer(iit, eit, b, err, v);
+ }
+#endif
+
+ iter_type
+ do_get(iter_type iit, iter_type eit, ios_base & b,
+ ios_base::iostate & err, float & v) const