diff options
author | mcheshkov <mcheshkov@yandex-team.ru> | 2022-02-10 16:46:16 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:16 +0300 |
commit | 1312621288956f199a5bd5342b0133d4395fa725 (patch) | |
tree | 1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/icu/i18n/numrange_impl.h | |
parent | e9d19cec64684c9c1e6b0c98297e5b895cf904fe (diff) | |
download | ydb-1312621288956f199a5bd5342b0133d4395fa725.tar.gz |
Restoring authorship annotation for <mcheshkov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/icu/i18n/numrange_impl.h')
-rw-r--r-- | contrib/libs/icu/i18n/numrange_impl.h | 226 |
1 files changed, 113 insertions, 113 deletions
diff --git a/contrib/libs/icu/i18n/numrange_impl.h b/contrib/libs/icu/i18n/numrange_impl.h index de1f8848de..8f4c8a40ba 100644 --- a/contrib/libs/icu/i18n/numrange_impl.h +++ b/contrib/libs/icu/i18n/numrange_impl.h @@ -1,113 +1,113 @@ -// © 2018 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html - -#include "unicode/utypes.h" - -#if !UCONFIG_NO_FORMATTING -#ifndef __SOURCE_NUMRANGE_TYPES_H__ -#define __SOURCE_NUMRANGE_TYPES_H__ - -#include "unicode/numberformatter.h" -#include "unicode/numberrangeformatter.h" -#include "unicode/simpleformatter.h" -#include "number_types.h" -#include "number_decimalquantity.h" -#include "number_formatimpl.h" -#include "formatted_string_builder.h" -#include "formattedval_impl.h" - -U_NAMESPACE_BEGIN namespace number { -namespace impl { - - -/** - * Class similar to UFormattedNumberData. - * - * Has incomplete magic number logic that will need to be finished - * if this is to be exposed as C API in the future. - * - * Possible magic number: 0x46445200 - * Reads in ASCII as "FDR" (FormatteDnumberRange with room at the end) - */ -class UFormattedNumberRangeData : public FormattedValueStringBuilderImpl { -public: - UFormattedNumberRangeData() : FormattedValueStringBuilderImpl(kUndefinedField) {} - virtual ~UFormattedNumberRangeData(); - - DecimalQuantity quantity1; - DecimalQuantity quantity2; - UNumberRangeIdentityResult identityResult = UNUM_IDENTITY_RESULT_COUNT; -}; - - -class StandardPluralRanges : public UMemory { - public: - void initialize(const Locale& locale, UErrorCode& status); - StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const; - - /** Used for data loading. */ - void addPluralRange( - StandardPlural::Form first, - StandardPlural::Form second, - StandardPlural::Form result); - - /** Used for data loading. */ - void setCapacity(int32_t length); - - private: - struct StandardPluralRangeTriple { - StandardPlural::Form first; - StandardPlural::Form second; - StandardPlural::Form result; - }; - - // TODO: An array is simple here, but it results in linear lookup time. - // Certain locales have 20-30 entries in this list. - // Consider changing to a smarter data structure. - typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples; - PluralRangeTriples fTriples; - int32_t fTriplesLen = 0; -}; - - -class NumberRangeFormatterImpl : public UMemory { - public: - NumberRangeFormatterImpl(const RangeMacroProps& macros, UErrorCode& status); - - void format(UFormattedNumberRangeData& data, bool equalBeforeRounding, UErrorCode& status) const; - - private: - NumberFormatterImpl formatterImpl1; - NumberFormatterImpl formatterImpl2; - bool fSameFormatters; - - UNumberRangeCollapse fCollapse; - UNumberRangeIdentityFallback fIdentityFallback; - - SimpleFormatter fRangeFormatter; - SimpleModifier fApproximatelyModifier; - - StandardPluralRanges fPluralRanges; - - void formatSingleValue(UFormattedNumberRangeData& data, - MicroProps& micros1, MicroProps& micros2, - UErrorCode& status) const; - - void formatApproximately(UFormattedNumberRangeData& data, - MicroProps& micros1, MicroProps& micros2, - UErrorCode& status) const; - - void formatRange(UFormattedNumberRangeData& data, - MicroProps& micros1, MicroProps& micros2, - UErrorCode& status) const; - - const Modifier& resolveModifierPlurals(const Modifier& first, const Modifier& second) const; -}; - - -} // namespace impl -} // namespace number -U_NAMESPACE_END - -#endif //__SOURCE_NUMRANGE_TYPES_H__ -#endif /* #if !UCONFIG_NO_FORMATTING */ +// © 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING +#ifndef __SOURCE_NUMRANGE_TYPES_H__ +#define __SOURCE_NUMRANGE_TYPES_H__ + +#include "unicode/numberformatter.h" +#include "unicode/numberrangeformatter.h" +#include "unicode/simpleformatter.h" +#include "number_types.h" +#include "number_decimalquantity.h" +#include "number_formatimpl.h" +#include "formatted_string_builder.h" +#include "formattedval_impl.h" + +U_NAMESPACE_BEGIN namespace number { +namespace impl { + + +/** + * Class similar to UFormattedNumberData. + * + * Has incomplete magic number logic that will need to be finished + * if this is to be exposed as C API in the future. + * + * Possible magic number: 0x46445200 + * Reads in ASCII as "FDR" (FormatteDnumberRange with room at the end) + */ +class UFormattedNumberRangeData : public FormattedValueStringBuilderImpl { +public: + UFormattedNumberRangeData() : FormattedValueStringBuilderImpl(kUndefinedField) {} + virtual ~UFormattedNumberRangeData(); + + DecimalQuantity quantity1; + DecimalQuantity quantity2; + UNumberRangeIdentityResult identityResult = UNUM_IDENTITY_RESULT_COUNT; +}; + + +class StandardPluralRanges : public UMemory { + public: + void initialize(const Locale& locale, UErrorCode& status); + StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const; + + /** Used for data loading. */ + void addPluralRange( + StandardPlural::Form first, + StandardPlural::Form second, + StandardPlural::Form result); + + /** Used for data loading. */ + void setCapacity(int32_t length); + + private: + struct StandardPluralRangeTriple { + StandardPlural::Form first; + StandardPlural::Form second; + StandardPlural::Form result; + }; + + // TODO: An array is simple here, but it results in linear lookup time. + // Certain locales have 20-30 entries in this list. + // Consider changing to a smarter data structure. + typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples; + PluralRangeTriples fTriples; + int32_t fTriplesLen = 0; +}; + + +class NumberRangeFormatterImpl : public UMemory { + public: + NumberRangeFormatterImpl(const RangeMacroProps& macros, UErrorCode& status); + + void format(UFormattedNumberRangeData& data, bool equalBeforeRounding, UErrorCode& status) const; + + private: + NumberFormatterImpl formatterImpl1; + NumberFormatterImpl formatterImpl2; + bool fSameFormatters; + + UNumberRangeCollapse fCollapse; + UNumberRangeIdentityFallback fIdentityFallback; + + SimpleFormatter fRangeFormatter; + SimpleModifier fApproximatelyModifier; + + StandardPluralRanges fPluralRanges; + + void formatSingleValue(UFormattedNumberRangeData& data, + MicroProps& micros1, MicroProps& micros2, + UErrorCode& status) const; + + void formatApproximately(UFormattedNumberRangeData& data, + MicroProps& micros1, MicroProps& micros2, + UErrorCode& status) const; + + void formatRange(UFormattedNumberRangeData& data, + MicroProps& micros1, MicroProps& micros2, + UErrorCode& status) const; + + const Modifier& resolveModifierPlurals(const Modifier& first, const Modifier& second) const; +}; + + +} // namespace impl +} // namespace number +U_NAMESPACE_END + +#endif //__SOURCE_NUMRANGE_TYPES_H__ +#endif /* #if !UCONFIG_NO_FORMATTING */ |