1 /* Normalization of Unicode strings. 2 Copyright (C) 2009-2021 Free Software Foundation, Inc. 3 Written by Bruno Haible <bruno@clisp.org>, 2009. 4 5 This file is free software: you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as 7 published by the Free Software Foundation; either version 2.1 of the 8 License, or (at your option) any later version. 9 10 This file is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 #include "unitypes.h" 19 20 /* Complete definition of normalization form descriptor. */ 21 struct unicode_normalization_form 22 { 23 /* Bit mask containing meta-information. 24 This must be the first field. */ 25 unsigned int description; 26 #define NF_IS_COMPAT_DECOMPOSING (1 << 0) 27 #define NF_IS_COMPOSING (1 << 1) 28 /* Function that decomposes a Unicode character. */ 29 int (*decomposer) (ucs4_t uc, ucs4_t *decomposition); 30 /* Function that combines two Unicode characters, a starter and another 31 character. */ 32 ucs4_t (*composer) (ucs4_t uc1, ucs4_t uc2); 33 /* Decomposing variant. */ 34 const struct unicode_normalization_form *decomposing_variant; 35 };