summaryrefslogtreecommitdiffstats
path: root/intl/icu/source/i18n/dcfmtimp.h
blob: 58858728419641d9a4a9717db73c2d7cf87a1616 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright (C) 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
********************************************************************************
*   Copyright (C) 2012-2014, International Business Machines
*   Corporation and others.  All Rights Reserved.
********************************************************************************/

#ifndef DCFMTIMP_H
#define DCFMTIMP_H

#include "unicode/utypes.h"


#if UCONFIG_FORMAT_FASTPATHS_49

U_NAMESPACE_BEGIN

enum EDecimalFormatFastpathStatus {
  kFastpathNO = 0,
  kFastpathYES = 1,
  kFastpathUNKNOWN = 2, /* not yet set */
  kFastpathMAYBE = 3 /* depends on value being formatted. */
};

/**
 * Must be smaller than DecimalFormat::fReserved
 */
struct DecimalFormatInternal {
  uint8_t    fFastFormatStatus;
  uint8_t    fFastParseStatus;

  DecimalFormatInternal &operator=(const DecimalFormatInternal& rhs) {
    fFastParseStatus = rhs.fFastParseStatus;
    fFastFormatStatus = rhs.fFastFormatStatus;
    return *this;
  }
#ifdef FMT_DEBUG
  void dump() const {
    printf("DecimalFormatInternal: fFastFormatStatus=%c, fFastParseStatus=%c\n",
           "NY?"[(int)fFastFormatStatus&3],
           "NY?"[(int)fFastParseStatus&3]
           );
  }
#endif
};



U_NAMESPACE_END

#endif

#endif