When upgrading to Unicode 9.0.0, it was forgotten to add a new character
property, that was introduced in Unicode 9.0.0. This patch adds it now.


2024-02-12  Bruno Haible  <br...@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.

>From d1e9030634d4d3077a743301bbbd31efb26bfe3f Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Mon, 12 Feb 2024 18:18:43 +0100
Subject: [PATCH] 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.
---
 ChangeLog                                     |  30 ++
 MODULES.html.sh                               |   1 +
 lib/gen-uni-tables.c                          |  12 +-
 lib/unictype.in.h                             |   3 +
 lib/unictype/pr_byname.c                      |   3 +
 lib/unictype/pr_byname.gperf                  |   2 +
 .../pr_prepended_concatenation_mark.c         |  43 +++
 .../pr_prepended_concatenation_mark.h         | 319 ++++++++++++++++++
 m4/unictype_h.m4                              |   3 +-
 modules/unictype/base                         |   1 +
 modules/unictype/property-all                 |   1 +
 modules/unictype/property-byname              |   1 +
 .../property-prepended-concatenation-mark     |  29 ++
 ...roperty-prepended-concatenation-mark-tests |  15 +
 .../test-pr_prepended_concatenation_mark.c    |  29 ++
 15 files changed, 489 insertions(+), 3 deletions(-)
 create mode 100644 lib/unictype/pr_prepended_concatenation_mark.c
 create mode 100644 lib/unictype/pr_prepended_concatenation_mark.h
 create mode 100644 modules/unictype/property-prepended-concatenation-mark
 create mode 100644 modules/unictype/property-prepended-concatenation-mark-tests
 create mode 100644 tests/unictype/test-pr_prepended_concatenation_mark.c

diff --git a/ChangeLog b/ChangeLog
index 3492c59f49..019ccf0c7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2024-02-12  Bruno Haible  <br...@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  <br...@clisp.org>
 
 	posixtm tests: Fix reference to undefined module (regr. 2024-02-09).
diff --git a/MODULES.html.sh b/MODULES.html.sh
index 76a6291303..442be7f690 100755
--- a/MODULES.html.sh
+++ b/MODULES.html.sh
@@ -3450,6 +3450,7 @@ func_all_modules ()
   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
diff --git a/lib/gen-uni-tables.c b/lib/gen-uni-tables.c
index 11b1a46a0f..bc228105b4 100644
--- a/lib/gen-uni-tables.c
+++ b/lib/gen-uni-tables.c
@@ -2692,6 +2692,7 @@ enum
   PROP_WHITE_SPACE,
   PROP_BIDI_CONTROL,
   PROP_JOIN_CONTROL,
+  PROP_PREPENDED_CONCATENATION_MARK,
   PROP_DASH,
   PROP_HYPHEN,
   PROP_QUOTATION_MARK,
@@ -2724,7 +2725,6 @@ enum
   PROP_VARIATION_SELECTOR,
   PROP_PATTERN_WHITE_SPACE,
   PROP_PATTERN_SYNTAX,
-  PROP_PREPENDED_CONCATENATION_MARK,
   PROP_REGIONAL_INDICATOR,
   /* DerivedCoreProperties.txt */
   PROP_MATH,
@@ -2819,6 +2819,7 @@ fill_properties (const char *proplist_filename)
       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)
@@ -2851,7 +2852,6 @@ fill_properties (const char *proplist_filename)
       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)
@@ -3619,6 +3619,13 @@ is_property_format_control (unsigned int ch)
           && 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)
@@ -3932,6 +3939,7 @@ output_properties (const char *version)
   PROPERTY(non_break)
   PROPERTY(iso_control)
   PROPERTY(format_control)
+  PROPERTY(prepended_concatenation_mark)
   PROPERTY(dash)
   PROPERTY(hyphen)
   PROPERTY(punctuation)
diff --git a/lib/unictype.in.h b/lib/unictype.in.h
index ebb883c635..fdd2cd1cec 100644
--- a/lib/unictype.in.h
+++ b/lib/unictype.in.h
@@ -691,6 +691,7 @@ extern @GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE@ const uc_property_t UC_PROP
 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;
