1 // © 2018 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 
4 #include "unicode/utypes.h"
5 
6 #if !UCONFIG_NO_FORMATTING
7 #ifndef __SOURCE_NUMBER_UTYPES_H__
8 #define __SOURCE_NUMBER_UTYPES_H__
9 
10 #include "unicode/numberformatter.h"
11 #include "number_types.h"
12 #include "number_decimalquantity.h"
13 #include "formatted_string_builder.h"
14 #include "formattedval_impl.h"
15 
16 U_NAMESPACE_BEGIN namespace number {
17 namespace impl {
18 
19 
20 /** Helper function used in upluralrules.cpp */
21 const DecimalQuantity* validateUFormattedNumberToDecimalQuantity(
22     const UFormattedNumber* uresult, UErrorCode& status);
23 
24 
25 /**
26  * Struct for data used by FormattedNumber.
27  *
28  * This struct is held internally by the C++ version FormattedNumber since the member types are not
29  * declared in the public header file.
30  *
31  * Exported as U_I18N_API for tests
32  */
33 class U_I18N_API UFormattedNumberData : public FormattedValueStringBuilderImpl {
34 public:
UFormattedNumberData()35     UFormattedNumberData() : FormattedValueStringBuilderImpl(kUndefinedField) {}
36     virtual ~UFormattedNumberData();
37 
38     // The formatted quantity.
39     DecimalQuantity quantity;
40 
41     // The output unit for the formatted quantity.
42     // TODO(units,hugovdm): populate this correctly for the general case - it's
43     // currently only implemented for the .usage() use case.
44     MeasureUnit outputUnit;
45 
46     // The gender of the formatted output.
47     const char *gender = "";
48 };
49 
50 
51 } // namespace impl
52 } // namespace number
53 U_NAMESPACE_END
54 
55 #endif //__SOURCE_NUMBER_UTYPES_H__
56 #endif /* #if !UCONFIG_NO_FORMATTING */
57