/*
******************************************************************************
-* *
-* Copyright (C) 2001-2004, International Business Machines *
-* Corporation and others. All Rights Reserved. *
-* *
+* Copyright (C) 2001-2013, International Business Machines
+* Corporation and others. All Rights Reserved.
******************************************************************************
* file name: uclean.h
* encoding: US-ASCII
#define __UCLEAN_H__
#include "unicode/utypes.h"
-
/**
- * Initialize ICU. This function loads and initializes data items
- * that are required internally by various ICU functions. Use of this explicit
- * initialization is required in multi-threaded applications; in
- * single threaded apps, use is optional, but incurs little additional
- * cost, and is thus recommended.
- * <p>
- * In multi-threaded applications, u_init() should be called in the
- * main thread before starting additional threads, or, alternatively
- * it can be called in each individual thread once, before other ICU
- * functions are called in that thread. In this second scenario, the
- * application must guarantee that the first call to u_init() happen
- * without contention, in a single thread only.
- * <p>
- * If <code>u_setMemoryFunctions()</code> or
- * <code>u_setMutexFunctions</code> are needed (uncommon), they must be
- * called _before_ <code>u_init()</code>.
- * <p>
- * Extra, repeated, or otherwise unneeded calls to u_init() do no harm,
- * other than taking a small amount of time.
+ * \file
+ * \brief C API: Initialize and clean up ICU
+ */
+
+/**
+ * Initialize ICU.
+ *
+ * Use of this function is optional. It is OK to simply use ICU
+ * services and functions without first having initialized
+ * ICU by calling u_init().
+ *
+ * u_init() will attempt to load some part of ICU's data, and is
+ * useful as a test for configuration or installation problems that
+ * leave the ICU data inaccessible. A successful invocation of u_init()
+ * does not, however, guarantee that all ICU data is accessible.
+ *
+ * Multiple calls to u_init() cause no harm, aside from the small amount
+ * of time required.
+ *
+ * In old versions of ICU, u_init() was required in multi-threaded applications
+ * to ensure the thread safety of ICU. u_init() is no longer needed for this purpose.
*
* @param status An ICU UErrorCode parameter. It must not be <code>NULL</code>.
* An Error will be returned if some required part of ICU data can not
U_STABLE void U_EXPORT2
u_init(UErrorCode *status);
+#ifndef U_HIDE_SYSTEM_API
/**
* Clean up the system resources, such as allocated memory or open files,
* used in all ICU libraries. This will free/delete all memory owned by the
u_cleanup(void);
+/**
+ * Pointer type for a user supplied memory allocation function.
+ * @param context user supplied value, obtained from from u_setMemoryFunctions().
+ * @param size The number of bytes to be allocated
+ * @return Pointer to the newly allocated memory, or NULL if the allocation failed.
+ * @stable ICU 2.8
+ * @system
+ */
+typedef void *U_CALLCONV UMemAllocFn(const void *context, size_t size);
+/**
+ * Pointer type for a user supplied memory re-allocation function.
+ * @param context user supplied value, obtained from from u_setMemoryFunctions().
+ * @param size The number of bytes to be allocated
+ * @return Pointer to the newly allocated memory, or NULL if the allocation failed.
+ * @stable ICU 2.8
+ * @system
+ */
+typedef void *U_CALLCONV UMemReallocFn(const void *context, void *mem, size_t size);
+/**
+ * Pointer type for a user supplied memory free function. Behavior should be
+ * similar the standard C library free().
+ * @param context user supplied value, obtained from from u_setMemoryFunctions().
+ * @param mem Pointer to the memory block to be resized
+ * @param size The new size for the block
+ * @return Pointer to the resized memory block, or NULL if the resizing failed.
+ * @stable ICU 2.8
+ * @system
+ */
+typedef void U_CALLCONV UMemFreeFn (const void *context, void *mem);
+
+/**
+ * Set the functions that ICU will use for memory allocation.
+ * Use of this function is optional; by default (without this function), ICU will
+ * use the standard C library malloc() and free() functions.
+ * This function can only be used when ICU is in an initial, unused state, before
+ * u_init() has been called.
+ * @param context This pointer value will be saved, and then (later) passed as
+ * a parameter to the memory functions each time they
+ * are called.
+ * @param a Pointer to a user-supplied malloc function.
+ * @param r Pointer to a user-supplied realloc function.
+ * @param f Pointer to a user-supplied free function.
+ * @param status Receives error values.
+ * @stable ICU 2.8
+ * @system
+ */
+U_STABLE void U_EXPORT2
+u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f,
+ UErrorCode *status);
+
+/*********************************************************************************
+ *
+ * Deprecated Functions
+ *
+ * The following functions for user supplied mutexes are no longer supported.
+ * Any attempt to use them will return a U_UNSUPPORTED_ERROR.
+ *
+ **********************************************************************************/
/**
* An opaque pointer type that represents an ICU mutex.
* For user-implemented mutexes, the value will typically point to a
* struct or object that implements the mutex.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This type is no longer supported.
* @system
*/
typedef void *UMTX;
* identify the mutex by the UMTX value.
* @param status Error status. Report errors back to ICU by setting this variable
* with an error code.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This function is no longer supported.
* @system
*/
typedef void U_CALLCONV UMtxInitFn (const void *context, UMTX *mutex, UErrorCode* status);
* whenever ICU needs to lock, unlock, or destroy a mutex.
* @param context user supplied value, obtained from from u_setMutexFunctions().
* @param mutex specify the mutex on which to operate.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This function is no longer supported.
* @system
*/
typedef void U_CALLCONV UMtxFn (const void *context, UMTX *mutex);
* directly access system functions for mutex operations
* This function can only be used when ICU is in an initial, unused state, before
* u_init() has been called.
- * This function may be used even when ICU has been built without multi-threaded
- * support (see ICU_USE_THREADS pre-processor variable, umutex.h)
* @param context This pointer value will be saved, and then (later) passed as
* a parameter to the user-supplied mutex functions each time they
* are called.
* @param lock pointer to the mutex lock function. Must be non-null.
* @param unlock Pointer to the mutex unlock function. Must be non-null.
* @param status Receives error values.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This function is no longer supported.
* @system
*/
-U_DRAFT void U_EXPORT2
+U_DEPRECATED void U_EXPORT2
u_setMutexFunctions(const void *context, UMtxInitFn *init, UMtxFn *destroy, UMtxFn *lock, UMtxFn *unlock,
UErrorCode *status);
* @param context user supplied value, obtained from from u_setAtomicIncDecFunctions().
* @param p Pointer to a 32 bit int to be incremented or decremented
* @return The value of the variable after the inc or dec operation.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This function is no longer supported.
* @system
*/
typedef int32_t U_CALLCONV UMtxAtomicFn(const void *context, int32_t *p);
* @param inc Pointer to a function to do an atomic increment operation. Must be non-null.
* @param dec Pointer to a function to do an atomic decrement operation. Must be non-null.
* @param status Receives error values.
- * @draft ICU 2.8
+ * @deprecated ICU 52. This function is no longer supported.
* @system
*/
-U_DRAFT void U_EXPORT2
+U_DEPRECATED void U_EXPORT2
u_setAtomicIncDecFunctions(const void *context, UMtxAtomicFn *inc, UMtxAtomicFn *dec,
UErrorCode *status);
-
-
-/**
- * Pointer type for a user supplied memory allocation function.
- * @param context user supplied value, obtained from from u_setMemoryFunctions().
- * @param size The number of bytes to be allocated
- * @return Pointer to the newly allocated memory, or NULL if the allocation failed.
- * @draft ICU 2.8
- * @system
- */
-typedef void *U_CALLCONV UMemAllocFn(const void *context, size_t size);
-/**
- * Pointer type for a user supplied memory re-allocation function.
- * @param context user supplied value, obtained from from u_setMemoryFunctions().
- * @param size The number of bytes to be allocated
- * @return Pointer to the newly allocated memory, or NULL if the allocation failed.
- * @draft ICU 2.8
- * @system
- */
-typedef void *U_CALLCONV UMemReallocFn(const void *context, void *mem, size_t size);
-/**
- * Pointer type for a user supplied memory free function. Behavior should be
- * similar the standard C library free().
- * @param context user supplied value, obtained from from u_setMemoryFunctions().
- * @param mem Pointer to the memory block to be resized
- * @param size The new size for the block
- * @return Pointer to the resized memory block, or NULL if the resizing failed.
- * @draft ICU 2.8
- * @system
- */
-typedef void U_CALLCONV UMemFreeFn (const void *context, void *mem);
-
-/**
- * Set the functions that ICU will use for memory allocation.
- * Use of this function is optional; by default (without this function), ICU will
- * use the standard C library malloc() and free() functions.
- * This function can only be used when ICU is in an initial, unused state, before
- * u_init() has been called.
- * @param context This pointer value will be saved, and then (later) passed as
- * a parameter to the memory functions each time they
- * are called.
- * @param a Pointer to a user-supplied malloc function.
- * @param r Pointer to a user-supplied realloc function.
- * @param f Pointer to a user-supplied free function.
- * @param status Receives error values.
- * @draft ICU 2.8
- * @system
- */
-U_DRAFT void U_EXPORT2
-u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f,
- UErrorCode *status);
+#endif /* U_HIDE_SYSTEM_API */
#endif