@@ -873,6 +874,8 @@ extern bool uc_is_property_iso_control (ucs4_t uc)
        _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)
diff --git a/lib/unictype/pr_byname.c b/lib/unictype/pr_byname.c
index 825992d345..802e25f8e2 100644
--- a/lib/unictype/pr_byname.c
+++ b/lib/unictype/pr_byname.c
@@ -113,6 +113,7 @@ enum
   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,
@@ -308,6 +309,8 @@ uc_property_byname (const char *property_name)
         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:
diff --git a/lib/unictype/pr_byname.gperf b/lib/unictype/pr_byname.gperf
index dfeab2e469..8a654de129 100644
--- a/lib/unictype/pr_byname.gperf
+++ b/lib/unictype/pr_byname.gperf
@@ -213,6 +213,8 @@ iso_control, UC_PROPERTY_INDEX_ISO_CONTROL
 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
diff --git a/lib/unictype/pr_prepended_concatenation_mark.c b/lib/unictype/pr_prepended_concatenation_mark.c
new file mode 100644
index 0000000000..8e8ea7a2eb
--- /dev/null
+++ b/lib/unictype/pr_prepended_concatenation_mark.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
+   Written by Bruno Haible <br...@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 };
diff --git a/lib/unictype/pr_prepended_concatenation_mark.h b/lib/unictype/pr_prepended_concatenation_mark.h
new file mode 100644
index 0000000000..49a73f1f15
--- /dev/null
+++ b/lib/unictype/pr_prepended_concatenation_mark.h
@@ -0,0 +1,319 @@
+/* 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
+  }
+};
diff --git a/m4/unictype_h.m4 b/m4/unictype_h.m4
index b6bb128dcc..68b864bd9f 100644
--- a/m4/unictype_h.m4
+++ b/m4/unictype_h.m4
@@ -1,4 +1,4 @@
-# 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,
@@ -143,6 +143,7 @@ AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS]
     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'])
diff --git a/modules/unictype/base b/modules/unictype/base
index 13323fd9f3..4fe6a42ddc 100644
--- a/modules/unictype/base
+++ b/modules/unictype/base
@@ -143,6 +143,7 @@ unictype.h: unictype.in.h
 	      -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' \
diff --git a/modules/unictype/property-all b/modules/unictype/property-all
index 9d1d9d7e19..a9bc3cf6f7 100644
--- a/modules/unictype/property-all
+++ b/modules/unictype/property-all
@@ -83,6 +83,7 @@ unictype/property-paired-punctuation
 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
diff --git a/modules/unictype/property-byname b/modules/unictype/property-byname
index 23d82e0451..418cd1b730 100644
--- a/modules/unictype/property-byname
+++ b/modules/unictype/property-byname
@@ -79,6 +79,7 @@ unictype/property-paired-punctuation
 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
diff --git a/modules/unictype/property-prepended-concatenation-mark b/modules/unictype/property-prepended-concatenation-mark
new file mode 100644
index 0000000000..89644f9d73
--- /dev/null
+++ b/modules/unictype/property-prepended-concatenation-mark
@@ -0,0 +1,29 @@
+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
diff --git a/modules/unictype/property-prepended-concatenation-mark-tests b/modules/unictype/property-prepended-concatenation-mark-tests
new file mode 100644
index 0000000000..bfbf6df0ef
--- /dev/null
+++ b/modules/unictype/property-prepended-concatenation-mark-tests
@@ -0,0 +1,15 @@
+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)
diff --git a/tests/unictype/test-pr_prepended_concatenation_mark.c b/tests/unictype/test-pr_prepended_concatenation_mark.c
new file mode 100644
index 0000000000..5a86b2c50a
--- /dev/null
+++ b/tests/unictype/test-pr_prepended_concatenation_mark.c
@@ -0,0 +1,29 @@
+/* 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"
-- 
2.34.1

Reply via email to