intl/icu/source/common/unicode/putil.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2 ******************************************************************************
     3 *
     4 *   Copyright (C) 1997-2011, International Business Machines
     5 *   Corporation and others.  All Rights Reserved.
     6 *
     7 ******************************************************************************
     8 *
     9 *  FILE NAME : putil.h
    10 *
    11 *   Date        Name        Description
    12 *   05/14/98    nos         Creation (content moved here from utypes.h).
    13 *   06/17/99    erm         Added IEEE_754
    14 *   07/22/98    stephen     Added IEEEremainder, max, min, trunc
    15 *   08/13/98    stephen     Added isNegativeInfinity, isPositiveInfinity
    16 *   08/24/98    stephen     Added longBitsFromDouble
    17 *   03/02/99    stephen     Removed openFile().  Added AS400 support.
    18 *   04/15/99    stephen     Converted to C
    19 *   11/15/99    helena      Integrated S/390 changes for IEEE support.
    20 *   01/11/00    helena      Added u_getVersion.
    21 ******************************************************************************
    22 */
    24 #ifndef PUTIL_H
    25 #define PUTIL_H
    27 #include "unicode/utypes.h"
    28  /**
    29   * \file
    30   * \brief C API: Platform Utilities
    31   */
    33 /*==========================================================================*/
    34 /* Platform utilities                                                       */
    35 /*==========================================================================*/
    37 /**
    38  * Platform utilities isolates the platform dependencies of the
    39  * libarary.  For each platform which this code is ported to, these
    40  * functions may have to be re-implemented.
    41  */
    43 /**
    44  * Return the ICU data directory. 
    45  * The data directory is where common format ICU data files (.dat files)
    46  *   are loaded from.  Note that normal use of the built-in ICU
    47  *   facilities does not require loading of an external data file;
    48  *   unless you are adding custom data to ICU, the data directory
    49  *   does not need to be set.
    50  *
    51  * The data directory is determined as follows:
    52  *    If u_setDataDirectory() has been called, that is it, otherwise
    53  *    if the ICU_DATA environment variable is set, use that, otherwise
    54  *    If a data directory was specifed at ICU build time
    55  *      <code>
    56  * \code
    57  *        #define ICU_DATA_DIR "path" 
    58  * \endcode
    59  * </code> use that,
    60  *    otherwise no data directory is available.
    61  *
    62  * @return the data directory, or an empty string ("") if no data directory has
    63  *         been specified.
    64  *   
    65  * @stable ICU 2.0
    66  */
    67 U_STABLE const char* U_EXPORT2 u_getDataDirectory(void);
    69 /** 
    70  * Set the ICU data directory. 
    71  * The data directory is where common format ICU data files (.dat files)
    72  *   are loaded from.  Note that normal use of the built-in ICU
    73  *   facilities does not require loading of an external data file;
    74  *   unless you are adding custom data to ICU, the data directory
    75  *   does not need to be set.
    76  *
    77  * This function should be called at most once in a process, before the
    78  * first ICU operation (e.g., u_init()) that will require the loading of an
    79  * ICU data file.
    80  * This function is not thread-safe. Use it before calling ICU APIs from
    81  * multiple threads.
    82  *
    83  * @param directory The directory to be set.
    84  *
    85  * @see u_init
    86  * @stable ICU 2.0
    87  */
    88 U_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory);
    90 /**
    91  * @{
    92  * Filesystem file and path separator characters.
    93  * Example: '/' and ':' on Unix, '\\' and ';' on Windows.
    94  * @stable ICU 2.0
    95  */
    96 #if U_PLATFORM == U_PF_CLASSIC_MACOS
    97 #   define U_FILE_SEP_CHAR ':'
    98 #   define U_FILE_ALT_SEP_CHAR ':'
    99 #   define U_PATH_SEP_CHAR ';'
   100 #   define U_FILE_SEP_STRING ":"
   101 #   define U_FILE_ALT_SEP_STRING ":"
   102 #   define U_PATH_SEP_STRING ";"
   103 #elif U_PLATFORM_USES_ONLY_WIN32_API
   104 #   define U_FILE_SEP_CHAR '\\'
   105 #   define U_FILE_ALT_SEP_CHAR '/'
   106 #   define U_PATH_SEP_CHAR ';'
   107 #   define U_FILE_SEP_STRING "\\"
   108 #   define U_FILE_ALT_SEP_STRING "/"
   109 #   define U_PATH_SEP_STRING ";"
   110 #else
   111 #   define U_FILE_SEP_CHAR '/'
   112 #   define U_FILE_ALT_SEP_CHAR '/'
   113 #   define U_PATH_SEP_CHAR ':'
   114 #   define U_FILE_SEP_STRING "/"
   115 #   define U_FILE_ALT_SEP_STRING "/"
   116 #   define U_PATH_SEP_STRING ":"
   117 #endif
   119 /** @} */
   121 /**
   122  * Convert char characters to UChar characters.
   123  * This utility function is useful only for "invariant characters"
   124  * that are encoded in the platform default encoding.
   125  * They are a small, constant subset of the encoding and include
   126  * just the latin letters, digits, and some punctuation.
   127  * For details, see U_CHARSET_FAMILY.
   128  *
   129  * @param cs Input string, points to <code>length</code>
   130  *           character bytes from a subset of the platform encoding.
   131  * @param us Output string, points to memory for <code>length</code>
   132  *           Unicode characters.
   133  * @param length The number of characters to convert; this may
   134  *               include the terminating <code>NUL</code>.
   135  *
   136  * @see U_CHARSET_FAMILY
   137  * @stable ICU 2.0
   138  */
   139 U_STABLE void U_EXPORT2
   140 u_charsToUChars(const char *cs, UChar *us, int32_t length);
   142 /**
   143  * Convert UChar characters to char characters.
   144  * This utility function is useful only for "invariant characters"
   145  * that can be encoded in the platform default encoding.
   146  * They are a small, constant subset of the encoding and include
   147  * just the latin letters, digits, and some punctuation.
   148  * For details, see U_CHARSET_FAMILY.
   149  *
   150  * @param us Input string, points to <code>length</code>
   151  *           Unicode characters that can be encoded with the
   152  *           codepage-invariant subset of the platform encoding.
   153  * @param cs Output string, points to memory for <code>length</code>
   154  *           character bytes.
   155  * @param length The number of characters to convert; this may
   156  *               include the terminating <code>NUL</code>.
   157  *
   158  * @see U_CHARSET_FAMILY
   159  * @stable ICU 2.0
   160  */
   161 U_STABLE void U_EXPORT2
   162 u_UCharsToChars(const UChar *us, char *cs, int32_t length);
   164 #endif

mercurial