]> git.ipfire.org Git - thirdparty/glibc.git/blame - locale/C-collate.c
* sysdeps/unix/sysv/linux/readv.c (do_readv): Use prototype defn.
[thirdparty/glibc.git] / locale / C-collate.c
CommitLineData
ab26a24a 1/* Copyright (C) 1995-1997,1999,2000,2001,2002 Free Software Foundation, Inc.
6d52618b 2 This file is part of the GNU C Library.
52bc074f 3 Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
75cd5204 4
6d52618b 5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
75cd5204 9
6d52618b
UD
10 The GNU C Library 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 GNU
41bdb6e2 13 Lesser General Public License for more details.
75cd5204 14
41bdb6e2
AJ
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18 02111-1307 USA. */
40deae08 19
ce7a5ef4 20#include <endian.h>
40deae08
RM
21#include "localeinfo.h"
22
acb5ee2e
UD
23static const char collseqmb[] =
24{
25 '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
26 '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
27 '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
28 '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
29 '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
30 '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
31 '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
32 '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
33 '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
34 '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
35 '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
36 '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
37 '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
38 '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
39 '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
40 '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
41 '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
42 '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
43 '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
44 '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
45 '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7',
46 '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf',
47 '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
48 '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf',
49 '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
50 '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf',
51 '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7',
52 '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf',
53 '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
54 '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
55 '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
56 '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff'
57};
58
59static const uint32_t collseqwc[] =
60{
04ea3b0f
UD
61 8, 1, 8, 0x0, 0xff,
62 /* 1st-level table */
63 6 * sizeof (uint32_t),
64 /* 2nd-level table */
65 7 * sizeof (uint32_t),
66 /* 3rd-level table */
acb5ee2e
UD
67 L'\x00', L'\x01', L'\x02', L'\x03', L'\x04', L'\x05', L'\x06', L'\x07',
68 L'\x08', L'\x09', L'\x0a', L'\x0b', L'\x0c', L'\x0d', L'\x0e', L'\x0f',
69 L'\x10', L'\x11', L'\x12', L'\x13', L'\x14', L'\x15', L'\x16', L'\x17',
70 L'\x18', L'\x19', L'\x1a', L'\x1b', L'\x1c', L'\x1d', L'\x1e', L'\x1f',
71 L'\x20', L'\x21', L'\x22', L'\x23', L'\x24', L'\x25', L'\x26', L'\x27',
72 L'\x28', L'\x29', L'\x2a', L'\x2b', L'\x2c', L'\x2d', L'\x2e', L'\x2f',
73 L'\x30', L'\x31', L'\x32', L'\x33', L'\x34', L'\x35', L'\x36', L'\x37',
74 L'\x38', L'\x39', L'\x3a', L'\x3b', L'\x3c', L'\x3d', L'\x3e', L'\x3f',
75 L'\x40', L'\x41', L'\x42', L'\x43', L'\x44', L'\x45', L'\x46', L'\x47',
76 L'\x48', L'\x49', L'\x4a', L'\x4b', L'\x4c', L'\x4d', L'\x4e', L'\x4f',
77 L'\x50', L'\x51', L'\x52', L'\x53', L'\x54', L'\x55', L'\x56', L'\x57',
78 L'\x58', L'\x59', L'\x5a', L'\x5b', L'\x5c', L'\x5d', L'\x5e', L'\x5f',
79 L'\x60', L'\x61', L'\x62', L'\x63', L'\x64', L'\x65', L'\x66', L'\x67',
80 L'\x68', L'\x69', L'\x6a', L'\x6b', L'\x6c', L'\x6d', L'\x6e', L'\x6f',
81 L'\x70', L'\x71', L'\x72', L'\x73', L'\x74', L'\x75', L'\x76', L'\x77',
82 L'\x78', L'\x79', L'\x7a', L'\x7b', L'\x7c', L'\x7d', L'\x7e', L'\x7f',
83 L'\x80', L'\x81', L'\x82', L'\x83', L'\x84', L'\x85', L'\x86', L'\x87',
84 L'\x88', L'\x89', L'\x8a', L'\x8b', L'\x8c', L'\x8d', L'\x8e', L'\x8f',
85 L'\x90', L'\x91', L'\x92', L'\x93', L'\x94', L'\x95', L'\x96', L'\x97',
86 L'\x98', L'\x99', L'\x9a', L'\x9b', L'\x9c', L'\x9d', L'\x9e', L'\x9f',
87 L'\xa0', L'\xa1', L'\xa2', L'\xa3', L'\xa4', L'\xa5', L'\xa6', L'\xa7',
88 L'\xa8', L'\xa9', L'\xaa', L'\xab', L'\xac', L'\xad', L'\xae', L'\xaf',
89 L'\xb0', L'\xb1', L'\xb2', L'\xb3', L'\xb4', L'\xb5', L'\xb6', L'\xb7',
90 L'\xb8', L'\xb9', L'\xba', L'\xbb', L'\xbc', L'\xbd', L'\xbe', L'\xbf',
91 L'\xc0', L'\xc1', L'\xc2', L'\xc3', L'\xc4', L'\xc5', L'\xc6', L'\xc7',
92 L'\xc8', L'\xc9', L'\xca', L'\xcb', L'\xcc', L'\xcd', L'\xce', L'\xcf',
93 L'\xd0', L'\xd1', L'\xd2', L'\xd3', L'\xd4', L'\xd5', L'\xd6', L'\xd7',
94 L'\xd8', L'\xd9', L'\xda', L'\xdb', L'\xdc', L'\xdd', L'\xde', L'\xdf',
95 L'\xe0', L'\xe1', L'\xe2', L'\xe3', L'\xe4', L'\xe5', L'\xe6', L'\xe7',
96 L'\xe8', L'\xe9', L'\xea', L'\xeb', L'\xec', L'\xed', L'\xee', L'\xef',
97 L'\xf0', L'\xf1', L'\xf2', L'\xf3', L'\xf4', L'\xf5', L'\xf6', L'\xf7',
98 L'\xf8', L'\xf9', L'\xfa', L'\xfb', L'\xfc', L'\xfd', L'\xfe', L'\xff'
99};
100
ab26a24a 101const struct locale_data _nl_C_LC_COLLATE attribute_hidden =
40deae08 102{
7a12c6bb 103 _nl_C_name,
df9f41c9
RM
104 NULL, 0, 0, /* no file mapped */
105 { NULL, }, /* no cached data */
a5a0310d 106 UNDELETABLE,
323fb88d 107 0,
e7f21fa6 108 19,
59dd8641 109 {
04ea3b0f 110 /* _NL_COLLATE_NRULES */
66ac0abe 111 { word: 0 },
04ea3b0f 112 /* _NL_COLLATE_RULESETS */
66ac0abe 113 { string: NULL },
04ea3b0f 114 /* _NL_COLLATE_TABLEMB */
66ac0abe 115 { string: NULL },
04ea3b0f 116 /* _NL_COLLATE_WEIGHTMB */
66ac0abe 117 { string: NULL },
04ea3b0f 118 /* _NL_COLLATE_EXTRAMB */
66ac0abe 119 { string: NULL },
04ea3b0f 120 /* _NL_COLLATE_INDIRECTMB */
66ac0abe 121 { string: NULL },
4c7d276e
UD
122 /* _NL_COLLATE_GAP1 */
123 { string: NULL },
124 /* _NL_COLLATE_GAP2 */
125 { string: NULL },
126 /* _NL_COLLATE_GAP3 */
ce7a5ef4 127 { string: NULL },
04ea3b0f 128 /* _NL_COLLATE_TABLEWC */
52bc074f 129 { string: NULL },
04ea3b0f 130 /* _NL_COLLATE_WEIGHTWC */
52bc074f 131 { string: NULL },
04ea3b0f 132 /* _NL_COLLATE_EXTRAWC */
450bf66e 133 { string: NULL },
04ea3b0f 134 /* _NL_COLLATE_INDIRECTWC */
3216711f 135 { string: NULL },
04ea3b0f 136 /* _NL_COLLATE_SYMB_HASH_SIZEMB */
3216711f 137 { string: NULL },
04ea3b0f 138 /* _NL_COLLATE_SYMB_TABLEMB */
acb5ee2e 139 { string: NULL },
04ea3b0f 140 /* _NL_COLLATE_SYMB_EXTRAMB */
acb5ee2e 141 { string: NULL },
04ea3b0f 142 /* _NL_COLLATE_COLLSEQMB */
acb5ee2e 143 { string: collseqmb },
04ea3b0f 144 /* _NL_COLLATE_COLLSEQWC */
e7f21fa6
UD
145 { string: (const char *) collseqwc },
146 /* _NL_COLLATE_CODESET */
147 { string: _nl_C_codeset }
59dd8641 148 }
40deae08 149};