]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/decfmtst.cpp
ICU-64232.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / decfmtst.cpp
diff --git a/icuSources/i18n/decfmtst.cpp b/icuSources/i18n/decfmtst.cpp
deleted file mode 100644 (file)
index e939ab4..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-* Copyright (C) 2009-2016, International Business Machines Corporation and
-* others. All Rights Reserved.
-*******************************************************************************
-*
-* This file contains the class DecimalFormatStaticSets
-*
-* DecimalFormatStaticSets holds the UnicodeSets that are needed for lenient
-* parsing of decimal and group separators.
-********************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING
-
-#include "unicode/unistr.h"
-#include "unicode/uniset.h"
-#include "unicode/uchar.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "uassert.h"
-#include "ucln_in.h"
-#include "umutex.h"
-
-#include "decfmtst.h"
-
-U_NAMESPACE_BEGIN
-
-
-//------------------------------------------------------------------------------
-//
-// Unicode Set pattern strings for all of the required constant sets.
-//               Initialized with hex values for portability to EBCDIC based machines.
-//                Really ugly, but there's no good way to avoid it.
-//
-//------------------------------------------------------------------------------
-
-static const UChar gDotEquivalentsPattern[] = {
-        // [       .    \u2024  \u3002  \uFE12  \uFE52  \uFF0E  \uFF61     ]
-        0x005B, 0x002E, 0x2024, 0x3002, 0xFE12, 0xFE52, 0xFF0E, 0xFF61, 0x005D, 0x0000};
-
-static const UChar gCommaEquivalentsPattern[] = {
-        // [       ,    \u060C  \u066B  \u3001  \uFE10  \uFE11  \uFE50  \uFE51  \uFF0C  \uFF64    ]
-        0x005B, 0x002C, 0x060C, 0x066B, 0x3001, 0xFE10, 0xFE11, 0xFE50, 0xFE51, 0xFF0C, 0xFF64, 0x005D, 0x0000};
-
-static const UChar gOtherGroupingSeparatorsPattern[] = {
-        // [       \     SPACE     '      NBSP  \u066C  \u2000     -    \u200A  \u2018  \u2019  \u202F  \u205F  \u3000  \uFF07     ]
-        0x005B, 0x005C, 0x0020, 0x0027, 0x00A0, 0x066C, 0x2000, 0x002D, 0x200A, 0x2018, 0x2019, 0x202F, 0x205F, 0x3000, 0xFF07, 0x005D, 0x0000};
-
-static const UChar gDashEquivalentsPattern[] = {
-        // [       \      -     HYPHEN  F_DASH  N_DASH   MINUS     ]
-        0x005B, 0x005C, 0x002D, 0x2010, 0x2012, 0x2013, 0x2212, 0x005D, 0x0000};
-
-static const UChar gStrictDotEquivalentsPattern[] = {
-        // [      .     \u2024  \uFE52  \uFF0E  \uFF61    ]
-        0x005B, 0x002E, 0x2024, 0xFE52, 0xFF0E, 0xFF61, 0x005D, 0x0000};
-
-static const UChar gStrictCommaEquivalentsPattern[] = {
-        // [       ,    \u066B  \uFE10  \uFE50  \uFF0C     ]
-        0x005B, 0x002C, 0x066B, 0xFE10, 0xFE50, 0xFF0C, 0x005D, 0x0000};
-
-static const UChar gStrictOtherGroupingSeparatorsPattern[] = {
-        // [       \     SPACE     '      NBSP  \u066C  \u2000     -    \u200A  \u2018  \u2019  \u202F  \u205F  \u3000  \uFF07     ]
-        0x005B, 0x005C, 0x0020, 0x0027, 0x00A0, 0x066C, 0x2000, 0x002D, 0x200A, 0x2018, 0x2019, 0x202F, 0x205F, 0x3000, 0xFF07, 0x005D, 0x0000};
-
-static const UChar gStrictDashEquivalentsPattern[] = {
-        // [       \      -      MINUS     ]
-        0x005B, 0x005C, 0x002D, 0x2212, 0x005D, 0x0000};
-
-static const UChar32 gMinusSigns[] = {
-    0x002D,
-    0x207B,
-    0x208B,
-    0x2212,
-    0x2796,
-    0xFE63,
-    0xFF0D};
-
-static const UChar32 gPlusSigns[] = {
-    0x002B,
-    0x207A,
-    0x208A,
-    0x2795,
-    0xfB29,
-    0xFE62,
-    0xFF0B};
-
-static void initUnicodeSet(const UChar32 *raw, int32_t len, UnicodeSet *s) {
-    for (int32_t i = 0; i < len; ++i) {
-        s->add(raw[i]);
-    }
-}
-
-DecimalFormatStaticSets::DecimalFormatStaticSets(UErrorCode &status)
-: fDotEquivalents(NULL),
-  fCommaEquivalents(NULL),
-  fOtherGroupingSeparators(NULL),
-  fDashEquivalents(NULL),
-  fStrictDotEquivalents(NULL),
-  fStrictCommaEquivalents(NULL),
-  fStrictOtherGroupingSeparators(NULL),
-  fStrictDashEquivalents(NULL),
-  fDefaultGroupingSeparators(NULL),
-  fStrictDefaultGroupingSeparators(NULL),
-  fMinusSigns(NULL),
-  fPlusSigns(NULL)
-{
-    fDotEquivalents                = new UnicodeSet(UnicodeString(TRUE, gDotEquivalentsPattern, -1),                status);
-    fCommaEquivalents              = new UnicodeSet(UnicodeString(TRUE, gCommaEquivalentsPattern, -1),              status);
-    fOtherGroupingSeparators       = new UnicodeSet(UnicodeString(TRUE, gOtherGroupingSeparatorsPattern, -1),       status);
-    fDashEquivalents               = new UnicodeSet(UnicodeString(TRUE, gDashEquivalentsPattern, -1),               status);
-    
-    fStrictDotEquivalents          = new UnicodeSet(UnicodeString(TRUE, gStrictDotEquivalentsPattern, -1),          status);
-    fStrictCommaEquivalents        = new UnicodeSet(UnicodeString(TRUE, gStrictCommaEquivalentsPattern, -1),        status);
-    fStrictOtherGroupingSeparators = new UnicodeSet(UnicodeString(TRUE, gStrictOtherGroupingSeparatorsPattern, -1), status);
-    fStrictDashEquivalents         = new UnicodeSet(UnicodeString(TRUE, gStrictDashEquivalentsPattern, -1),         status);
-
-
-    fDefaultGroupingSeparators = new UnicodeSet(*fDotEquivalents);
-    fDefaultGroupingSeparators->addAll(*fCommaEquivalents);
-    fDefaultGroupingSeparators->addAll(*fOtherGroupingSeparators);
-
-    fStrictDefaultGroupingSeparators = new UnicodeSet(*fStrictDotEquivalents);
-    fStrictDefaultGroupingSeparators->addAll(*fStrictCommaEquivalents);
-    fStrictDefaultGroupingSeparators->addAll(*fStrictOtherGroupingSeparators);
-
-    fMinusSigns = new UnicodeSet();
-    fPlusSigns = new UnicodeSet();
-
-    // Check for null pointers
-    if (fDotEquivalents == NULL || fCommaEquivalents == NULL || fOtherGroupingSeparators == NULL || fDashEquivalents == NULL ||
-        fStrictDotEquivalents == NULL || fStrictCommaEquivalents == NULL || fStrictOtherGroupingSeparators == NULL || fStrictDashEquivalents == NULL ||
-        fDefaultGroupingSeparators == NULL || fStrictOtherGroupingSeparators == NULL ||
-        fMinusSigns == NULL || fPlusSigns == NULL) {
-      cleanup();
-      status = U_MEMORY_ALLOCATION_ERROR;
-      return;
-    }
-
-    initUnicodeSet(
-            gMinusSigns,
-            UPRV_LENGTHOF(gMinusSigns),
-            fMinusSigns);
-    initUnicodeSet(
-            gPlusSigns,
-            UPRV_LENGTHOF(gPlusSigns),
-            fPlusSigns);
-
-    // Freeze all the sets
-    fDotEquivalents->freeze();
-    fCommaEquivalents->freeze();
-    fOtherGroupingSeparators->freeze();
-    fDashEquivalents->freeze();
-    fStrictDotEquivalents->freeze();
-    fStrictCommaEquivalents->freeze();
-    fStrictOtherGroupingSeparators->freeze();
-    fStrictDashEquivalents->freeze();
-    fDefaultGroupingSeparators->freeze();
-    fStrictDefaultGroupingSeparators->freeze();
-    fMinusSigns->freeze();
-    fPlusSigns->freeze();
-}
-
-DecimalFormatStaticSets::~DecimalFormatStaticSets() {
-  cleanup();
-}
-
-void DecimalFormatStaticSets::cleanup() { // Be sure to clean up newly added fields!
-    delete fDotEquivalents; fDotEquivalents = NULL;
-    delete fCommaEquivalents; fCommaEquivalents = NULL;
-    delete fOtherGroupingSeparators; fOtherGroupingSeparators = NULL;
-    delete fDashEquivalents; fDashEquivalents = NULL;
-    delete fStrictDotEquivalents; fStrictDotEquivalents = NULL;
-    delete fStrictCommaEquivalents; fStrictCommaEquivalents = NULL;
-    delete fStrictOtherGroupingSeparators; fStrictOtherGroupingSeparators = NULL;
-    delete fStrictDashEquivalents; fStrictDashEquivalents = NULL;
-    delete fDefaultGroupingSeparators; fDefaultGroupingSeparators = NULL;
-    delete fStrictDefaultGroupingSeparators; fStrictDefaultGroupingSeparators = NULL;
-    delete fStrictOtherGroupingSeparators; fStrictOtherGroupingSeparators = NULL;
-    delete fMinusSigns; fMinusSigns = NULL;
-    delete fPlusSigns; fPlusSigns = NULL;
-}
-
-static DecimalFormatStaticSets *gStaticSets;
-static icu::UInitOnce gStaticSetsInitOnce = U_INITONCE_INITIALIZER;
-
-
-//------------------------------------------------------------------------------
-//
-//   decfmt_cleanup     Memory cleanup function, free/delete all
-//                      cached memory.  Called by ICU's u_cleanup() function.
-//
-//------------------------------------------------------------------------------
-U_CDECL_BEGIN
-static UBool U_CALLCONV
-decimfmt_cleanup(void)
-{
-    delete gStaticSets;
-    gStaticSets = NULL;
-    gStaticSetsInitOnce.reset();
-    return TRUE;
-}
-
-static void U_CALLCONV initSets(UErrorCode &status) {
-    U_ASSERT(gStaticSets == NULL);
-    ucln_i18n_registerCleanup(UCLN_I18N_DECFMT, decimfmt_cleanup);
-    gStaticSets = new DecimalFormatStaticSets(status);
-    if (U_FAILURE(status)) {
-        delete gStaticSets;
-        gStaticSets = NULL;
-        return;
-    }
-    if (gStaticSets == NULL) {
-        status = U_MEMORY_ALLOCATION_ERROR;
-    }
-}
-U_CDECL_END
-
-const DecimalFormatStaticSets *DecimalFormatStaticSets::getStaticSets(UErrorCode &status) {
-    umtx_initOnce(gStaticSetsInitOnce, initSets, status);
-    return gStaticSets;
-}
-
-
-const UnicodeSet *DecimalFormatStaticSets::getSimilarDecimals(UChar32 decimal, UBool strictParse)
-{
-    UErrorCode status = U_ZERO_ERROR;
-    umtx_initOnce(gStaticSetsInitOnce, initSets, status);
-    if (U_FAILURE(status)) {
-        return NULL;
-    }
-
-    if (gStaticSets->fDotEquivalents->contains(decimal)) {
-        return strictParse ? gStaticSets->fStrictDotEquivalents : gStaticSets->fDotEquivalents;
-    }
-
-    if (gStaticSets->fCommaEquivalents->contains(decimal)) {
-        return strictParse ? gStaticSets->fStrictCommaEquivalents : gStaticSets->fCommaEquivalents;
-    }
-
-    // if there is no match, return NULL
-    return NULL;
-}
-
-
-U_NAMESPACE_END
-#endif   // !UCONFIG_NO_FORMATTING