Beispiel #1
0
UObject* 
CFactory::create(const ICUServiceKey& key, const ICUService* /* service */, UErrorCode& status) const
{
    if (handlesKey(key, status)) {
        const LocaleKey& lkey = (const LocaleKey&)key;
        Locale validLoc;
        lkey.currentLocale(validLoc);
        return _delegate->createCollator(validLoc);
    }
    return NULL;
}
UObject*
LocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const {
    if (handlesKey(key, status)) {
        const LocaleKey& lkey = (const LocaleKey&)key;
        int32_t kind = lkey.kind();
        Locale loc;
        lkey.currentLocale(loc);

        return handleCreate(loc, kind, service, status);
    }
    return NULL;
}
Beispiel #3
0
UObject*
ICUCollatorFactory::create(const ICUServiceKey& key, const ICUService* /* service */, UErrorCode& status) const {
    if (handlesKey(key, status)) {
        const LocaleKey& lkey = (const LocaleKey&)key;
        Locale loc;
        // make sure the requested locale is correct
        // default LocaleFactory uses currentLocale since that's the one vetted by handlesKey
        // but for ICU rb resources we use the actual one since it will fallback again
        lkey.canonicalLocale(loc);
        
        return Collator::makeInstance(loc, status);
    }
    return NULL;
}
Beispiel #4
0
  virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const
  {
    if (handlesKey(key, status)) {
      const LocaleKey& lkey = (const LocaleKey&)key;
      Locale loc;
      lkey.canonicalLocale(loc);
      int32_t kind = lkey.kind();

      UObject* result = _delegate->createFormat(loc, (UNumberFormatStyle)(kind+1));
      if (result == NULL) {
        result = service->getKey((ICUServiceKey&)key /* cast away const */, NULL, this, status);
      }
      return result;
    }
    return NULL;
  }