virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &errorCode) { ResourceTable contexts = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } for (int i = 0; contexts.getKeyAndValue(i, key, value); ++i) { CapContextUsage usageEnum; if (uprv_strcmp(key, "key") == 0) { usageEnum = kCapContextUsageKey; } else if (uprv_strcmp(key, "keyValue") == 0) { usageEnum = kCapContextUsageKeyValue; } else if (uprv_strcmp(key, "languages") == 0) { usageEnum = kCapContextUsageLanguage; } else if (uprv_strcmp(key, "script") == 0) { usageEnum = kCapContextUsageScript; } else if (uprv_strcmp(key, "territory") == 0) { usageEnum = kCapContextUsageTerritory; } else if (uprv_strcmp(key, "variant") == 0) { usageEnum = kCapContextUsageVariant; } else { continue; } int32_t len = 0; const int32_t* intVector = value.getIntVector(len, errorCode); if (U_FAILURE(errorCode)) { return; } if (len < 2) { continue; } int32_t titlecaseInt = (parent.capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU) ? intVector[0] : intVector[1]; if (titlecaseInt == 0) { continue; } parent.fCapitalization[usageEnum] = TRUE; hasCapitalizationUsage = TRUE; } }