1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************
359d709d503bab6e2b61931737e662dd293b40578ccornelius* Copyright (C) 2001-2013, International Business Machines
459d709d503bab6e2b61931737e662dd293b40578ccornelius*                Corporation and others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************
659d709d503bab6e2b61931737e662dd293b40578ccornelius*   file name:  uinit.cpp
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   encoding:   US-ASCII
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   tab size:   8 (not used)
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   indentation:4
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   created on: 2001July05
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   created by: George Rhoten
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
1627f654740f2a26ad62a5c155af9199af9e69b889claireho#include "unicode/icuplug.h"
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uclean.h"
1827f654740f2a26ad62a5c155af9199af9e69b889claireho#include "cmemory.h"
1927f654740f2a26ad62a5c155af9199af9e69b889claireho#include "icuplugimp.h"
2059d709d503bab6e2b61931737e662dd293b40578ccornelius#include "ucln_cmn.h"
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ucnv_io.h"
2259d709d503bab6e2b61931737e662dd293b40578ccornelius#include "umutex.h"
2327f654740f2a26ad62a5c155af9199af9e69b889claireho#include "utracimp.h"
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
2559d709d503bab6e2b61931737e662dd293b40578ccorneliusU_NAMESPACE_BEGIN
2659d709d503bab6e2b61931737e662dd293b40578ccornelius
2759d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic UInitOnce gICUInitOnce = U_INITONCE_INITIALIZER;
2859d709d503bab6e2b61931737e662dd293b40578ccornelius
2959d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic UBool U_CALLCONV uinit_cleanup() {
3059d709d503bab6e2b61931737e662dd293b40578ccornelius    gICUInitOnce.reset();
3159d709d503bab6e2b61931737e662dd293b40578ccornelius    return TRUE;
3259d709d503bab6e2b61931737e662dd293b40578ccornelius}
3359d709d503bab6e2b61931737e662dd293b40578ccornelius
3454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic void U_CALLCONV
3559d709d503bab6e2b61931737e662dd293b40578ccorneliusinitData(UErrorCode &status)
3654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius{
3759d709d503bab6e2b61931737e662dd293b40578ccornelius    /* initialize plugins */
3859d709d503bab6e2b61931737e662dd293b40578ccornelius    uplug_init(&status);
3959d709d503bab6e2b61931737e662dd293b40578ccornelius
4059d709d503bab6e2b61931737e662dd293b40578ccornelius#if !UCONFIG_NO_CONVERSION
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /*
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * 2005-may-02
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * ICU4C 3.4 (jitterbug 4497) hardcodes the data for Unicode character
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * properties for APIs that want to be fast.
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Therefore, we need not load them here nor check for errors.
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Instead, we load the converter alias table to see if any ICU data
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * is available.
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Users should really open the service objects they need and check
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * for errors there, to make sure that the actual items they need are
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * available.
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
5359d709d503bab6e2b61931737e662dd293b40578ccornelius    ucnv_io_countKnownConverters(&status);
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
5559d709d503bab6e2b61931737e662dd293b40578ccornelius    ucln_common_registerCleanup(UCLN_COMMON_UINIT, uinit_cleanup);
5654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius}
5754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
58fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_END
59fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
60fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_USE
61fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
6254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/*
6354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * ICU Initialization Function. Need not be called.
6454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
6554dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2
6654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusu_init(UErrorCode *status) {
6754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UTRACE_ENTRY_OC(UTRACE_U_INIT);
6859d709d503bab6e2b61931737e662dd293b40578ccornelius    umtx_initOnce(gICUInitOnce, &initData, *status);
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UTRACE_EXIT_STATUS(*status);
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
71