00001 // © 2018 and later: Unicode, Inc. and others. 00002 // License & terms of use: http://www.unicode.org/copyright.html#License 00003 #ifndef __LOCALEBUILDER_H__ 00004 #define __LOCALEBUILDER_H__ 00005 00006 #include "unicode/locid.h" 00007 #include "unicode/stringpiece.h" 00008 #include "unicode/uobject.h" 00009 #include "unicode/utypes.h" 00010 00011 00012 #ifndef U_HIDE_DRAFT_API 00013 00018 U_NAMESPACE_BEGIN 00019 class CharString; 00020 00059 class U_COMMON_API LocaleBuilder : public UObject { 00060 public: 00068 LocaleBuilder(); 00069 00074 virtual ~LocaleBuilder(); 00075 00088 LocaleBuilder& setLocale(const Locale& locale); 00089 00106 LocaleBuilder& setLanguageTag(StringPiece tag); 00107 00121 LocaleBuilder& setLanguage(StringPiece language); 00122 00137 LocaleBuilder& setScript(StringPiece script); 00138 00156 LocaleBuilder& setRegion(StringPiece region); 00157 00177 LocaleBuilder& setVariant(StringPiece variant); 00178 00198 LocaleBuilder& setExtension(char key, StringPiece value); 00199 00218 LocaleBuilder& setUnicodeLocaleKeyword( 00219 StringPiece key, StringPiece type); 00220 00231 LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute); 00232 00244 LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute); 00245 00253 LocaleBuilder& clear(); 00254 00262 LocaleBuilder& clearExtensions(); 00263 00277 Locale build(UErrorCode& status); 00278 00279 private: 00280 UErrorCode status_; 00281 char language_[9]; 00282 char script_[5]; 00283 char region_[4]; 00284 CharString *variant_; // Pointer not object so we need not #include internal charstr.h. 00285 icu::Locale *extensions_; // Pointer not object. Storage for all other fields. 00286 00287 }; 00288 00289 U_NAMESPACE_END 00290 00291 #endif // U_HIDE_DRAFT_API 00292 #endif // __LOCALEBUILDER_H__
1.6.1