123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- // © 2022 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- #ifndef __DISPLAYOPTIONS_H__
- #define __DISPLAYOPTIONS_H__
- #include "unicode/utypes.h"
- #if U_SHOW_CPLUSPLUS_API
- #if !UCONFIG_NO_FORMATTING
- /**
- * \file
- * \brief C++ API: Display options class
- *
- * This class is designed as a more modern version of the UDisplayContext mechanism.
- */
- #include "unicode/udisplayoptions.h"
- #include "unicode/uversion.h"
- U_NAMESPACE_BEGIN
- /**
- * Represents all the display options that are supported by CLDR such as grammatical case, noun
- * class, ... etc. It currently supports enums, but may be extended in the future to have other
- * types of data. It replaces a DisplayContext[] as a method parameter.
- *
- * NOTE: This class is Immutable, and uses a Builder interface.
- *
- * For example:
- * ```
- * DisplayOptions x =
- * DisplayOptions::builder().
- * .setGrammaticalCase(UDISPOPT_GRAMMATICAL_CASE_DATIVE)
- * .setPluralCategory(UDISPOPT_PLURAL_CATEGORY_FEW)
- * .build();
- * ```
- *
- * @stable ICU 72
- */
- class U_I18N_API DisplayOptions {
- public:
- /**
- * Responsible for building `DisplayOptions`.
- *
- * @stable ICU 72
- */
- class U_I18N_API Builder {
- public:
- /**
- * Sets the grammatical case.
- *
- * @param grammaticalCase The grammatical case.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setGrammaticalCase(UDisplayOptionsGrammaticalCase grammaticalCase) {
- this->grammaticalCase = grammaticalCase;
- return *this;
- }
- /**
- * Sets the noun class.
- *
- * @param nounClass The noun class.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setNounClass(UDisplayOptionsNounClass nounClass) {
- this->nounClass = nounClass;
- return *this;
- }
- /**
- * Sets the plural category.
- *
- * @param pluralCategory The plural category.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setPluralCategory(UDisplayOptionsPluralCategory pluralCategory) {
- this->pluralCategory = pluralCategory;
- return *this;
- }
- /**
- * Sets the capitalization.
- *
- * @param capitalization The capitalization.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setCapitalization(UDisplayOptionsCapitalization capitalization) {
- this->capitalization = capitalization;
- return *this;
- }
- /**
- * Sets the dialect handling.
- *
- * @param nameStyle The name style.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setNameStyle(UDisplayOptionsNameStyle nameStyle) {
- this->nameStyle = nameStyle;
- return *this;
- }
- /**
- * Sets the display length.
- *
- * @param displayLength The display length.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setDisplayLength(UDisplayOptionsDisplayLength displayLength) {
- this->displayLength = displayLength;
- return *this;
- }
- /**
- * Sets the substitute handling.
- *
- * @param substituteHandling The substitute handling.
- * @return Builder
- * @stable ICU 72
- */
- Builder &setSubstituteHandling(UDisplayOptionsSubstituteHandling substituteHandling) {
- this->substituteHandling = substituteHandling;
- return *this;
- }
- /**
- * Builds the display options.
- *
- * @return DisplayOptions
- * @stable ICU 72
- */
- DisplayOptions build() { return DisplayOptions(*this); }
- private:
- friend DisplayOptions;
- Builder();
- Builder(const DisplayOptions &displayOptions);
- UDisplayOptionsGrammaticalCase grammaticalCase;
- UDisplayOptionsNounClass nounClass;
- UDisplayOptionsPluralCategory pluralCategory;
- UDisplayOptionsCapitalization capitalization;
- UDisplayOptionsNameStyle nameStyle;
- UDisplayOptionsDisplayLength displayLength;
- UDisplayOptionsSubstituteHandling substituteHandling;
- };
- /**
- * Creates a builder with the `UNDEFINED` values for all the parameters.
- *
- * @return Builder
- * @stable ICU 72
- */
- static Builder builder();
- /**
- * Creates a builder with the same parameters from this object.
- *
- * @return Builder
- * @stable ICU 72
- */
- Builder copyToBuilder() const;
- /**
- * Gets the grammatical case.
- *
- * @return UDisplayOptionsGrammaticalCase
- * @stable ICU 72
- */
- UDisplayOptionsGrammaticalCase getGrammaticalCase() const { return grammaticalCase; }
- /**
- * Gets the noun class.
- *
- * @return UDisplayOptionsNounClass
- * @stable ICU 72
- */
- UDisplayOptionsNounClass getNounClass() const { return nounClass; }
- /**
- * Gets the plural category.
- *
- * @return UDisplayOptionsPluralCategory
- * @stable ICU 72
- */
- UDisplayOptionsPluralCategory getPluralCategory() const { return pluralCategory; }
- /**
- * Gets the capitalization.
- *
- * @return UDisplayOptionsCapitalization
- * @stable ICU 72
- */
- UDisplayOptionsCapitalization getCapitalization() const { return capitalization; }
- /**
- * Gets the dialect handling.
- *
- * @return UDisplayOptionsNameStyle
- * @stable ICU 72
- */
- UDisplayOptionsNameStyle getNameStyle() const { return nameStyle; }
- /**
- * Gets the display length.
- *
- * @return UDisplayOptionsDisplayLength
- * @stable ICU 72
- */
- UDisplayOptionsDisplayLength getDisplayLength() const { return displayLength; }
- /**
- * Gets the substitute handling.
- *
- * @return UDisplayOptionsSubstituteHandling
- * @stable ICU 72
- */
- UDisplayOptionsSubstituteHandling getSubstituteHandling() const { return substituteHandling; }
- /**
- * Copies the DisplayOptions.
- *
- * @param other The options to copy.
- * @stable ICU 72
- */
- DisplayOptions &operator=(const DisplayOptions &other) = default;
- /**
- * Moves the DisplayOptions.
- *
- * @param other The options to move from.
- * @stable ICU 72
- */
- DisplayOptions &operator=(DisplayOptions &&other) noexcept = default;
- /**
- * Copies the DisplayOptions.
- *
- * @param other The options to copy.
- * @stable ICU 72
- */
- DisplayOptions(const DisplayOptions &other) = default;
- private:
- DisplayOptions(const Builder &builder);
- UDisplayOptionsGrammaticalCase grammaticalCase;
- UDisplayOptionsNounClass nounClass;
- UDisplayOptionsPluralCategory pluralCategory;
- UDisplayOptionsCapitalization capitalization;
- UDisplayOptionsNameStyle nameStyle;
- UDisplayOptionsDisplayLength displayLength;
- UDisplayOptionsSubstituteHandling substituteHandling;
- };
- U_NAMESPACE_END
- #endif /* #if !UCONFIG_NO_FORMATTING */
- #endif /* U_SHOW_CPLUSPLUS_API */
- #endif // __DISPLAYOPTIONS_H__
|