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