• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 2015, International Business Machines
6 * Corporation and others.  All Rights Reserved.
7 *******************************************************************************
8 * digitaffix.h
9 *
10 * created on: 2015jan06
11 * created by: Travis Keep
12 */
13 
14 #ifndef __DIGITAFFIX_H__
15 #define __DIGITAFFIX_H__
16 
17 #include "unicode/uobject.h"
18 
19 #if !UCONFIG_NO_FORMATTING
20 
21 #include "unicode/unistr.h"
22 #include "unicode/unum.h"
23 #include "unicode/utypes.h"
24 
25 U_NAMESPACE_BEGIN
26 
27 class FieldPositionHandler;
28 
29 /**
30  * A prefix or suffix of a formatted number.
31  */
32 class U_I18N_API DigitAffix : public UMemory {
33 public:
34 
35     /**
36      * Creates an empty DigitAffix.
37      */
38     DigitAffix();
39 
40     /**
41      * Creates a DigitAffix containing given UChars where all of it has
42      * a field type of fieldId.
43      */
44     DigitAffix(
45             const UChar *value,
46             int32_t charCount,
47             int32_t fieldId=UNUM_FIELD_COUNT);
48 
49     /**
50      * Makes this affix be the empty string.
51      */
52     void remove();
53 
54     /**
55      * Append value to this affix. If fieldId is present, the appended
56      * string is considered to be the type fieldId.
57      */
58     void appendUChar(UChar value, int32_t fieldId=UNUM_FIELD_COUNT);
59 
60     /**
61      * Append value to this affix. If fieldId is present, the appended
62      * string is considered to be the type fieldId.
63      */
64     void append(const UnicodeString &value, int32_t fieldId=UNUM_FIELD_COUNT);
65 
66     /**
67      * Sets this affix to given string. The entire string
68      * is considered to be the type fieldId.
69      */
70     void setTo(const UnicodeString &value, int32_t fieldId=UNUM_FIELD_COUNT);
71 
72     /**
73      * Append value to this affix. If fieldId is present, the appended
74      * string is considered to be the type fieldId.
75      */
76     void append(const UChar *value, int32_t charCount, int32_t fieldId=UNUM_FIELD_COUNT);
77 
78     /**
79      * Formats this affix.
80      */
81     UnicodeString &format(
82             FieldPositionHandler &handler, UnicodeString &appendTo) const;
countChar32()83     int32_t countChar32() const { return fAffix.countChar32(); }
84 
85     /**
86      * Returns this affix as a unicode string.
87      */
toString()88     const UnicodeString & toString() const { return fAffix; }
89 
90     /**
91      * Returns TRUE if this object equals rhs.
92      */
equals(const DigitAffix & rhs)93     UBool equals(const DigitAffix &rhs) const {
94         return ((fAffix == rhs.fAffix) && (fAnnotations == rhs.fAnnotations));
95     }
96 private:
97     UnicodeString fAffix;
98     UnicodeString fAnnotations;
99 };
100 
101 
102 U_NAMESPACE_END
103 #endif // #if !UCONFIG_NO_FORMATTING
104 #endif  // __DIGITAFFIX_H__
105