]> git.lyx.org Git - lyx.git/blobdiff - src/support/docstring.C
Add operator += for ASCII C strings and single ASCII chars
[lyx.git] / src / support / docstring.C
index 59ac6fedb79cd2e0e0062094ba4d33631fa34ff0..ceffbc3832a2a0079352b9a8c0a511ddea71d41a 100644 (file)
@@ -40,6 +40,19 @@ docstring const from_ascii(std::string const & ascii)
 }
 
 
+std::string const to_ascii(docstring const & ucs4)
+{
+       int const len = ucs4.length();
+       std::string ascii;
+       ascii.resize(len);
+       for (int i = 0; i < len; ++i) {
+               BOOST_ASSERT(ucs4[i] < 0x80);
+               ascii[i] = static_cast<char>(ucs4[i]);
+       }
+       return ascii;
+}
+
+
 docstring const from_utf8(std::string const & utf8)
 {
        std::vector<lyx::char_type> const ucs4 =
@@ -109,6 +122,24 @@ lyx::docstring operator+(char l, lyx::docstring const & r)
 }
 
 
+lyx::docstring operator+=(lyx::docstring & l, char const * r)
+{
+       for (char const * c = r; *c; ++c) {
+               BOOST_ASSERT(static_cast<unsigned char>(*c) < 0x80);
+               l.push_back(*c);
+       }
+       return l;
+}
+
+
+lyx::docstring operator+=(lyx::docstring & l, char r)
+{
+       BOOST_ASSERT(static_cast<unsigned char>(r) < 0x80);
+       l.push_back(r);
+       return l;
+}
+
+
 #if (!defined(HAVE_WCHAR_T) || SIZEOF_WCHAR_T != 4) && defined(__GNUC__)
 
 // gcc does not have proper locale facets for lyx::char_type if