diff options
Diffstat (limited to 'glib/src/convert.ccg')
-rw-r--r-- | glib/src/convert.ccg | 187 |
1 files changed, 97 insertions, 90 deletions
diff --git a/glib/src/convert.ccg b/glib/src/convert.ccg index 135f135b..6a848475 100644 --- a/glib/src/convert.ccg +++ b/glib/src/convert.ccg @@ -23,17 +23,15 @@ #include <glibmm/utility.h> - namespace Glib { /**** Glib::IConv **********************************************************/ IConv::IConv(const std::string& to_codeset, const std::string& from_codeset) -: - gobject_ (g_iconv_open(to_codeset.c_str(), from_codeset.c_str())) +: gobject_(g_iconv_open(to_codeset.c_str(), from_codeset.c_str())) { - if(gobject_ == reinterpret_cast<GIConv>(-1)) + if (gobject_ == reinterpret_cast<GIConv>(-1)) { GError* gerror = nullptr; @@ -45,61 +43,66 @@ IConv::IConv(const std::string& to_codeset, const std::string& from_codeset) // If this should ever fail we're fucked. g_assert(gerror != nullptr); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); } } -IConv::IConv(GIConv gobject) -: - gobject_ (gobject) -{} +IConv::IConv(GIConv gobject) : gobject_(gobject) +{ +} IConv::~IConv() { g_iconv_close(gobject_); } -std::size_t IConv::iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left) +std::size_t +IConv::iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left) { return g_iconv(gobject_, inbuf, inbytes_left, outbuf, outbytes_left); } -void IConv::reset() +void +IConv::reset() { // Apparently iconv() on Solaris <= 7 segfaults if you pass in // NULL for anything but inbuf; work around that. (NULL outbuf // or NULL *outbuf is allowed by Unix98.) - char* outbuf = nullptr; - gsize inbytes_left = 0; + char* outbuf = nullptr; + gsize inbytes_left = 0; gsize outbytes_left = 0; g_iconv(gobject_, nullptr, &inbytes_left, &outbuf, &outbytes_left); } -std::string IConv::convert(const std::string& str) +std::string +IConv::convert(const std::string& str) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_convert_with_iconv( - str.data(), str.size(), gobject_, nullptr, &bytes_written, &gerror); + char* const buf = + g_convert_with_iconv(str.data(), str.size(), gobject_, nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); - //TODO: Avoid the copy by using a perfect-forwarding std::string constructor? + // TODO: Avoid the copy by using a perfect-forwarding std::string constructor? return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - /**** charset conversion functions *****************************************/ -bool get_charset() +bool +get_charset() { return g_get_charset(nullptr); } -bool get_charset(std::string& charset) +bool +get_charset(std::string& charset) { const char* charset_cstr = nullptr; const bool is_utf8 = g_get_charset(&charset_cstr); @@ -108,132 +111,132 @@ bool get_charset(std::string& charset) return is_utf8; } - -std::string convert(const std::string& str, - const std::string& to_codeset, - const std::string& from_codeset) +std::string +convert(const std::string& str, const std::string& to_codeset, const std::string& from_codeset) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_convert( - str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), - nullptr, &bytes_written, &gerror); + char* const buf = g_convert(str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), + nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); - //TODO: Avoid the copy by using a perfect-forwarding std::string constructor? + // TODO: Avoid the copy by using a perfect-forwarding std::string constructor? return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - -std::string convert_with_fallback(const std::string& str, - const std::string& to_codeset, - const std::string& from_codeset) +std::string +convert_with_fallback( + const std::string& str, const std::string& to_codeset, const std::string& from_codeset) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_convert_with_fallback( - str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), nullptr, - nullptr, &bytes_written, &gerror); + char* const buf = g_convert_with_fallback(str.data(), str.size(), to_codeset.c_str(), + from_codeset.c_str(), nullptr, nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); - //TODO: Avoid the copy by using a perfect-forwarding std::string constructor? + // TODO: Avoid the copy by using a perfect-forwarding std::string constructor? return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - -std::string convert_with_fallback(const std::string& str, - const std::string& to_codeset, - const std::string& from_codeset, - const Glib::ustring& fallback) +std::string +convert_with_fallback(const std::string& str, const std::string& to_codeset, + const std::string& from_codeset, const Glib::ustring& fallback) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_convert_with_fallback( - str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), - const_cast<char*>(fallback.c_str()), nullptr, &bytes_written, &gerror); + char* const buf = g_convert_with_fallback(str.data(), str.size(), to_codeset.c_str(), + from_codeset.c_str(), const_cast<char*>(fallback.c_str()), nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - -Glib::ustring locale_to_utf8(const std::string& opsys_string) +Glib::ustring +locale_to_utf8(const std::string& opsys_string) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_locale_to_utf8( - opsys_string.data(), opsys_string.size(), nullptr, &bytes_written, &gerror); + char* const buf = + g_locale_to_utf8(opsys_string.data(), opsys_string.size(), nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); const auto scoped_buf = make_unique_ptr_gfree(buf); return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written); } - -std::string locale_from_utf8(const Glib::ustring& utf8_string) +std::string +locale_from_utf8(const Glib::ustring& utf8_string) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_locale_from_utf8( - utf8_string.data(), utf8_string.bytes(), nullptr, &bytes_written, &gerror); + char* const buf = + g_locale_from_utf8(utf8_string.data(), utf8_string.bytes(), nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - -Glib::ustring filename_to_utf8(const std::string& opsys_string) +Glib::ustring +filename_to_utf8(const std::string& opsys_string) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_filename_to_utf8( - opsys_string.data(), opsys_string.size(), nullptr, &bytes_written, &gerror); + char* const buf = + g_filename_to_utf8(opsys_string.data(), opsys_string.size(), nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); const auto scoped_buf = make_unique_ptr_gfree(buf); return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written); } - -std::string filename_from_utf8(const Glib::ustring& utf8_string) +std::string +filename_from_utf8(const Glib::ustring& utf8_string) { gsize bytes_written = 0; GError* gerror = nullptr; - char *const buf = g_filename_from_utf8( - utf8_string.data(), utf8_string.bytes(), nullptr, &bytes_written, &gerror); + char* const buf = + g_filename_from_utf8(utf8_string.data(), utf8_string.bytes(), nullptr, &bytes_written, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return std::string(make_unique_ptr_gfree(buf).get(), bytes_written); } - -std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname) +std::string +filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname) { char* hostname_buf = nullptr; GError* gerror = nullptr; - char *const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &gerror); + char* const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); // Let's take ownership at this point. const auto scoped_buf = make_unique_ptr_gfree(buf); - if(hostname_buf) + if (hostname_buf) hostname = make_unique_ptr_gfree(buf).get(); else hostname.erase(); @@ -241,50 +244,54 @@ std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname) return std::string(scoped_buf.get()); } - -std::string filename_from_uri(const Glib::ustring& uri) +std::string +filename_from_uri(const Glib::ustring& uri) { GError* gerror = nullptr; - char *const buf = g_filename_from_uri(uri.c_str(), nullptr, &gerror); + char* const buf = g_filename_from_uri(uri.c_str(), nullptr, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return std::string(make_unique_ptr_gfree(buf).get()); } - -Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname) +Glib::ustring +filename_to_uri(const std::string& filename, const Glib::ustring& hostname) { GError* gerror = nullptr; - char *const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &gerror); + char* const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return Glib::ustring(make_unique_ptr_gfree(buf).get()); } - -Glib::ustring filename_to_uri(const std::string& filename) +Glib::ustring +filename_to_uri(const std::string& filename) { GError* gerror = nullptr; - char *const buf = g_filename_to_uri(filename.c_str(), nullptr, &gerror); + char* const buf = g_filename_to_uri(filename.c_str(), nullptr, &gerror); - if(gerror) ::Glib::Error::throw_exception(gerror); + if (gerror) + ::Glib::Error::throw_exception(gerror); return Glib::ustring(make_unique_ptr_gfree(buf).get()); } -Glib::ustring filename_display_basename(const std::string& filename) +Glib::ustring +filename_display_basename(const std::string& filename) { - char *const buf = g_filename_display_basename(filename.c_str()); + char* const buf = g_filename_display_basename(filename.c_str()); return Glib::ustring(make_unique_ptr_gfree(buf).get()); } - -Glib::ustring filename_display_name(const std::string& filename) +Glib::ustring +filename_display_name(const std::string& filename) { - char *const buf = g_filename_display_name(filename.c_str()); + char* const buf = g_filename_display_name(filename.c_str()); return Glib::ustring(make_unique_ptr_gfree(buf).get()); } |