/* A prefix or suffix for a numeric output format. */
struct fmt_affix
{
- char *s; /* String contents of affix. */
+ char *s; /* String contents of affix, in UTF-8. */
+ int width; /* Display width in columns (see wcwidth()). */
};
/* A numeric output style. */
struct fmt_affix neg_suffix; /* Negative suffix. */
char decimal; /* Decimal point: '.' or ','. */
char grouping; /* Grouping character: ',', '.', or 0. */
+
+ /* A fmt_affix may require more bytes than its display width; for example,
+ U+00A5 (¥) is 3 bytes in UTF-8 but occupies only one display column.
+ This member is the sum of the number of bytes required by all of the
+ fmt_affix members in this struct, minus their display widths. Thus, it
+ can be used to size memory allocations: for example, the formatted
+ result of CCA20.5 requires no more than (20 + extra_bytes) bytes in
+ UTF-8. */
+ int extra_bytes;
};
int fmt_affix_width (const struct fmt_number_style *);