From 5f2b09982312c98863eb9a8dfe2c608b81f58259 Mon Sep 17 00:00:00 2001 From: "Manuel A. Fernandez Montecelo" Date: Thu, 26 May 2016 16:48:15 +0100 Subject: Imported Upstream version 0.9.6 --- lib/unictype/combiningclass_longname.c | 130 +++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 lib/unictype/combiningclass_longname.c (limited to 'lib/unictype/combiningclass_longname.c') diff --git a/lib/unictype/combiningclass_longname.c b/lib/unictype/combiningclass_longname.c new file mode 100644 index 0000000..5178512 --- /dev/null +++ b/lib/unictype/combiningclass_longname.c @@ -0,0 +1,130 @@ +/* Canonical combining classes of Unicode characters. + Copyright (C) 2002, 2006-2007, 2011-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2011. + + 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 . */ + +#include + +/* Specification. */ +#include "unictype.h" + +#include + +static const signed char u_combining_class_index_part1[10] = +{ + 0, /* Not Reordered */ + 1, /* Overlay */ + -1, + -1, + -1, + -1, + -1, + 2, /* Nukta */ + 3, /* Kana Voicing */ + 4 /* Virama */ +}; +static const signed char u_combining_class_index_part2[241 - 200] = +{ + 5, /* Attached Below Left */ + -1, + 6, /* Attached Below */ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 7, /* Attached Above */ + -1, + 8, /* Attached Above Right */ + -1, + 9, /* Below Left */ + -1, + 10, /* Below */ + -1, + 11, /* Below Right */ + -1, + 12, /* Left */ + -1, + 13, /* Right */ + -1, + 14, /* Above Left */ + -1, + 15, /* Above */ + -1, + 16, /* Above Right */ + 17, /* Double Below */ + 18, /* Double Above */ + -1, + -1, + -1, + -1, + -1, + 19 /* Iota Subscript */ +}; + +static const char u_combining_class_long_name[20][21] = +{ + "Not Reordered", + "Overlay", + "Nukta", + "Kana Voicing", + "Virama", + "Attached Below Left", + "Attached Below", + "Attached Above", + "Attached Above Right", + "Below Left", + "Below", + "Below Right", + "Left", + "Right", + "Above Left", + "Above", + "Above Right", + "Double Below", + "Double Above", + "Iota Subscript" +}; + +const char * +uc_combining_class_long_name (int ccc) +{ + if (ccc >= 0) + { + int index; + + if (ccc < 10) + index = u_combining_class_index_part1[ccc]; + else if (ccc >= 200 && ccc < 241) + index = u_combining_class_index_part2[ccc - 200]; + else + return NULL; + + if (index >= 0) + { + if (index < sizeof (u_combining_class_long_name) / sizeof (u_combining_class_long_name[0])) + return u_combining_class_long_name[index]; + else + abort (); + } + } + return NULL; +} -- cgit v1.2.3