ICU 73.2  73.2
displayoptions.h
Go to the documentation of this file.
00001 // © 2022 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 
00004 #ifndef __DISPLAYOPTIONS_H__
00005 #define __DISPLAYOPTIONS_H__
00006 
00007 #include "unicode/utypes.h"
00008 
00009 #if U_SHOW_CPLUSPLUS_API
00010 
00011 #if !UCONFIG_NO_FORMATTING
00012 
00020 #include "unicode/udisplayoptions.h"
00021 #include "unicode/uversion.h"
00022 
00023 U_NAMESPACE_BEGIN
00024 
00025 #ifndef U_HIDE_DRAFT_API
00026 
00045 class U_I18N_API DisplayOptions {
00046 public:
00052     class U_I18N_API Builder {
00053     public:
00061         Builder &setGrammaticalCase(UDisplayOptionsGrammaticalCase grammaticalCase) {
00062             this->grammaticalCase = grammaticalCase;
00063             return *this;
00064         }
00065 
00073         Builder &setNounClass(UDisplayOptionsNounClass nounClass) {
00074             this->nounClass = nounClass;
00075             return *this;
00076         }
00077 
00085         Builder &setPluralCategory(UDisplayOptionsPluralCategory pluralCategory) {
00086             this->pluralCategory = pluralCategory;
00087             return *this;
00088         }
00089 
00097         Builder &setCapitalization(UDisplayOptionsCapitalization capitalization) {
00098             this->capitalization = capitalization;
00099             return *this;
00100         }
00101 
00109         Builder &setNameStyle(UDisplayOptionsNameStyle nameStyle) {
00110             this->nameStyle = nameStyle;
00111             return *this;
00112         }
00113 
00121         Builder &setDisplayLength(UDisplayOptionsDisplayLength displayLength) {
00122             this->displayLength = displayLength;
00123             return *this;
00124         }
00125 
00133         Builder &setSubstituteHandling(UDisplayOptionsSubstituteHandling substituteHandling) {
00134             this->substituteHandling = substituteHandling;
00135             return *this;
00136         }
00137 
00144         DisplayOptions build() { return DisplayOptions(*this); }
00145 
00146     private:
00147         friend DisplayOptions;
00148 
00149         Builder();
00150         Builder(const DisplayOptions &displayOptions);
00151 
00152         UDisplayOptionsGrammaticalCase grammaticalCase;
00153         UDisplayOptionsNounClass nounClass;
00154         UDisplayOptionsPluralCategory pluralCategory;
00155         UDisplayOptionsCapitalization capitalization;
00156         UDisplayOptionsNameStyle nameStyle;
00157         UDisplayOptionsDisplayLength displayLength;
00158         UDisplayOptionsSubstituteHandling substituteHandling;
00159     };
00160 
00167     static Builder builder();
00174     Builder copyToBuilder() const;
00181     UDisplayOptionsGrammaticalCase getGrammaticalCase() const { return grammaticalCase; }
00182 
00189     UDisplayOptionsNounClass getNounClass() const { return nounClass; }
00190 
00197     UDisplayOptionsPluralCategory getPluralCategory() const { return pluralCategory; }
00198 
00205     UDisplayOptionsCapitalization getCapitalization() const { return capitalization; }
00206 
00213     UDisplayOptionsNameStyle getNameStyle() const { return nameStyle; }
00214 
00221     UDisplayOptionsDisplayLength getDisplayLength() const { return displayLength; }
00222 
00229     UDisplayOptionsSubstituteHandling getSubstituteHandling() const { return substituteHandling; }
00230 
00237     DisplayOptions &operator=(const DisplayOptions &other) = default;
00238 
00245     DisplayOptions &operator=(DisplayOptions &&other) noexcept = default;
00246 
00253     DisplayOptions(const DisplayOptions &other) = default;
00254 
00255 private:
00256     DisplayOptions(const Builder &builder);
00257     UDisplayOptionsGrammaticalCase grammaticalCase;
00258     UDisplayOptionsNounClass nounClass;
00259     UDisplayOptionsPluralCategory pluralCategory;
00260     UDisplayOptionsCapitalization capitalization;
00261     UDisplayOptionsNameStyle nameStyle;
00262     UDisplayOptionsDisplayLength displayLength;
00263     UDisplayOptionsSubstituteHandling substituteHandling;
00264 };
00265 
00266 #endif // U_HIDE_DRAFT_API
00267 
00268 U_NAMESPACE_END
00269 
00270 #endif /* #if !UCONFIG_NO_FORMATTING */
00271 
00272 #endif /* U_SHOW_CPLUSPLUS_API */
00273 
00274 #endif // __DISPLAYOPTIONS_H__