summaryrefslogtreecommitdiff
path: root/glib/src/convert.ccg
diff options
context:
space:
mode:
Diffstat (limited to 'glib/src/convert.ccg')
-rw-r--r--glib/src/convert.ccg210
1 files changed, 157 insertions, 53 deletions
diff --git a/glib/src/convert.ccg b/glib/src/convert.ccg
index b888e8d5..9a4dae14 100644
--- a/glib/src/convert.ccg
+++ b/glib/src/convert.ccg
@@ -35,17 +35,19 @@ IConv::IConv(const std::string& to_codeset, const std::string& from_codeset)
{
if(gobject_ == reinterpret_cast<GIConv>(-1))
{
- GError* error = 0;
+ GError* gerror = 0;
// Abuse g_convert() to create a GError object. This may seem a weird
// thing to do, but it gives us consistently translated error messages
// at no further cost.
- g_convert("", 0, to_codeset.c_str(), from_codeset.c_str(), 0, 0, &error);
+ g_convert("", 0, to_codeset.c_str(), from_codeset.c_str(), 0, 0, &gerror);
// If this should ever fail we're fucked.
- g_assert(error != 0);
+ g_assert(gerror != 0);
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
}
}
@@ -77,16 +79,23 @@ void IConv::reset()
g_iconv(gobject_, 0, &inbytes_left, &outbuf, &outbytes_left);
}
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string IConv::convert(const std::string& str)
+#else
+std::string IConv::convert(const std::string& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_convert_with_iconv(
- str.data(), str.size(), gobject_, 0, &bytes_written, &error);
+ str.data(), str.size(), gobject_, 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
@@ -108,125 +117,196 @@ bool get_charset(std::string& charset)
return is_utf8;
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string convert(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset)
+#else
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_convert(
str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(),
- 0, &bytes_written, &error);
+ 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string convert_with_fallback(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_convert_with_fallback(
str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), 0,
- 0, &bytes_written, &error);
+ 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string convert_with_fallback(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset,
const Glib::ustring& fallback)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
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()), 0, &bytes_written, &error);
+ const_cast<char*>(fallback.c_str()), 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
Glib::ustring locale_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring locale_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_locale_to_utf8(
- opsys_string.data(), opsys_string.size(), 0, &bytes_written, &error);
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
const ScopedPtr<char> scoped_buf (buf);
return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string locale_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string locale_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_locale_from_utf8(
- utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &error);
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
Glib::ustring filename_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring filename_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_filename_to_utf8(
- opsys_string.data(), opsys_string.size(), 0, &bytes_written, &error);
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
const ScopedPtr<char> scoped_buf (buf);
return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string filename_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string filename_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
gsize bytes_written = 0;
- GError* error = 0;
+ GError* gerror = 0;
char *const buf = g_filename_from_utf8(
- utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &error);
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get(), bytes_written);
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
char* hostname_buf = 0;
- GError* error = 0;
+ GError* gerror = 0;
- char *const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &error);
+ char *const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
// Let's take ownership at this point.
const ScopedPtr<char> scoped_buf (buf);
@@ -239,35 +319,59 @@ std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname)
return std::string(scoped_buf.get());
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
std::string filename_from_uri(const Glib::ustring& uri)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
- GError* error = 0;
- char *const buf = g_filename_from_uri(uri.c_str(), 0, &error);
+ GError* gerror = 0;
+ char *const buf = g_filename_from_uri(uri.c_str(), 0, &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return std::string(ScopedPtr<char>(buf).get());
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
- GError* error = 0;
- char *const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &error);
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &gerror);
- if(error)
- Error::throw_exception(error);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return Glib::ustring(ScopedPtr<char>(buf).get());
}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
Glib::ustring filename_to_uri(const std::string& filename)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
{
- GError* error = 0;
- char *const buf = g_filename_to_uri(filename.c_str(), 0, &error);
-
- if(error)
- Error::throw_exception(error);
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), 0, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
return Glib::ustring(ScopedPtr<char>(buf).get());
}