164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others.
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html
3103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/*
4103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius********************************************************************************
5fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*   Copyright (C) 2012-2014, International Business Machines
6103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*   Corporation and others.  All Rights Reserved.
7103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius********************************************************************************/
8103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
9103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef DCFMTIMP_H
10103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DCFMTIMP_H
11103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
12103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/utypes.h"
13103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
14103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
15103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if UCONFIG_FORMAT_FASTPATHS_49
16103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
17103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_NAMESPACE_BEGIN
18103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
19103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusenum EDecimalFormatFastpathStatus {
20103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius  kFastpathNO = 0,
21103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius  kFastpathYES = 1,
22f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius  kFastpathUNKNOWN = 2, /* not yet set */
23f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius  kFastpathMAYBE = 3 /* depends on value being formatted. */
24103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius};
25103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
26103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
27103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Must be smaller than DecimalFormat::fReserved
28103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
29103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstruct DecimalFormatInternal {
3054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius  uint8_t    fFastFormatStatus;
3154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius  uint8_t    fFastParseStatus;
32fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
33fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius  DecimalFormatInternal &operator=(const DecimalFormatInternal& rhs) {
34fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    fFastParseStatus = rhs.fFastParseStatus;
35fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    fFastFormatStatus = rhs.fFastFormatStatus;
36fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    return *this;
37fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius  }
38103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifdef FMT_DEBUG
39103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius  void dump() const {
4054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    printf("DecimalFormatInternal: fFastFormatStatus=%c, fFastParseStatus=%c\n",
4154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius           "NY?"[(int)fFastFormatStatus&3],
4254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius           "NY?"[(int)fFastParseStatus&3]
4354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius           );
44103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius  }
45fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif
46103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius};
47103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
48103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
49103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
50103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_NAMESPACE_END
51103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
52103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif
53103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
54103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif
55