2 ** Copyright 2000-2003 Double Precision, Inc.
3 ** See COPYING for distribution information.
5 ** $Id: unicode_ultcase.c,v 1.2 2003/03/07 00:47:31 mrsam Exp $
8 #include "unicode_config.h"
11 extern const unsigned unicode_case_hash
;
12 extern const unicode_char unicode_case_tab
[][4];
13 extern const unsigned unicode_case_offset
[];
15 static unsigned find_case(unicode_char c
)
17 unsigned idx
= c
% unicode_case_hash
;
19 unsigned i
=unicode_case_offset
[idx
];
27 uc
=unicode_case_tab
[++i
][0];
30 } while ( (uc
% unicode_case_hash
) == idx
);
35 unicode_char
unicode_uc(unicode_char c
)
37 unsigned i
=find_case(c
);
39 return (unicode_case_tab
[i
][0] != c
? c
:unicode_case_tab
[i
][1]);
42 unicode_char
unicode_lc(unicode_char c
)
44 unsigned i
=find_case(c
);
46 return (unicode_case_tab
[i
][0] != c
? c
:unicode_case_tab
[i
][2]);
49 unicode_char
unicode_tc(unicode_char c
)
51 unsigned i
=find_case(c
);
53 return (unicode_case_tab
[i
][0] != c
? c
:unicode_case_tab
[i
][3]);