Wed, 31 Dec 2014 07:22:50 +0100
Correct previous dual key logic pending first delivery installment.
1 /*
2 ******************************************************************************
3 * *
4 * Copyright (C) 2001-2013, International Business Machines *
5 * Corporation and others. All Rights Reserved. *
6 * *
7 ******************************************************************************
8 * file name: ucln_io.c
9 * encoding: US-ASCII
10 * tab size: 8 (not used)
11 * indentation:4
12 *
13 * created on: 2006August11
14 * created by: George Rhoten
15 */
17 #include "ucln.h"
18 #include "ucln_io.h"
19 #include "uassert.h"
21 #ifndef U_IO_IMPLEMENTATION
22 #error U_IO_IMPLEMENTATION not set - must be set for all ICU source files in io/ - see http://userguide.icu-project.org/howtouseicu
23 #endif
26 /** Auto-client */
27 #define UCLN_TYPE UCLN_IO
28 #include "ucln_imp.h"
30 /* Leave this copyright notice here! It needs to go somewhere in this library. */
31 static const char copyright[] = U_COPYRIGHT_STRING;
33 static cleanupFunc *gCleanupFunctions[UCLN_IO_COUNT];
35 static UBool io_cleanup(void)
36 {
37 ECleanupIOType libType = UCLN_IO_START;
39 while (++libType<UCLN_IO_COUNT) {
40 if (gCleanupFunctions[libType])
41 {
42 gCleanupFunctions[libType]();
43 gCleanupFunctions[libType] = NULL;
44 }
45 }
46 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
47 ucln_unRegisterAutomaticCleanup();
48 #endif
49 return TRUE;
50 }
52 void ucln_io_registerCleanup(ECleanupIOType type,
53 cleanupFunc *func)
54 {
55 U_ASSERT(UCLN_IO_START < type && type < UCLN_IO_COUNT);
56 ucln_registerCleanup(UCLN_IO, io_cleanup);
57 if (UCLN_IO_START < type && type < UCLN_IO_COUNT)
58 {
59 gCleanupFunctions[type] = func;
60 }
62 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
63 ucln_registerAutomaticCleanup();
64 #endif
65 }