Implement g_ucs4_to_utf8 which was in
authorOwen Taylor <otaylor@redhat.com>
Mon, 18 Sep 2000 14:55:24 +0000 (14:55 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 18 Sep 2000 14:55:24 +0000 (14:55 +0000)
Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>

* gutf8.c: Implement g_ucs4_to_utf8 which was in

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/glib/tmpl/error_reporting.sgml
glib/gutf8.c
gutf8.c

index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index 60fe94ead9e9a88be50f250a5e4db9b3692c5229..e567127d9981a7a09f5cd15f489b64d81f5dffb7 100644 (file)
@@ -1,6 +1,15 @@
+Mon Sep 18 10:58:21 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gutf8.c: Implement g_ucs4_to_utf8 which was in
+       the header file but not implemented.
+
 Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
-       * glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
-       * gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
+
+       * glib.h configure.in: Define g_alloca() as an
+       alloca-that-works-anywhere.
+       
+       * gconvert.c: Fix warnings which could have caused problems on
+       64-bit platforms.
 
 Sun Sep 10 12:37:40 2000  Owen Taylor  <otaylor@redhat.com>
 
index df4ac510eefd56da472a8919432253638df040ff..adc7f8f37a81812f1ae1a6766a8b7b902e99b80d 100644 (file)
@@ -454,8 +454,7 @@ Summary of rules for use of #GError:
 
 </para>
 
-@err: 
-<!--
+@err: <!--
 Local variables:
 mode: sgml
 sgml-parent-document: ("../glib-docs.sgml" "book" "refsect2" "")
index f98f1372a031abcc70a28da35cce760800c7df8b..1f31f6e81da2d34c9c9a7392ce2aff9dc4431c1a 100644 (file)
@@ -487,6 +487,41 @@ g_utf8_to_ucs4 (const char *str, int len)
   return result;
 }
 
+/**
+ * g_ucs4_to_utf8:
+ * @str: a UCS-4 encoded string
+ * @len: the length of @
+ * 
+ * Convert a string from a 32-bit fixed width representation as UCS-4.
+ * to UTF-8.
+ * 
+ * Return value: a pointer to a newly allocated UTF-8 string.
+ *               This value must be freed with g_free()
+ **/
+gchar *
+g_ucs4_to_utf8 (const gunichar *str, int len)
+{
+  gint result_length;
+  gchar *result, *p;
+  gint i;
+
+  result_length = 0;
+  for (i = 0; i < len ; i++)
+    result_length += g_unichar_to_utf8 (str[i], NULL);
+
+  result_length++;
+
+  result = g_malloc (result_length + 1);
+  p = result;
+
+  for (i = 0; i < len ; i++)
+    p += g_unichar_to_utf8 (str[i], p);
+  
+  *p = '\0';
+
+  return result;
+}
+
 /**
  * g_utf8_validate:
  * @str: a pointer to character data
diff --git a/gutf8.c b/gutf8.c
index f98f1372a031abcc70a28da35cce760800c7df8b..1f31f6e81da2d34c9c9a7392ce2aff9dc4431c1a 100644 (file)
--- a/gutf8.c
+++ b/gutf8.c
@@ -487,6 +487,41 @@ g_utf8_to_ucs4 (const char *str, int len)
   return result;
 }
 
+/**
+ * g_ucs4_to_utf8:
+ * @str: a UCS-4 encoded string
+ * @len: the length of @
+ * 
+ * Convert a string from a 32-bit fixed width representation as UCS-4.
+ * to UTF-8.
+ * 
+ * Return value: a pointer to a newly allocated UTF-8 string.
+ *               This value must be freed with g_free()
+ **/
+gchar *
+g_ucs4_to_utf8 (const gunichar *str, int len)
+{
+  gint result_length;
+  gchar *result, *p;
+  gint i;
+
+  result_length = 0;
+  for (i = 0; i < len ; i++)
+    result_length += g_unichar_to_utf8 (str[i], NULL);
+
+  result_length++;
+
+  result = g_malloc (result_length + 1);
+  p = result;
+
+  for (i = 0; i < len ; i++)
+    p += g_unichar_to_utf8 (str[i], p);
+  
+  *p = '\0';
+
+  return result;
+}
+
 /**
  * g_utf8_validate:
  * @str: a pointer to character data