+2024-02-12 Bruno Haible <bruno@clisp.org>
+
+ Implement a new property, added by Unicode 9.0.0.
+ * lib/gen-uni-tables.c (is_property_prepended_concatenation_mark): New
+ function.
+ (output_properties): Output also the property
+ prepended_concatenation_mark.
+ * lib/unictype.in.h (UC_PROPERTY_PREPENDED_CONCATENATION_MARK,
+ uc_is_property_prepended_concatenation_mark): New declarations.
+ * m4/unictype_h.m4 (gl_UNICTYPE_H_REQUIRE_DEFAULTS): Initialize
+ GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK.
+ * modules/unictype/base (Makefile.am): Substitute
+ GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK.
+ * lib/unictype/pr_prepended_concatenation_mark.c: New file.
+ * lib/unictype/pr_prepended_concatenation_mark.h: New generated file.
+ * modules/unictype/property-prepended-concatenation-mark: New file.
+ * tests/unictype/test-pr_prepended_concatenation_mark.c: New generated
+ file.
+ * modules/unictype/property-prepended-concatenation-mark-tests: New
+ file.
+ * lib/unictype/pr_byname.gperf: Add prepended_concatenation_mark.
+ * lib/unictype/pr_byname.c
+ (UC_PROPERTY_INDEX_PREPENDED_CONCATENATION_MARK): New enum item.
+ (uc_property_byname): Handle it.
+ * modules/unictype/property-byname (Depends-on): Add
+ unictype/property-prepended-concatenation-mark.
+ * modules/unictype/property-all (Depends-on): Likewise.
+ * MODULES.html.sh (func_all_modules): Add
+ unictype/property-prepended-concatenation-mark.
+
2024-02-12 Bruno Haible <bruno@clisp.org>
posixtm tests: Fix reference to undefined module (regr. 2024-02-09).
func_module unictype/property-paragraph-separator
func_module unictype/property-pattern-syntax
func_module unictype/property-pattern-white-space
+ func_module unictype/property-prepended-concatenation-mark
func_module unictype/property-private-use
func_module unictype/property-punctuation
func_module unictype/property-quotation-mark
PROP_WHITE_SPACE,
PROP_BIDI_CONTROL,
PROP_JOIN_CONTROL,
+ PROP_PREPENDED_CONCATENATION_MARK,
PROP_DASH,
PROP_HYPHEN,
PROP_QUOTATION_MARK,
PROP_VARIATION_SELECTOR,
PROP_PATTERN_WHITE_SPACE,
PROP_PATTERN_SYNTAX,
- PROP_PREPENDED_CONCATENATION_MARK,
PROP_REGIONAL_INDICATOR,
/* DerivedCoreProperties.txt */
PROP_MATH,
PROP ("White_Space", PROP_WHITE_SPACE)
PROP ("Bidi_Control", PROP_BIDI_CONTROL)
PROP ("Join_Control", PROP_JOIN_CONTROL)
+ PROP ("Prepended_Concatenation_Mark", PROP_PREPENDED_CONCATENATION_MARK)
PROP ("Dash", PROP_DASH)
PROP ("Hyphen", PROP_HYPHEN)
PROP ("Quotation_Mark", PROP_QUOTATION_MARK)
PROP ("Variation_Selector", PROP_VARIATION_SELECTOR)
PROP ("Pattern_White_Space", PROP_PATTERN_WHITE_SPACE)
PROP ("Pattern_Syntax", PROP_PATTERN_SYNTAX)
- PROP ("Prepended_Concatenation_Mark", PROP_PREPENDED_CONCATENATION_MARK)
PROP ("Regional_Indicator", PROP_REGIONAL_INDICATOR)
/* DerivedCoreProperties.txt */
PROP ("Math", PROP_MATH)
&& ch != 0xFEFF);
}
+/* See PropList.txt, UCD.html. */
+static bool
+is_property_prepended_concatenation_mark (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_PREPENDED_CONCATENATION_MARK)) != 0);
+}
+
/* See PropList.txt, UCD.html. */
static bool
is_property_dash (unsigned int ch)
PROPERTY(non_break)
PROPERTY(iso_control)
PROPERTY(format_control)
+ PROPERTY(prepended_concatenation_mark)
PROPERTY(dash)
PROPERTY(hyphen)
PROPERTY(punctuation)
extern @GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_NON_BREAK;
extern @GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_ISO_CONTROL;
extern @GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_FORMAT_CONTROL;
+extern @GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_PREPENDED_CONCATENATION_MARK;
extern @GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_DASH;
extern @GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_HYPHEN;
extern @GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE@ const uc_property_t UC_PROPERTY_PUNCTUATION;
_UC_ATTRIBUTE_CONST;
extern bool uc_is_property_format_control (ucs4_t uc)
_UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_prepended_concatenation_mark (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
extern bool uc_is_property_dash (ucs4_t uc)
_UC_ATTRIBUTE_CONST;
extern bool uc_is_property_hyphen (ucs4_t uc)
UC_PROPERTY_INDEX_NON_BREAK,
UC_PROPERTY_INDEX_ISO_CONTROL,
UC_PROPERTY_INDEX_FORMAT_CONTROL,
+ UC_PROPERTY_INDEX_PREPENDED_CONCATENATION_MARK,
UC_PROPERTY_INDEX_DASH,
UC_PROPERTY_INDEX_HYPHEN,
UC_PROPERTY_INDEX_PUNCTUATION,
return UC_PROPERTY_ISO_CONTROL;
case UC_PROPERTY_INDEX_FORMAT_CONTROL:
return UC_PROPERTY_FORMAT_CONTROL;
+ case UC_PROPERTY_INDEX_PREPENDED_CONCATENATION_MARK:
+ return UC_PROPERTY_PREPENDED_CONCATENATION_MARK;
case UC_PROPERTY_INDEX_DASH:
return UC_PROPERTY_DASH;
case UC_PROPERTY_INDEX_HYPHEN:
isocontrol, UC_PROPERTY_INDEX_ISO_CONTROL
format_control, UC_PROPERTY_INDEX_FORMAT_CONTROL
formatcontrol, UC_PROPERTY_INDEX_FORMAT_CONTROL
+prepended_concatenation_mark, UC_PROPERTY_INDEX_PREPENDED_CONCATENATION_MARK
+prependedconcatenationmark, UC_PROPERTY_INDEX_PREPENDED_CONCATENATION_MARK
dash, UC_PROPERTY_INDEX_DASH
hyphen, UC_PROPERTY_INDEX_HYPHEN
punctuation, UC_PROPERTY_INDEX_PUNCTUATION
--- /dev/null
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation, either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file 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 and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_prepended_concatenation_mark table. */
+#include "pr_prepended_concatenation_mark.h"
+
+bool
+uc_is_property_prepended_concatenation_mark (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_prepended_concatenation_mark, uc);
+}
+
+const uc_property_t UC_PROPERTY_PREPENDED_CONCATENATION_MARK =
+ { &uc_is_property_prepended_concatenation_mark };
--- /dev/null
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
+
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation, either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file 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 and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ unsigned int level3[3 << 4];
+ }
+u_property_prepended_concatenation_mark =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x0000003FU, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x20000000U, 0x00000000U,
+ 0x00008000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00030000U, 0x00000000U, 0x00000000U, 0x00000004U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x20000000U, 0x00002000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U
+ }
+};
-# unictype_h.m4 serial 2
+# unictype_h.m4 serial 3
dnl Copyright (C) 2023-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE'])
-e 's/@''GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE)/g' \
-e 's/@''GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE)/g' \
-e 's/@''GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE)/g' \
+ -e 's/@''GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE)/g' \
-e 's/@''GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE)/g' \
-e 's/@''GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE)/g' \
-e 's/@''GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE''@/$(GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE)/g' \
unictype/property-paragraph-separator
unictype/property-pattern-syntax
unictype/property-pattern-white-space
+unictype/property-prepended-concatenation-mark
unictype/property-private-use
unictype/property-punctuation
unictype/property-quotation-mark
unictype/property-paragraph-separator
unictype/property-pattern-syntax
unictype/property-pattern-white-space
+unictype/property-prepended-concatenation-mark
unictype/property-private-use
unictype/property-punctuation
unictype/property-quotation-mark
--- /dev/null
+Description:
+Test whether a Unicode character is "prepended concatenation mark".
+
+Files:
+lib/unictype/pr_prepended_concatenation_mark.c
+lib/unictype/pr_prepended_concatenation_mark.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_UNICTYPE_H_REQUIRE_DEFAULTS
+gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-prepended-concatenation-mark])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK
+lib_SOURCES += unictype/pr_prepended_concatenation_mark.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
--- /dev/null
+Files:
+tests/unictype/test-pr_prepended_concatenation_mark.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_prepended_concatenation_mark
+check_PROGRAMS += test-pr_prepended_concatenation_mark
+test_pr_prepended_concatenation_mark_SOURCES = unictype/test-pr_prepended_concatenation_mark.c
+test_pr_prepended_concatenation_mark_LDADD = $(LDADD) $(LIBUNISTRING)
--- /dev/null
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ This file 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0600, 0x0605 },
+ { 0x06DD, 0x06DD },
+ { 0x070F, 0x070F },
+ { 0x0890, 0x0891 },
+ { 0x08E2, 0x08E2 },
+ { 0x110BD, 0x110BD },
+ { 0x110CD, 0x110CD }
+
+#define PREDICATE(c) uc_is_property_prepended_concatenation_mark (c)
+#include "test-predicate-part2.h"