/** * Internal function to look up currency data. Result is an array of * two integers. The first is the fraction digits. The second is the * rounding increment, or 0 if none. The rounding increment is in * units of 10^(-fraction_digits). */ static const int32_t* _findMetaData(const UChar* currency) { // Get CurrencyMeta resource out of root locale file. [This may // move out of the root locale file later; if it does, update this // code.] UErrorCode ec = U_ZERO_ERROR; ResourceBundle currencyMeta = ResourceBundle((char*)0, Locale(""), ec).get(CURRENCY_META, ec); if (U_FAILURE(ec)) { // Config/build error; return hard-coded defaults return LAST_RESORT_DATA; } // Look up our currency, or if that's not available, then DEFAULT char buf[ISO_COUNTRY_CODE_LENGTH+1]; ResourceBundle rb = currencyMeta.get(myUCharsToChars(buf, currency), ec); if (U_FAILURE(ec)) { rb = currencyMeta.get(DEFAULT_META, ec); if (U_FAILURE(ec)) { // Config/build error; return hard-coded defaults return LAST_RESORT_DATA; } } int32_t len; const int32_t *data = rb.getIntVector(len, ec); if (U_FAILURE(ec) || len < 2) { // Config/build error; return hard-coded defaults return LAST_RESORT_DATA; } return data; }
void ResourceManager::popAllResources(bool popBaseResources) { resources.resize(1); if (popBaseResources) { resources[0] = ResourceBundle(); currentLevel = nullptr; currentLevelResourceIdx = 0; } else { clearCurrentLevel(); } clearCache(); }
void ResourceManager::addResource(const std::string& id) { resources.push_back(ResourceBundle(id)); clearCache(); }