1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker /* 4*0e209d39SAndroid Build Coastguard Worker ****************************************************************************** 5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2001-2015, International Business Machines 6*0e209d39SAndroid Build Coastguard Worker * Corporation and others. All Rights Reserved. 7*0e209d39SAndroid Build Coastguard Worker ****************************************************************************** 8*0e209d39SAndroid Build Coastguard Worker * file name: uinit.cpp 9*0e209d39SAndroid Build Coastguard Worker * encoding: UTF-8 10*0e209d39SAndroid Build Coastguard Worker * tab size: 8 (not used) 11*0e209d39SAndroid Build Coastguard Worker * indentation:4 12*0e209d39SAndroid Build Coastguard Worker * 13*0e209d39SAndroid Build Coastguard Worker * created on: 2001July05 14*0e209d39SAndroid Build Coastguard Worker * created by: George Rhoten 15*0e209d39SAndroid Build Coastguard Worker */ 16*0e209d39SAndroid Build Coastguard Worker 17*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 18*0e209d39SAndroid Build Coastguard Worker #include "unicode/icuplug.h" 19*0e209d39SAndroid Build Coastguard Worker #include "unicode/uclean.h" 20*0e209d39SAndroid Build Coastguard Worker #include "cmemory.h" 21*0e209d39SAndroid Build Coastguard Worker #include "icuplugimp.h" 22*0e209d39SAndroid Build Coastguard Worker #include "ucln_cmn.h" 23*0e209d39SAndroid Build Coastguard Worker #include "ucnv_io.h" 24*0e209d39SAndroid Build Coastguard Worker #include "umutex.h" 25*0e209d39SAndroid Build Coastguard Worker #include "utracimp.h" 26*0e209d39SAndroid Build Coastguard Worker 27*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 28*0e209d39SAndroid Build Coastguard Worker 29*0e209d39SAndroid Build Coastguard Worker static UInitOnce gICUInitOnce {}; 30*0e209d39SAndroid Build Coastguard Worker uinit_cleanup()31*0e209d39SAndroid Build Coastguard Workerstatic UBool U_CALLCONV uinit_cleanup() { 32*0e209d39SAndroid Build Coastguard Worker gICUInitOnce.reset(); 33*0e209d39SAndroid Build Coastguard Worker return true; 34*0e209d39SAndroid Build Coastguard Worker } 35*0e209d39SAndroid Build Coastguard Worker 36*0e209d39SAndroid Build Coastguard Worker static void U_CALLCONV initData(UErrorCode & status)37*0e209d39SAndroid Build Coastguard WorkerinitData(UErrorCode &status) 38*0e209d39SAndroid Build Coastguard Worker { 39*0e209d39SAndroid Build Coastguard Worker #if UCONFIG_ENABLE_PLUGINS 40*0e209d39SAndroid Build Coastguard Worker /* initialize plugins */ 41*0e209d39SAndroid Build Coastguard Worker uplug_init(&status); 42*0e209d39SAndroid Build Coastguard Worker #endif 43*0e209d39SAndroid Build Coastguard Worker 44*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_CONVERSION 45*0e209d39SAndroid Build Coastguard Worker /* 46*0e209d39SAndroid Build Coastguard Worker * 2005-may-02 47*0e209d39SAndroid Build Coastguard Worker * 48*0e209d39SAndroid Build Coastguard Worker * ICU4C 3.4 (jitterbug 4497) hardcodes the data for Unicode character 49*0e209d39SAndroid Build Coastguard Worker * properties for APIs that want to be fast. 50*0e209d39SAndroid Build Coastguard Worker * Therefore, we need not load them here nor check for errors. 51*0e209d39SAndroid Build Coastguard Worker * Instead, we load the converter alias table to see if any ICU data 52*0e209d39SAndroid Build Coastguard Worker * is available. 53*0e209d39SAndroid Build Coastguard Worker * Users should really open the service objects they need and check 54*0e209d39SAndroid Build Coastguard Worker * for errors there, to make sure that the actual items they need are 55*0e209d39SAndroid Build Coastguard Worker * available. 56*0e209d39SAndroid Build Coastguard Worker */ 57*0e209d39SAndroid Build Coastguard Worker ucnv_io_countKnownConverters(&status); 58*0e209d39SAndroid Build Coastguard Worker #endif 59*0e209d39SAndroid Build Coastguard Worker ucln_common_registerCleanup(UCLN_COMMON_UINIT, uinit_cleanup); 60*0e209d39SAndroid Build Coastguard Worker } 61*0e209d39SAndroid Build Coastguard Worker 62*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 63*0e209d39SAndroid Build Coastguard Worker 64*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_USE 65*0e209d39SAndroid Build Coastguard Worker 66*0e209d39SAndroid Build Coastguard Worker /* 67*0e209d39SAndroid Build Coastguard Worker * ICU Initialization Function. Need not be called. 68*0e209d39SAndroid Build Coastguard Worker */ 69*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 u_init(UErrorCode * status)70*0e209d39SAndroid Build Coastguard Workeru_init(UErrorCode *status) { 71*0e209d39SAndroid Build Coastguard Worker UTRACE_ENTRY_OC(UTRACE_U_INIT); 72*0e209d39SAndroid Build Coastguard Worker umtx_initOnce(gICUInitOnce, &initData, *status); 73*0e209d39SAndroid Build Coastguard Worker UTRACE_EXIT_STATUS(*status); 74*0e209d39SAndroid Build Coastguard Worker } 75