From a0c60a62d6598be7f5ed00b87ba958c4f1301140 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 3 Jan 2007 20:48:24 +0000 Subject: [PATCH] Add g_unichar_iszerowidth(). (#347645) 2007-01-03 Behdad Esfahbod * glib/glib.symbols: * glib/gunicode.h: * glib/guniprop.c: Add g_unichar_iszerowidth(). (#347645) svn path=/trunk/; revision=5202 --- ChangeLog | 6 +++ docs/reference/ChangeLog | 11 ++++++ docs/reference/glib/glib-sections.txt | 1 + docs/reference/glib/tmpl/glib-unused.sgml | 9 +++++ docs/reference/glib/tmpl/keyfile.sgml | 4 ++ docs/reference/glib/tmpl/macros_misc.sgml | 10 ----- docs/reference/glib/tmpl/messages.sgml | 10 +++++ docs/reference/glib/tmpl/unicode.sgml | 9 +++++ .../gobject/tmpl/enumerations_flags.sgml | 12 +----- docs/reference/gobject/tmpl/gtypemodule.sgml | 15 +++---- glib/glib.symbols | 1 + glib/gunicode.h | 1 + glib/guniprop.c | 39 +++++++++++++++++++ 13 files changed, 98 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index e93a45190..24e9384d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-01-03 Behdad Esfahbod + + * glib/glib.symbols: + * glib/gunicode.h: + * glib/guniprop.c: Add g_unichar_iszerowidth(). (#347645) + 2007-01-03 Behdad Esfahbod * glib/gutils.h: Fix bug in g_bit_nth_lsf (#371631) and use diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 58b52541e..baeeeea8e 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,14 @@ +2007-01-03 Behdad Esfahbod + + * glib/glib-sections.txt: Add g_unichar_iszerowidth. + + * glib/tmpl/glib-unused.sgml: + * glib/tmpl/keyfile.sgml: + * glib/tmpl/macros_misc.sgml: + * glib/tmpl/messages.sgml: + * glib/tmpl/unicode.sgml: + Template changes. + 2007-01-02 Matthias Clasen * glib/running.sgml: Remove C99ism from example. diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index 92d85c7d1..739507af5 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -2264,6 +2264,7 @@ g_unichar_istitle g_unichar_isdefined g_unichar_iswide g_unichar_iswide_cjk +g_unichar_iszerowidth g_unichar_toupper g_unichar_tolower g_unichar_totitle diff --git a/docs/reference/glib/tmpl/glib-unused.sgml b/docs/reference/glib/tmpl/glib-unused.sgml index b089e6686..de6993de5 100644 --- a/docs/reference/glib/tmpl/glib-unused.sgml +++ b/docs/reference/glib/tmpl/glib-unused.sgml @@ -203,6 +203,15 @@ error domains. + + +This macro is defined as 1 if the the compiler supports ELF visibility +attributes (currently only gcc). + + +Since: 2.6 + + diff --git a/docs/reference/glib/tmpl/keyfile.sgml b/docs/reference/glib/tmpl/keyfile.sgml index efd169690..7045dcdc3 100644 --- a/docs/reference/glib/tmpl/keyfile.sgml +++ b/docs/reference/glib/tmpl/keyfile.sgml @@ -504,6 +504,8 @@ Flags which influence the parsing. @key_file: @group_name: @key: +@list: +@length: @@ -515,6 +517,8 @@ Flags which influence the parsing. @group_name: @key: @locale: +@list: +@length: diff --git a/docs/reference/glib/tmpl/macros_misc.sgml b/docs/reference/glib/tmpl/macros_misc.sgml index 580aebc50..c8cd2930a 100644 --- a/docs/reference/glib/tmpl/macros_misc.sgml +++ b/docs/reference/glib/tmpl/macros_misc.sgml @@ -297,16 +297,6 @@ See the GNU C documentation for details. - - -This macro is defined as 1 if the the compiler supports ELF visibility -attributes (currently only gcc). - - -Since: 2.6 - - - Expands to the GNU C visibility(hidden) attribute if the diff --git a/docs/reference/glib/tmpl/messages.sgml b/docs/reference/glib/tmpl/messages.sgml index 35c85da7d..1beec0038 100644 --- a/docs/reference/glib/tmpl/messages.sgml +++ b/docs/reference/glib/tmpl/messages.sgml @@ -144,6 +144,8 @@ A convenience function/macro to log a normal message. @...: +@...: + @...: @@ -187,6 +189,8 @@ variable (see Running GLib Applications). @...: +@...: + @...: @@ -235,6 +239,8 @@ the %G_DEBUG environment variable (see @...: +@...: + @...: @@ -278,6 +284,8 @@ assertion failure. @...: +@...: + @...: @@ -316,6 +324,8 @@ A convenience function/macro to log a debug message. @...: +@...: + @...: @Since: 2.6 diff --git a/docs/reference/glib/tmpl/unicode.sgml b/docs/reference/glib/tmpl/unicode.sgml index ccae9129a..dde994382 100644 --- a/docs/reference/glib/tmpl/unicode.sgml +++ b/docs/reference/glib/tmpl/unicode.sgml @@ -201,6 +201,15 @@ will correctly interpret surrogate pairs.. @Returns: + + + + + +@c: +@Returns: + + diff --git a/docs/reference/gobject/tmpl/enumerations_flags.sgml b/docs/reference/gobject/tmpl/enumerations_flags.sgml index 1293d2fd8..2b72931f2 100644 --- a/docs/reference/gobject/tmpl/enumerations_flags.sgml +++ b/docs/reference/gobject/tmpl/enumerations_flags.sgml @@ -232,13 +232,11 @@ than to write one yourself using g_enum_register_static(). @name: A nul-terminated string used as the name of the new type. -@_static_values: -@Returns: The new type identifier. - @const_static_values: An array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0. GObject keeps a reference to the data, so it cannot be stack-allocated. +@Returns: The new type identifier. @@ -252,12 +250,10 @@ than to write one yourself using g_flags_register_static(). @name: A nul-terminated string used as the name of the new type. -@_static_values: -@Returns: The new type identifier. - @const_static_values: An array of #GFlagsValue structs for the possible flags values. The array is terminated by a struct with all members being 0. GObject keeps a reference to the data, so it cannot be stack-allocated. +@Returns: The new type identifier. @@ -286,8 +282,6 @@ my_enum_complete_type_info (GTypePlugin *plugin, @g_enum_type: the type identifier of the type being completed @info: the #GTypeInfo struct to be filled in -@_values: - @const_values: An array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0. @@ -302,8 +296,6 @@ g_enumeration_complete_type_info() above. @g_flags_type: the type identifier of the type being completed @info: the #GTypeInfo struct to be filled in -@_values: - @const_values: An array of #GFlagsValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0. diff --git a/docs/reference/gobject/tmpl/gtypemodule.sgml b/docs/reference/gobject/tmpl/gtypemodule.sgml index 550d2dde6..71ce8f1a0 100644 --- a/docs/reference/gobject/tmpl/gtypemodule.sgml +++ b/docs/reference/gobject/tmpl/gtypemodule.sgml @@ -164,13 +164,11 @@ not be unloaded. @module: a #GTypeModule @name: name for the type -@_static_values: -@Returns: the new or existing type ID -@Since: 2.6 - @const_static_values: an array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0. +@Returns: the new or existing type ID +@Since: 2.6 @@ -187,13 +185,11 @@ not be unloaded. @module: a #GTypeModule @name: name for the type -@_static_values: -@Returns: the new or existing type ID -@Since: 2.6 - @const_static_values: an array of #GFlagsValue structs for the possible flags values. The array is terminated by a struct with all members being 0. +@Returns: the new or existing type ID +@Since: 2.6 @@ -212,7 +208,6 @@ See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example. @t_n: The name of the new type, in lowercase, with words separated by '_'. @T_P: The #GType of the parent type. - @Since: 2.14 @@ -286,6 +281,6 @@ gtk_gadget_register_type (GTypeModule *type_module) @TYPE_PARENT: The #GType of the parent type. @flags: #GTypeFlags to pass to g_type_register_static() @CODE: Custom code that gets inserted in the *_get_type() function. - @Since: 2.14 + diff --git a/glib/glib.symbols b/glib/glib.symbols index bfad3e224..2649bd409 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -1256,6 +1256,7 @@ g_unichar_isupper G_GNUC_CONST g_unichar_iswide G_GNUC_CONST g_unichar_iswide_cjk G_GNUC_CONST g_unichar_isxdigit G_GNUC_CONST +g_unichar_iszerowidth G_GNUC_CONST g_unichar_tolower G_GNUC_CONST g_unichar_totitle G_GNUC_CONST g_unichar_toupper G_GNUC_CONST diff --git a/glib/gunicode.h b/glib/gunicode.h index b024a6a73..050045fb6 100644 --- a/glib/gunicode.h +++ b/glib/gunicode.h @@ -215,6 +215,7 @@ gboolean g_unichar_istitle (gunichar c) G_GNUC_CONST; gboolean g_unichar_isdefined (gunichar c) G_GNUC_CONST; gboolean g_unichar_iswide (gunichar c) G_GNUC_CONST; gboolean g_unichar_iswide_cjk(gunichar c) G_GNUC_CONST; +gboolean g_unichar_iszerowidth(gunichar c) G_GNUC_CONST; /* More functions. These convert between the three cases. * See the Unicode book to understand title case. */ diff --git a/glib/guniprop.c b/glib/guniprop.c index f2f64172a..2292e7604 100644 --- a/glib/guniprop.c +++ b/glib/guniprop.c @@ -85,6 +85,11 @@ OR (G_UNICODE_COMBINING_MARK, \ OR (G_UNICODE_ENCLOSING_MARK, 0)))) +#define ISZEROWIDTHTYPE(Type) IS ((Type), \ + OR (G_UNICODE_NON_SPACING_MARK, \ + OR (G_UNICODE_ENCLOSING_MARK, \ + OR (G_UNICODE_FORMAT, 0)))) + /** * g_unichar_isalnum: * @c: a Unicode character @@ -351,6 +356,40 @@ g_unichar_isdefined (gunichar c) return TYPE (c) != G_UNICODE_UNASSIGNED; } +/** + * g_unichar_iszerowidth: + * @c: a Unicode character + * + * Determines if a given character typically takes zero width when rendered. + * The return value is %TRUE for all non-spacing and enclosing marks + * (e.g., combining accents), format characters, zero-width + * space, but not U+00AD SOFT HYPHEN. + * + * A typical use of this function is with one of g_unichar_iswide() or + * g_unichar_iswide_cjk() to determine the number of cells a string occupies + * when displayed on a grid display (terminals). However, note that not all + * terminals support zero-width rendering of zero-width marks. + * + * Return value: %TRUE if the character has zero width + * + * Since: 2.14 + **/ +gboolean +g_unichar_iszerowidth (gunichar c) +{ + if (G_UNLIKELY (c == 0x00AD)) + return FALSE; + + if (G_UNLIKELY (ISZEROWIDTHTYPE (c))) + return TRUE; + + if (G_UNLIKELY ((c >= 0x1160 && c < 0x1200) || + c == 0x200B)) + return TRUE; + + return FALSE; +} + /** * g_unichar_iswide: * @c: a Unicode character