New module 'uniwbrk/base'.
authorBruno Haible <bruno@clisp.org>
Sun, 8 Feb 2009 19:42:32 +0000 (20:42 +0100)
committerBruno Haible <bruno@clisp.org>
Sun, 8 Feb 2009 19:42:32 +0000 (20:42 +0100)
ChangeLog
lib/uniwbrk.h [new file with mode: 0644]
modules/uniwbrk/base [new file with mode: 0644]

index 72043de5f89ce12a42e42771e7a83bae46cac212..2ddccf05a325d7726f0d3fbf4b40cb4485bfe781 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-08  Bruno Haible  <bruno@clisp.org>
+
+       New module 'uniwbrk/base'.
+       * modules/uniwbrk/base: New file.
+       * lib/uniwbrk.h: New file.
+
 2009-02-08  Bruno Haible  <bruno@clisp.org>
 
        Update to Unicode 5.1.0.
diff --git a/lib/uniwbrk.h b/lib/uniwbrk.h
new file mode 100644 (file)
index 0000000..c6ad971
--- /dev/null
@@ -0,0 +1,83 @@
+/* Word breaks in Unicode strings.
+   Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU Lesser General Public License as published
+   by the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _UNIWBRK_H
+#define _UNIWBRK_H
+
+/* Get size_t.  */
+#include <stddef.h>
+
+#include "unitypes.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ========================================================================= */
+
+/* Property defined in Unicode Standard Annex #29, section "Word Boundaries"
+   <http://www.unicode.org/reports/tr29/#Word_Boundaries>  */
+
+/* Possible values of the Word_Break property.
+   This enumeration may be extended in the future.  */
+enum
+{
+  WBP_OTHER        = 0,
+  WBP_CR           = 11,
+  WBP_LF           = 12,
+  WBP_NEWLINE      = 10,
+  WBP_EXTEND       = 8,
+  WBP_FORMAT       = 9,
+  WBP_KATAKANA     = 1,
+  WBP_ALETTER      = 2,
+  WBP_MIDNUMLET    = 3,
+  WBP_MIDLETTER    = 4,
+  WBP_MIDNUM       = 5,
+  WBP_NUMERIC      = 6,
+  WBP_EXTENDNUMLET = 7
+};
+
+/* Return the Word_Break property of a Unicode character.  */
+extern int
+       uc_wordbreak_property (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Word breaks.  */
+
+/* Determine the word break points in S, and store the result at p[0..n-1].
+   p[i] = 1 means that there is a word boundary between s[i-1] and s[i].
+   p[i] = 0 means that s[i-1] and s[i] must not be separated.
+ */
+extern void
+       u8_wordbreaks (const uint8_t *s, size_t n, char *p);
+extern void
+       u16_wordbreaks (const uint16_t *s, size_t n, char *p);
+extern void
+       u32_wordbreaks (const uint32_t *s, size_t n, char *p);
+extern void
+       ulc_wordbreaks (const char *s, size_t n, char *p);
+
+/* ========================================================================= */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _UNIWBRK_H */
diff --git a/modules/uniwbrk/base b/modules/uniwbrk/base
new file mode 100644 (file)
index 0000000..66afadb
--- /dev/null
@@ -0,0 +1,22 @@
+Description:
+Base layer for word breaks.
+
+Files:
+lib/uniwbrk.h
+
+Depends-on:
+unitypes
+
+configure.ac:
+
+Makefile.am:
+
+Include:
+"uniwbrk.h"
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
+