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