X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fdocstring.h;h=8c9a1f56d016bf930128a0c9bf5a6eb3045505bb;hb=848c89564fce9c4bfec79b915746dc6bc47abc3d;hp=629d77e21f9cba8a72d60b9dbbe83b22ebd3622c;hpb=de6418f37765fe452f135f96dee6d49897bff215;p=lyx.git diff --git a/src/support/docstring.h b/src/support/docstring.h index 629d77e21f..8c9a1f56d0 100644 --- a/src/support/docstring.h +++ b/src/support/docstring.h @@ -16,6 +16,7 @@ #include "support/types.h" #include +#include namespace lyx { @@ -37,6 +38,33 @@ docstring const from_utf8(std::string const &); /// Creates a UTF8 string from a docstring. This should go eventually. std::string const to_utf8(docstring const &); +/// convert \p s from the encoding of the locale to ucs4. +docstring const from_local8bit(std::string const & s); + +/// Exception thrown by to_local8bit if the string could not be converted +class to_local8bit_failure : public std::bad_cast { +public: + to_local8bit_failure() throw() : std::bad_cast() {} + virtual ~to_local8bit_failure() throw() {} + virtual const char* what() const throw(); +}; + +/** + * Convert \p s from ucs4 to the encoding of the locale. + * This may fail and throw an exception, the caller is expected to act + * appropriately. + */ +std::string const to_local8bit(docstring const & s); + +/// convert \p s from the encoding of the file system to ucs4. +docstring const from_filesystem8bit(std::string const & s); + +/// convert \p s from ucs4 to the encoding of the file system. +std::string const to_filesystem8bit(docstring const & s); + +/// normalize \p s to precomposed form c +docstring const normalize_c(docstring const & s); + /// Compare a docstring with a C string of ASCII characters bool operator==(lyx::docstring const &, char const *); @@ -70,9 +98,9 @@ lyx::docstring & operator+=(lyx::docstring & l, char r); } // namespace lyx -#if SIZEOF_WCHAR_T != 4 && defined(__GNUC__) && defined(__GNUC_MINOR__) && __GNUC__ == 3 && __GNUC_MINOR__ < 4 +#if ! defined(USE_WCHAR_T) && defined(__GNUC__) && defined(__GNUC_MINOR__) && __GNUC__ == 3 && __GNUC_MINOR__ < 4 // Missing char_traits methods in gcc 3.3 and older. Taken from gcc 4.2svn. -namespace std {$ +namespace std { template void char_traits::assign(char_type & c1, char_type const & c2)