| 1 | @node Working with Multilingual Text |
| 2 | @chapter Working with Multilingual Text |
| 3 | |
| 4 | @node Guile Character Properties, Exchanging Text With The Outside World, Multibyte String Functions, Functions for Operating on Multibyte Text |
| 5 | @section Guile Character Properties |
| 6 | |
| 7 | These functions give information about the nature of a given Guile |
| 8 | character. These are defined for any @code{scm_mb_char_t} value. |
| 9 | |
| 10 | @deftypefn {Libguile Function} int scm_mb_isalnum (scm_mb_char_t @var{c}) |
| 11 | Return non-zero iff @var{c} is an alphabetic or numeric character. |
| 12 | @end deftypefn |
| 13 | |
| 14 | @deftypefn {Libguile Function} int scm_mb_is_alpha (scm_mb_char_t @var{c}) |
| 15 | Return non-zero iff @var{c} is an alphabetic character. |
| 16 | @end deftypefn |
| 17 | |
| 18 | @deftypefn {Libguile Function} int scm_mb_iscntrl (scm_mb_char_t @var{c}) |
| 19 | Return non-zero iff @var{c} is a control character. |
| 20 | @end deftypefn |
| 21 | |
| 22 | @deftypefn {Libguile Function} int scm_mb_isdigit (scm_mb_char_t @var{c}) |
| 23 | Return non-zero iff @var{c} is a digit. |
| 24 | @end deftypefn |
| 25 | |
| 26 | @deftypefn {Libguile Function} int scm_mb_isgraph (scm_mb_char_t @var{c}) |
| 27 | Return non-zero iff @var{c} is a visible character. |
| 28 | @end deftypefn |
| 29 | |
| 30 | @deftypefn {Libguile Function} int scm_mb_isupper (scm_mb_char_t @var{c}) |
| 31 | Return non-zero iff @var{c} is an upper-case character. |
| 32 | @end deftypefn |
| 33 | |
| 34 | @deftypefn {Libguile Function} int scm_mb_islower (scm_mb_char_t @var{c}) |
| 35 | Return non-zero iff @var{c} is a lower-case character. |
| 36 | @end deftypefn |
| 37 | |
| 38 | @deftypefn {Libguile Function} int scm_mb_istitle (scm_mb_char_t @var{c}) |
| 39 | Return non-zero iff @var{c} is a title-case character. See the Unicode |
| 40 | standard for an explanation of title case. |
| 41 | @end deftypefn |
| 42 | |
| 43 | @deftypefn {Libguile Function} int scm_mb_isprint (scm_mb_char_t @var{c}) |
| 44 | Return non-zero iff @var{c} is a printable character. |
| 45 | @end deftypefn |
| 46 | |
| 47 | @deftypefn {Libguile Function} int scm_mb_ispunct (scm_mb_char_t @var{c}) |
| 48 | Return non-zero iff @var{c} is a punctuation character. |
| 49 | @end deftypefn |
| 50 | |
| 51 | @deftypefn {Libguile Function} int scm_mb_isspace (scm_mb_char_t @var{c}) |
| 52 | Return non-zero iff @var{c} is a whitespace character. |
| 53 | @end deftypefn |
| 54 | |
| 55 | @deftypefn {Libguile Function} int scm_mb_isxdigit (scm_mb_char_t @var{c}) |
| 56 | Return non-zero iff @var{c} is a hexadecimal digit. |
| 57 | @end deftypefn |
| 58 | |
| 59 | @deftypefn {Libguile Function} int scm_mb_isdefined (scm_mb_char_t @var{c}) |
| 60 | Return non-zero iff @var{c} is a valid character. |
| 61 | @end deftypefn |
| 62 | |
| 63 | @deftypefn {Libguile Function} scm_mb_char_t scm_mb_char_toupper (scm_mb_char_t @var{c}) |
| 64 | @deftypefnx {Libguile Function} scm_mb_char_t scm_mb_char_tolower (scm_mb_char_t @var{c}) |
| 65 | @deftypefnx {Libguile Function} scm_mb_char_t scm_mb_char_totitle (scm_mb_char_t @var{c}) |
| 66 | Convert @var{c} to upper, lower, or title case. If @var{c} has no |
| 67 | equivalent in the requested case, or is already in that case, return it |
| 68 | unchanged. |
| 69 | @end deftypefn |
| 70 | |
| 71 | @deftypefn {Libguile Function} in scm_mb_digit_value (scm_mb_char_t @var{c}) |
| 72 | If @var{c} is a hexadecimal digit (according to |
| 73 | @code{scm_mb_isxdigit}), then return its numeric value. Otherwise |
| 74 | return -1. |
| 75 | @end deftypefn |
| 76 | |
| 77 | @deftypefn {Libguile Function} in scm_mb_digit_value (scm_mb_char_t @var{c}) |
| 78 | If @var{c} is a digit (according to @code{scm_mb_isdigit}), then |
| 79 | return its numeric value. Otherwise return -1. |
| 80 | @end deftypefn |
| 81 | |
| 82 | |
| 83 | @node Multibyte Character Tables, Multibyte Character Categories, Exchanging Text With The Outside World, Functions for Operating on Multibyte Text |
| 84 | @section Multibyte Character Tables |
| 85 | |
| 86 | A @dfn{character table} is a table mapping @code{scm_mb_char_t} values |
| 87 | onto Guile objects. Guile provides functions for creating character |
| 88 | tables, setting entries, and looking up characters. Character tables |
| 89 | are Guile objects, so they are managed by Guile's garbage collector. |
| 90 | |
| 91 | A character table can have a ``parent'' table, from which it inherits |
| 92 | values for characters. If a character table @var{child}, with a parent |
| 93 | table @var{parent} maps some character @var{c} to the value |
| 94 | @code{SCM_UNDEFINED}, then @code{scm_c_char_table_ref (@var{child}, |
| 95 | @var{c})} will look up @var{c} in @var{parent}, and return the value it |
| 96 | finds there. |
| 97 | |
| 98 | This section describes only the C API for working with character tables. |
| 99 | For the Scheme-level API, see @ref{some other section}. |
| 100 | |
| 101 | @deftypefn {Libguile Function} scm_make_char_table (SCM @var{init}, SCM @var{parent}) |
| 102 | Return a new character table object which maps every character to |
| 103 | @var{init}. If @var{parent} is a character table, then @var{parent} is |
| 104 | the new table's parent. If @var{parent} table is @code{SCM_UNDEFINED}, |
| 105 | then the new table has no parent. Otherwise, signal a type error. |
| 106 | @end deffn |
| 107 | |
| 108 | @deftypefn {Libguile Function} SCM scm_c_char_table_ref (SCM @var{table}, scm_mb_char_t @var{c}) |
| 109 | Look up the character @var{c} in the character table @var{table}, and |
| 110 | return the value found there. If @var{table} maps @var{c} to |
| 111 | @code{SCM_UNDEFINED}, and @var{table} has a parent, then look up @var{c} |
| 112 | in the parent. |
| 113 | |
| 114 | If @var{table} is not a character table, signal an error. |
| 115 | @end deftypefn |
| 116 | |
| 117 | @deftypefn {Libguile Function} SCM scm_c_char_table_set_x (SCM @var{table}, scm_mb_char_t @var{c}, SCM @var{value}) |
| 118 | Set @var{table}'s value for the character @var{c} to @var{value}. |
| 119 | If @var{value} is @code{SCM_UNDEFINED}, then @var{table}'s parent's |
| 120 | value will show through for @var{c}. |
| 121 | |
| 122 | If @var{table} is not a character table, signal an error. |
| 123 | |
| 124 | This function changes only @var{table} itself, never @var{table}'s |
| 125 | parent. |
| 126 | @end deftypefn |
| 127 | |
| 128 | [[this is all wrong. what about default values?]] |
| 129 | |
| 130 | |
| 131 | |
| 132 | |
| 133 | |
| 134 | @node Multibyte Character Categories, , Multibyte Character Tables, Functions for Operating on Multibyte Text |
| 135 | @section Multibyte Character Categories |
| 136 | |
| 137 | [[This will describe an ADT representing subsets of the Guile character |
| 138 | set.]] |
| 139 | |
| 140 | |
| 141 | |
| 142 | |
| 143 | @node Exchanging Guile Text With the Outside World |
| 144 | @subsection Exchanging Guile Text With the Outside World |
| 145 | |
| 146 | [[Scheme-level functions for converting between encodings]] |