Mercurial > hg > octave-nkf > gnulib-hg
annotate lib/unilbrk.in.h @ 17848:ab58d4870664
version-etc: new year
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date.
* all files: Run 'make update-copyright'.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 01 Jan 2015 01:38:23 +0000 |
parents | 344018b6e5d7 |
children |
rev | line source |
---|---|
13354
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Line breaking of Unicode strings. |
17848 | 2 Copyright (C) 2001-2003, 2005-2015 Free Software Foundation, Inc. |
13354
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 Written by Bruno Haible <bruno@clisp.org>, 2001. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
4 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 This program is free software: you can redistribute it and/or modify it |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
6 under the terms of the GNU Lesser General Public License as published |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
7 by the Free Software Foundation; either version 3 of the License, or |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 (at your option) any later version. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 This program is distributed in the hope that it will be useful, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public License |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 #ifndef _UNILBRK_H |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
19 #define _UNILBRK_H |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
20 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
21 /* Get size_t. */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
22 #include <stddef.h> |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
23 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
24 #include "unitypes.h" |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
25 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
26 /* Get locale_charset() declaration. */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
27 #include "localcharset.h" |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
28 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
29 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
30 #ifdef __cplusplus |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
31 extern "C" { |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
32 #endif |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
33 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
34 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
35 /* These functions are locale dependent. The encoding argument identifies |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
36 the encoding (e.g. "ISO-8859-2" for Polish). */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
38 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 /* Line breaking. */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 enum |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 { |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 UC_BREAK_UNDEFINED, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 UC_BREAK_PROHIBITED, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
45 UC_BREAK_POSSIBLE, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 UC_BREAK_MANDATORY, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 UC_BREAK_HYPHENATION |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 }; |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 /* Determine the line break points in S, and store the result at p[0..n-1]. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
51 p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
52 p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
53 s[i-1] and s[i]. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
54 p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
55 inserted between s[i-1] and s[i]. But beware of language dependent |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
56 hyphenation rules. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
57 p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
58 */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
59 extern void |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
60 u8_possible_linebreaks (const uint8_t *s, size_t n, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
61 const char *encoding, char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
62 extern void |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
63 u16_possible_linebreaks (const uint16_t *s, size_t n, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
64 const char *encoding, char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
65 extern void |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
66 u32_possible_linebreaks (const uint32_t *s, size_t n, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
67 const char *encoding, char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
68 extern void |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
69 ulc_possible_linebreaks (const char *s, size_t n, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
70 const char *encoding, char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
71 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
72 /* Choose the best line breaks, assuming the uc_width function. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
73 The string is s[0..n-1]. The maximum number of columns per line is given |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
74 as WIDTH. The starting column of the string is given as START_COLUMN. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
75 If the algorithm shall keep room after the last piece, they can be given |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
76 as AT_END_COLUMNS. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
77 o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
78 precedence over p[i] as returned by the *_possible_linebreaks function. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
79 The given ENCODING is used for disambiguating widths in uc_width. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 Return the column after the end of the string, and store the result at |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 p[0..n-1]. |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 */ |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 extern int |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 u8_width_linebreaks (const uint8_t *s, size_t n, int width, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
85 int start_column, int at_end_columns, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 const char *o, const char *encoding, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 extern int |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 u16_width_linebreaks (const uint16_t *s, size_t n, int width, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 int start_column, int at_end_columns, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 const char *o, const char *encoding, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
92 char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
93 extern int |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
94 u32_width_linebreaks (const uint32_t *s, size_t n, int width, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 int start_column, int at_end_columns, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
96 const char *o, const char *encoding, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
97 char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
98 extern int |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
99 ulc_width_linebreaks (const char *s, size_t n, int width, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 int start_column, int at_end_columns, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
101 const char *o, const char *encoding, |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 char *p); |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 #ifdef __cplusplus |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 } |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 #endif |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 |
86634e33e086
New module 'libunistring-optional'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
110 #endif /* _UNILBRK_H */ |