intl/icu/source/common/unicode/uversion.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 *   Copyright (C) 2000-2011, International Business Machines
     4 *   Corporation and others.  All Rights Reserved.
     5 *******************************************************************************
     6 *
     7 *   file name:  uversion.h
     8 *   encoding:   US-ASCII
     9 *   tab size:   8 (not used)
    10 *   indentation:4
    11 *
    12 *   Created by: Vladimir Weinstein
    13 *
    14 *  Gets included by utypes.h and Windows .rc files
    15 */
    17 /**
    18  * \file
    19  * \brief C API: API for accessing ICU version numbers. 
    20  */
    21 /*===========================================================================*/
    22 /* Main ICU version information                                              */
    23 /*===========================================================================*/
    25 #ifndef UVERSION_H
    26 #define UVERSION_H
    28 #include "unicode/umachine.h"
    30 /* Actual version info lives in uvernum.h */
    31 #include "unicode/uvernum.h"
    33 /** Maximum length of the copyright string.
    34  *  @stable ICU 2.4
    35  */
    36 #define U_COPYRIGHT_STRING_LENGTH  128
    38 /** An ICU version consists of up to 4 numbers from 0..255.
    39  *  @stable ICU 2.4
    40  */
    41 #define U_MAX_VERSION_LENGTH 4
    43 /** In a string, ICU version fields are delimited by dots.
    44  *  @stable ICU 2.4
    45  */
    46 #define U_VERSION_DELIMITER '.'
    48 /** The maximum length of an ICU version string.
    49  *  @stable ICU 2.4
    50  */
    51 #define U_MAX_VERSION_STRING_LENGTH 20
    53 /** The binary form of a version on ICU APIs is an array of 4 uint8_t.
    54  *  To compare two versions, use memcmp(v1,v2,sizeof(UVersionInfo)).
    55  *  @stable ICU 2.4
    56  */
    57 typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
    59 /*===========================================================================*/
    60 /* C++ namespace if supported. Versioned unless versioning is disabled.      */
    61 /*===========================================================================*/
    63 /**
    64  * \def U_NAMESPACE_BEGIN
    65  * This is used to begin a declaration of a public ICU C++ API.
    66  * When not compiling for C++, it does nothing.
    67  * When compiling for C++, it begins an extern "C++" linkage block (to protect
    68  * against cases in which an external client includes ICU header files inside
    69  * an extern "C" linkage block).
    70  *
    71  * It also begins a versioned-ICU-namespace block.
    72  * @stable ICU 2.4
    73  */
    75 /**
    76  * \def U_NAMESPACE_END
    77  * This is used to end a declaration of a public ICU C++ API.
    78  * When not compiling for C++, it does nothing.
    79  * When compiling for C++, it ends the extern "C++" block begun by
    80  * U_NAMESPACE_BEGIN.
    81  *
    82  * It also ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN.
    83  * @stable ICU 2.4
    84  */
    86 /**
    87  * \def U_NAMESPACE_USE
    88  * This is used to specify that the rest of the code uses the
    89  * public ICU C++ API namespace.
    90  * This is invoked by default; we recommend that you turn it off:
    91  * See the "Recommended Build Options" section of the ICU4C readme
    92  * (http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild)
    93  * @stable ICU 2.4
    94  */
    96 /**
    97  * \def U_NAMESPACE_QUALIFIER
    98  * This is used to qualify that a function or class is part of
    99  * the public ICU C++ API namespace.
   100  *
   101  * This macro is unnecessary since ICU 49 requires namespace support.
   102  * You can just use "icu::" instead.
   103  * @stable ICU 2.4
   104  */
   106 /* Define namespace symbols if the compiler supports it. */
   107 #ifdef __cplusplus
   108 #   if U_DISABLE_RENAMING
   109 #       define U_ICU_NAMESPACE icu
   110         namespace U_ICU_NAMESPACE { }
   111 #   else
   112 #       define U_ICU_NAMESPACE U_ICU_ENTRY_POINT_RENAME(icu)
   113         namespace U_ICU_NAMESPACE { }
   114         namespace icu = U_ICU_NAMESPACE;
   115 #   endif
   117 #   define U_NAMESPACE_BEGIN extern "C++" { namespace U_ICU_NAMESPACE {
   118 #   define U_NAMESPACE_END } }
   119 #   define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE;
   120 #   define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
   122 #   ifndef U_USING_ICU_NAMESPACE
   123 #       define U_USING_ICU_NAMESPACE 1
   124 #   endif
   125 #   if U_USING_ICU_NAMESPACE
   126         U_NAMESPACE_USE
   127 #   endif
   128 #else
   129 #   define U_NAMESPACE_BEGIN
   130 #   define U_NAMESPACE_END
   131 #   define U_NAMESPACE_USE
   132 #   define U_NAMESPACE_QUALIFIER
   133 #endif
   135 /*===========================================================================*/
   136 /* General version helper functions. Definitions in putil.c                  */
   137 /*===========================================================================*/
   139 /**
   140  * Parse a string with dotted-decimal version information and
   141  * fill in a UVersionInfo structure with the result.
   142  * Definition of this function lives in putil.c
   143  *
   144  * @param versionArray The destination structure for the version information.
   145  * @param versionString A string with dotted-decimal version information,
   146  *                      with up to four non-negative number fields with
   147  *                      values of up to 255 each.
   148  * @stable ICU 2.4
   149  */
   150 U_STABLE void U_EXPORT2
   151 u_versionFromString(UVersionInfo versionArray, const char *versionString);
   153 /**
   154  * Parse a Unicode string with dotted-decimal version information and
   155  * fill in a UVersionInfo structure with the result.
   156  * Definition of this function lives in putil.c
   157  *
   158  * @param versionArray The destination structure for the version information.
   159  * @param versionString A Unicode string with dotted-decimal version
   160  *                      information, with up to four non-negative number
   161  *                      fields with values of up to 255 each.
   162  * @stable ICU 4.2
   163  */
   164 U_STABLE void U_EXPORT2
   165 u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);
   168 /**
   169  * Write a string with dotted-decimal version information according
   170  * to the input UVersionInfo.
   171  * Definition of this function lives in putil.c
   172  *
   173  * @param versionArray The version information to be written as a string.
   174  * @param versionString A string buffer that will be filled in with
   175  *                      a string corresponding to the numeric version
   176  *                      information in versionArray.
   177  *                      The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
   178  * @stable ICU 2.4
   179  */
   180 U_STABLE void U_EXPORT2
   181 u_versionToString(const UVersionInfo versionArray, char *versionString);
   183 /**
   184  * Gets the ICU release version.  The version array stores the version information
   185  * for ICU.  For example, release "1.3.31.2" is then represented as 0x01031F02.
   186  * Definition of this function lives in putil.c
   187  *
   188  * @param versionArray the version # information, the result will be filled in
   189  * @stable ICU 2.0
   190  */
   191 U_STABLE void U_EXPORT2
   192 u_getVersion(UVersionInfo versionArray);
   193 #endif

mercurial