Home | History | Annotate | Download | only in i18n
      1 /*
      2 ******************************************************************************
      3 *                                                                            *
      4 * Copyright (C) 2001-2009, International Business Machines                   *
      5 *                Corporation and others. All Rights Reserved.                *
      6 *                                                                            *
      7 ******************************************************************************
      8 *   file name:  ucln_in.c
      9 *   encoding:   US-ASCII
     10 *   tab size:   8 (not used)
     11 *   indentation:4
     12 *
     13 *   created on: 2001July05
     14 *   created by: George Rhoten
     15 */
     16 
     17 #include "ucln.h"
     18 #include "ucln_in.h"
     19 #include "uassert.h"
     20 
     21 /**  Auto-client for UCLN_I18N **/
     22 #define UCLN_TYPE UCLN_I18N
     23 #include "ucln_imp.h"
     24 
     25 /* Leave this copyright notice here! It needs to go somewhere in this library. */
     26 static const char copyright[] = U_COPYRIGHT_STRING;
     27 
     28 static cleanupFunc *gCleanupFunctions[UCLN_I18N_COUNT];
     29 
     30 static UBool i18n_cleanup(void)
     31 {
     32     ECleanupI18NType libType = UCLN_I18N_START;
     33 
     34     while (++libType<UCLN_I18N_COUNT) {
     35         if (gCleanupFunctions[libType])
     36         {
     37             gCleanupFunctions[libType]();
     38             gCleanupFunctions[libType] = NULL;
     39         }
     40     }
     41 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
     42     ucln_unRegisterAutomaticCleanup();
     43 #endif
     44     return TRUE;
     45 }
     46 
     47 void ucln_i18n_registerCleanup(ECleanupI18NType type,
     48                                cleanupFunc *func)
     49 {
     50     U_ASSERT(UCLN_I18N_START < type && type < UCLN_I18N_COUNT);
     51     ucln_registerCleanup(UCLN_I18N, i18n_cleanup);
     52     if (UCLN_I18N_START < type && type < UCLN_I18N_COUNT)
     53     {
     54         gCleanupFunctions[type] = func;
     55     }
     56 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
     57     ucln_registerAutomaticCleanup();
     58 #endif
     59 }
     60 
     61