00001 // © 2018 and later: Unicode, Inc. and others. 00002 // License & terms of use: http://www.unicode.org/copyright.html 00003 #ifndef __LOCALEBUILDER_H__ 00004 #define __LOCALEBUILDER_H__ 00005 00006 #include "unicode/utypes.h" 00007 00008 #if U_SHOW_CPLUSPLUS_API 00009 00010 #include "unicode/locid.h" 00011 #include "unicode/localematcher.h" 00012 #include "unicode/stringpiece.h" 00013 #include "unicode/uobject.h" 00014 00020 U_NAMESPACE_BEGIN 00021 class CharString; 00022 00061 class U_COMMON_API LocaleBuilder : public UObject { 00062 public: 00070 LocaleBuilder(); 00071 00076 virtual ~LocaleBuilder(); 00077 00090 LocaleBuilder& setLocale(const Locale& locale); 00091 00107 LocaleBuilder& setLanguageTag(StringPiece tag); 00108 00122 LocaleBuilder& setLanguage(StringPiece language); 00123 00138 LocaleBuilder& setScript(StringPiece script); 00139 00157 LocaleBuilder& setRegion(StringPiece region); 00158 00178 LocaleBuilder& setVariant(StringPiece variant); 00179 00199 LocaleBuilder& setExtension(char key, StringPiece value); 00200 00219 LocaleBuilder& setUnicodeLocaleKeyword( 00220 StringPiece key, StringPiece type); 00221 00232 LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute); 00233 00245 LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute); 00246 00254 LocaleBuilder& clear(); 00255 00263 LocaleBuilder& clearExtensions(); 00264 00278 Locale build(UErrorCode& status); 00279 00289 UBool copyErrorTo(UErrorCode &outErrorCode) const; 00290 00291 private: 00292 friend class LocaleMatcher::Result; 00293 00294 void copyExtensionsFrom(const Locale& src, UErrorCode& errorCode); 00295 00296 UErrorCode status_; 00297 char language_[9]; 00298 char script_[5]; 00299 char region_[4]; 00300 CharString *variant_; // Pointer not object so we need not #include internal charstr.h. 00301 icu::Locale *extensions_; // Pointer not object. Storage for all other fields. 00302 00303 }; 00304 00305 U_NAMESPACE_END 00306 00307 #endif /* U_SHOW_CPLUSPLUS_API */ 00308 00309 #endif // __LOCALEBUILDER_H__
1.6.1