/*
******************************************************************************
*
-* Copyright (C) 1999-2013, International Business Machines
+* Copyright (C) 1999-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*
******************************************************************************
/* prototypes ------------------------------------------------------------- */
-#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-
static const char DATA_NAME[] = "unames";
static const char DATA_TYPE[] = "icu";
/* Return unknown if the table of names above is not up to
date. */
- if (cat >= LENGTHOF(charCatNames)) {
+ if (cat >= UPRV_LENGTHOF(charCatNames)) {
return "unknown";
} else {
return charCatNames[cat];
calcExtNameSetsLengths(int32_t maxNameLength) {
int32_t i, length;
- for(i=0; i<LENGTHOF(charCatNames); ++i) {
+ for(i=0; i<UPRV_LENGTHOF(charCatNames); ++i) {
/*
* for each category, count the length of the category name
* plus 9=
*pErrorCode = U_ILLEGAL_CHAR_FOUND;
return error;
}
+ // i==strlen(name)==strlen(lower)==strlen(upper)
/* try extended names first */
if (lower[0] == '<') {
if (nameChoice == U_EXTENDED_CHAR_NAME) {
- if (lower[--i] == '>') {
- for (--i; lower[i] && lower[i] != '-'; --i) {
- }
+ // Parse a string like "<category-HHHH>" where HHHH is a hex code point.
+ if (lower[--i] == '>' && i >= 3 && lower[--i] != '-') {
+ while (i >= 3 && lower[--i] != '-') {}
- if (lower[i] == '-') { /* We've got a category. */
+ if (i >= 2 && lower[i] == '-') {
uint32_t cIdx;
lower[i] = 0;
We could use a binary search, or a trie, if
we really wanted to. */
- for (lower[i] = 0, cIdx = 0; cIdx < LENGTHOF(charCatNames); ++cIdx) {
+ for (lower[i] = 0, cIdx = 0; cIdx < UPRV_LENGTHOF(charCatNames); ++cIdx) {
if (!uprv_strcmp(lower + 1, charCatNames[cIdx])) {
if (getCharCat(cp) == cIdx) {