ICU 73.2  73.2
localebuilder.h
Go to the documentation of this file.
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__