1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 ********************************************************************************
5 *   Copyright (C) 2012-2014, International Business Machines
6 *   Corporation and others.  All Rights Reserved.
7 ********************************************************************************/
8 
9 #ifndef DCFMTIMP_H
10 #define DCFMTIMP_H
11 
12 #include "unicode/utypes.h"
13 
14 
15 #if UCONFIG_FORMAT_FASTPATHS_49
16 
17 U_NAMESPACE_BEGIN
18 
19 enum EDecimalFormatFastpathStatus {
20   kFastpathNO = 0,
21   kFastpathYES = 1,
22   kFastpathUNKNOWN = 2, /* not yet set */
23   kFastpathMAYBE = 3 /* depends on value being formatted. */
24 };
25 
26 /**
27  * Must be smaller than DecimalFormat::fReserved
28  */
29 struct DecimalFormatInternal {
30   uint8_t    fFastFormatStatus;
31   uint8_t    fFastParseStatus;
32 
33   DecimalFormatInternal &operator=(const DecimalFormatInternal& rhs) {
34     fFastParseStatus = rhs.fFastParseStatus;
35     fFastFormatStatus = rhs.fFastFormatStatus;
36     return *this;
37   }
38 #ifdef FMT_DEBUG
39   void dump() const {
40     printf("DecimalFormatInternal: fFastFormatStatus=%c, fFastParseStatus=%c\n",
41            "NY?"[(int)fFastFormatStatus&3],
42            "NY?"[(int)fFastParseStatus&3]
43            );
44   }
45 #endif
46 };
47 
48 
49 
50 U_NAMESPACE_END
51 
52 #endif
53 
54 #endif
55