Branch
Hash :
0a319fd5
Author :
Date :
2025-05-19T02:01:32
unigbrk/u*-grapheme-prev: Support Indic, Emojis, regional indicators. Reported by Kang-Che Sung <explorer09@gmail.com> in <https://lists.gnu.org/archive/html/bug-libunistring/2025-03/msg00000.html>. * lib/unigbrk/u-grapheme-prev.h: New file, based on lib/unigbrk/u-grapheme-breaks.h. * lib/unigbrk/u8-grapheme-prev.c: Include unictype.h and u-grapheme-prev.h. (u8_grapheme_prev): Remove function. * lib/unigbrk/u16-grapheme-prev.c: Include unictype.h and u-grapheme-prev.h. (u16_grapheme_prev): Remove function. * lib/unigbrk/u32-grapheme-prev.c: Include unictype.h and u-grapheme-prev.h. (u32_grapheme_prev): Remove function. * modules/unigbrk/u8-grapheme-prev (Files): Add lib/unigbrk/u-grapheme-prev.h. (Depends-on): Remove unigbrk/uc-is-grapheme-break. Add unigbrk/base, unigbrk/uc-gbrk-prop, unictype/incb-of, unictype/property-extended-pictographic, bool. (configure.ac): Bump required libunistring version. * modules/unigbrk/u16-grapheme-prev (Files): Add lib/unigbrk/u-grapheme-prev.h. (Depends-on): Remove unigbrk/uc-is-grapheme-break. Add unigbrk/base, unigbrk/uc-gbrk-prop, unictype/incb-of, unictype/property-extended-pictographic, bool. (configure.ac): Bump required libunistring version. * modules/unigbrk/u32-grapheme-prev (Files): Add lib/unigbrk/u-grapheme-prev.h. (Depends-on): Remove unigbrk/uc-is-grapheme-break. Add unigbrk/base, unigbrk/uc-gbrk-prop, unictype/incb-of, unictype/property-extended-pictographic, bool. (configure.ac): Bump required libunistring version. * tests/unigbrk/test-u8-grapheme-prev.c (main): Add more test cases, from tests/unigbrk/test-u8-grapheme-breaks.c. * tests/unigbrk/test-u16-grapheme-prev.c (main): Add more test cases, from tests/unigbrk/test-u16-grapheme-breaks.c. * tests/unigbrk/test-u32-grapheme-prev.c (main): Add more test cases, from tests/unigbrk/test-u32-grapheme-breaks.c.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
/* Previous grapheme cluster function.
Copyright (C) 2010-2025 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/>. */
/* Written by Bruno Haible <bruno@clisp.org>, 2025. */
/* Don't use the const-improved function macros in this compilation unit. */
#define _LIBUNISTRING_NO_CONST_GENERICS
#include <config.h>
/* Specification. */
#include "unigbrk.h"
#include "unictype.h"
#include "unistr.h"
#define FUNC u16_grapheme_prev
#define UNIT uint16_t
#define U_PREV u16_prev
#include "u-grapheme-prev.h"