1 // © 2017 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
4 #include "unicode/utypes.h"
6 #if !UCONFIG_NO_FORMATTING
7 #ifndef __NUMBER_LONGNAMES_H__
8 #define __NUMBER_LONGNAMES_H__
10 #include "unicode/uversion.h"
11 #include "number_utils.h"
12 #include "number_modifiers.h"
14 U_NAMESPACE_BEGIN
namespace number
{
17 class LongNameHandler
: public MicroPropsGenerator
, public UMemory
{
19 static LongNameHandler
20 forCurrencyLongNames(const Locale
&loc
, const CurrencyUnit
¤cy
, const PluralRules
*rules
,
21 const MicroPropsGenerator
*parent
, UErrorCode
&status
);
23 static LongNameHandler
24 forMeasureUnit(const Locale
&loc
, const MeasureUnit
&unit
, const MeasureUnit
&perUnit
,
25 const UNumberUnitWidth
&width
, const PluralRules
*rules
,
26 const MicroPropsGenerator
*parent
, UErrorCode
&status
);
29 processQuantity(DecimalQuantity
&quantity
, MicroProps
µs
, UErrorCode
&status
) const U_OVERRIDE
;
32 SimpleModifier fModifiers
[StandardPlural::Form::COUNT
];
33 const PluralRules
*rules
;
34 const MicroPropsGenerator
*parent
;
36 LongNameHandler(const PluralRules
*rules
, const MicroPropsGenerator
*parent
)
37 : rules(rules
), parent(parent
) {}
39 static LongNameHandler
40 forCompoundUnit(const Locale
&loc
, const MeasureUnit
&unit
, const MeasureUnit
&perUnit
,
41 const UNumberUnitWidth
&width
, const PluralRules
*rules
,
42 const MicroPropsGenerator
*parent
, UErrorCode
&status
);
44 static void simpleFormatsToModifiers(const UnicodeString
*simpleFormats
, Field field
,
45 SimpleModifier
*output
, UErrorCode
&status
);
46 static void multiSimpleFormatsToModifiers(const UnicodeString
*leadFormats
, UnicodeString trailFormat
,
47 Field field
, SimpleModifier
*output
, UErrorCode
&status
);
54 #endif //__NUMBER_LONGNAMES_H__
56 #endif /* #if !UCONFIG_NO_FORMATTING */