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/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 00108 LocaleBuilder& setLanguageTag(StringPiece tag); 00109 00123 LocaleBuilder& setLanguage(StringPiece language); 00124 00139 LocaleBuilder& setScript(StringPiece script); 00140 00158 LocaleBuilder& setRegion(StringPiece region); 00159 00179 LocaleBuilder& setVariant(StringPiece variant); 00180 00200 LocaleBuilder& setExtension(char key, StringPiece value); 00201 00220 LocaleBuilder& setUnicodeLocaleKeyword( 00221 StringPiece key, StringPiece type); 00222 00233 LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute); 00234 00246 LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute); 00247 00255 LocaleBuilder& clear(); 00256 00264 LocaleBuilder& clearExtensions(); 00265 00279 Locale build(UErrorCode& status); 00280 00281 #ifndef U_HIDE_DRAFT_API 00282 00291 UBool copyErrorTo(UErrorCode &outErrorCode) const; 00292 #endif /* U_HIDE_DRAFT_API */ 00293 00294 private: 00295 friend class LocaleMatcher::Result; 00296 00297 void copyExtensionsFrom(const Locale& src, UErrorCode& errorCode); 00298 00299 UErrorCode status_; 00300 char language_[9]; 00301 char script_[5]; 00302 char region_[4]; 00303 CharString *variant_; // Pointer not object so we need not #include internal charstr.h. 00304 icu::Locale *extensions_; // Pointer not object. Storage for all other fields. 00305 00306 }; 00307 00308 U_NAMESPACE_END 00309 00310 #endif /* U_SHOW_CPLUSPLUS_API */ 00311 00312 #endif // __LOCALEBUILDER_H__
1.6.1