Home | History | Annotate | Download | only in i18n
      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;
     83     int32_t countChar32() const { return fAffix.countChar32(); }
     84 
     85     /**
     86      * Returns this affix as a unicode string.
     87      */
     88     const UnicodeString & toString() const { return fAffix; }
     89 
     90     /**
     91      * Returns TRUE if this object equals rhs.
     92      */
     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