Datasheet
The C and C++ Libraries
ARM DUI 0067D Copyright © 1999-2001 ARM Limited. All rights reserved. 4-35
0xac, /* u grave */ 0xad, /* u acute */
0xae, /* u circumflex */ 0xaf, /* u umlaut */
0xb4, /* y acute */ 0xb8, /* thorn */
0xb5 /* y umlaut */
};
__LC_INDEX_END(lccollate_dummy)
void const *_get_lc_collate(void const *null, char const *name) {
return _findlocale(&lccoll_c_index, name);
}
void test_lc_collate(void) {
char buf[5];
/* test both strxfrm and strcoll here*/
EQS(setlocale(LC_COLLATE, NULL), "C"); /* verify starting point */
EQS((strxfrm(buf, "\xEF", 4), buf), "\xEF");
EQI(strcoll("\xEF", "j") < 0, 0);
EQI(!setlocale(LC_COLLATE, "ISO8859-1"), 0); /* setlocale should work */
EQS(setlocale(LC_COLLATE, NULL), "ISO8859-1");
EQS((strxfrm(buf, "\xEF", 4), buf), "\x97");
EQI(strcoll("\xEF", "j") < 0, 1);
EQI(!setlocale(LC_COLLATE, "C"), 0); /* setlocale should work */
EQS(setlocale(LC_COLLATE, NULL), "C");
EQS((strxfrm(buf, "\xEF", 4), buf), "\xEF");
EQI(strcoll("\xEF", "j") < 0, 0);
}
The
__LC_COLLATE_TRIVIAL_DEF
macro defines an array that has the element value equal
to its index number.
__LC_COLLATE_TRIVIAL_DEF(lccoll_c, "C")
is equivalent to the code
in Example 4-5.
Example 4-5 LC_COLLATE_DEF
__LC_COLLATE_DEF(lccoll_c, "C")
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
...
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
4.6.6 _get_lc_monetary()
_get_lc_monetary()
must return a pointer to an
__lc_monetary_blk
structure. Use the
macros in Example 4-6 on page 4-36 to create the structure.