number_longnames.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // © 2017 and later: Unicode, Inc. and others.
  2. // License & terms of use: http://www.unicode.org/copyright.html
  3. #include "unicode/utypes.h"
  4. #if !UCONFIG_NO_FORMATTING
  5. #ifndef __NUMBER_LONGNAMES_H__
  6. #define __NUMBER_LONGNAMES_H__
  7. #include "unicode/uversion.h"
  8. #include "number_utils.h"
  9. #include "number_modifiers.h"
  10. U_NAMESPACE_BEGIN namespace number {
  11. namespace impl {
  12. class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public UMemory {
  13. public:
  14. static UnicodeString getUnitDisplayName(
  15. const Locale& loc,
  16. const MeasureUnit& unit,
  17. UNumberUnitWidth width,
  18. UErrorCode& status);
  19. static UnicodeString getUnitPattern(
  20. const Locale& loc,
  21. const MeasureUnit& unit,
  22. UNumberUnitWidth width,
  23. StandardPlural::Form pluralForm,
  24. UErrorCode& status);
  25. static LongNameHandler*
  26. forCurrencyLongNames(const Locale &loc, const CurrencyUnit &currency, const PluralRules *rules,
  27. const MicroPropsGenerator *parent, UErrorCode &status);
  28. static LongNameHandler*
  29. forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
  30. const UNumberUnitWidth &width, const PluralRules *rules,
  31. const MicroPropsGenerator *parent, UErrorCode &status);
  32. void
  33. processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
  34. const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
  35. private:
  36. SimpleModifier fModifiers[StandardPlural::Form::COUNT];
  37. const PluralRules *rules;
  38. const MicroPropsGenerator *parent;
  39. LongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)
  40. : rules(rules), parent(parent) {}
  41. static LongNameHandler*
  42. forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
  43. const UNumberUnitWidth &width, const PluralRules *rules,
  44. const MicroPropsGenerator *parent, UErrorCode &status);
  45. void simpleFormatsToModifiers(const UnicodeString *simpleFormats, Field field, UErrorCode &status);
  46. void multiSimpleFormatsToModifiers(const UnicodeString *leadFormats, UnicodeString trailFormat,
  47. Field field, UErrorCode &status);
  48. };
  49. } // namespace impl
  50. } // namespace number
  51. U_NAMESPACE_END
  52. #endif //__NUMBER_LONGNAMES_H__
  53. #endif /* #if !UCONFIG_NO_FORMATTING */