Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(272)

Side by Side Diff: source/common/ucln_cmn.c

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/common/ucln_cmn.h ('k') | source/common/ucln_cmn.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 ******************************************************************************
3 * Copyright (C) 2001-2013, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 ******************************************************************************
6 * file name: ucln_cmn.c
7 * encoding: US-ASCII
8 * tab size: 8 (not used)
9 * indentation:4
10 *
11 * created on: 2001July05
12 * created by: George Rhoten
13 */
14
15 #include "unicode/utypes.h"
16 #include "unicode/uclean.h"
17 #include "utracimp.h"
18 #include "ucln_cmn.h"
19 #include "cmutex.h"
20 #include "ucln.h"
21 #include "cmemory.h"
22 #include "uassert.h"
23
24 /** Auto-client for UCLN_COMMON **/
25 #define UCLN_TYPE_IS_COMMON
26 #include "ucln_imp.h"
27
28 static cleanupFunc *gCommonCleanupFunctions[UCLN_COMMON_COUNT];
29 static cleanupFunc *gLibCleanupFunctions[UCLN_COMMON];
30
31
32 /************************************************
33 The cleanup order is important in this function.
34 Please be sure that you have read ucln.h
35 ************************************************/
36 U_CAPI void U_EXPORT2
37 u_cleanup(void)
38 {
39 UTRACE_ENTRY_OC(UTRACE_U_CLEANUP);
40 umtx_lock(NULL); /* Force a memory barrier, so that we are sure to see */
41 umtx_unlock(NULL); /* all state left around by any other threads. */
42
43 ucln_lib_cleanup();
44
45 cmemory_cleanup(); /* undo any heap functions set by u_setMemoryFuncti ons(). */
46 UTRACE_EXIT(); /* Must be before utrace_cleanup(), which turns off tracing. */
47 /*#if U_ENABLE_TRACING*/
48 utrace_cleanup();
49 /*#endif*/
50 }
51
52 U_CAPI void U_EXPORT2 ucln_cleanupOne(ECleanupLibraryType libType)
53 {
54 if (gLibCleanupFunctions[libType])
55 {
56 gLibCleanupFunctions[libType]();
57 gLibCleanupFunctions[libType] = NULL;
58 }
59 }
60
61 U_CFUNC void
62 ucln_common_registerCleanup(ECleanupCommonType type,
63 cleanupFunc *func)
64 {
65 U_ASSERT(UCLN_COMMON_START < type && type < UCLN_COMMON_COUNT);
66 if (UCLN_COMMON_START < type && type < UCLN_COMMON_COUNT)
67 {
68 gCommonCleanupFunctions[type] = func;
69 }
70 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOC AL))
71 ucln_registerAutomaticCleanup();
72 #endif
73 }
74
75 U_CAPI void U_EXPORT2
76 ucln_registerCleanup(ECleanupLibraryType type,
77 cleanupFunc *func)
78 {
79 U_ASSERT(UCLN_START < type && type < UCLN_COMMON);
80 if (UCLN_START < type && type < UCLN_COMMON)
81 {
82 gLibCleanupFunctions[type] = func;
83 }
84 }
85
86 U_CFUNC UBool ucln_lib_cleanup(void) {
87 ECleanupLibraryType libType = UCLN_START;
88 ECleanupCommonType commonFunc = UCLN_COMMON_START;
89
90 for (libType++; libType<UCLN_COMMON; libType++) {
91 ucln_cleanupOne(libType);
92 }
93
94 for (commonFunc++; commonFunc<UCLN_COMMON_COUNT; commonFunc++) {
95 if (gCommonCleanupFunctions[commonFunc])
96 {
97 gCommonCleanupFunctions[commonFunc]();
98 gCommonCleanupFunctions[commonFunc] = NULL;
99 }
100 }
101 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOC AL))
102 ucln_unRegisterAutomaticCleanup();
103 #endif
104 return TRUE;
105 }
OLDNEW
« no previous file with comments | « source/common/ucln_cmn.h ('k') | source/common/ucln_cmn.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698