2
*******************************************************************************
3
* Copyright (C) 2000-2010, International Business Machines
4
* Corporation and others. All Rights Reserved.
5
*******************************************************************************
7
* file name: uversion.h
9
* tab size: 8 (not used)
12
* Created by: Vladimir Weinstein
14
* Gets included by utypes.h and Windows .rc files
19
* \brief C API: API for accessing ICU version numbers.
21
/*===========================================================================*/
22
/* Main ICU version information */
23
/*===========================================================================*/
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.
36
#define U_COPYRIGHT_STRING_LENGTH 128
38
/** An ICU version consists of up to 4 numbers from 0..255.
41
#define U_MAX_VERSION_LENGTH 4
43
/** In a string, ICU version fields are delimited by dots.
46
#define U_VERSION_DELIMITER '.'
48
/** The maximum length of an ICU version string.
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)).
57
typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
59
/*===========================================================================*/
60
/* C++ namespace if supported. Versioned unless versioning is disabled. */
61
/*===========================================================================*/
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
* If the C++ compiler supports namespaces, it also begins a namespace block.
75
* \def U_NAMESPACE_END
76
* This is used to end a declaration of a public ICU C++ API.
77
* When not compiling for C++, it does nothing.
78
* When compiling for C++, it ends the extern "C++" block begun by
80
* If the C++ compiler supports namespaces, it also ends the namespace block
81
* begun by U_NAMESPACE_BEGIN.
86
* \def U_NAMESPACE_USE
87
* This is used to specify that the rest of the code uses the
88
* public ICU C++ API namespace.
89
* If the compiler doesn't support namespaces, this does nothing.
94
* \def U_NAMESPACE_QUALIFIER
95
* This is used to qualify that a function or class is part of
96
* the public ICU C++ API namespace.
97
* If the compiler doesn't support namespaces, this does nothing.
101
/* Define namespace symbols if the compiler supports it. */
104
# if U_DISABLE_RENAMING
105
# define U_ICU_NAMESPACE icu
106
namespace U_ICU_NAMESPACE { }
108
# define U_ICU_NAMESPACE U_ICU_ENTRY_POINT_RENAME(icu)
109
namespace U_ICU_NAMESPACE { }
110
namespace icu = U_ICU_NAMESPACE;
113
# define U_NAMESPACE_BEGIN extern "C++" { namespace U_ICU_NAMESPACE {
114
# define U_NAMESPACE_END } }
115
# define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE;
116
# define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
118
# ifndef U_USING_ICU_NAMESPACE
119
# define U_USING_ICU_NAMESPACE 1
121
# if U_USING_ICU_NAMESPACE
125
# define U_NAMESPACE_BEGIN extern "C++" {
126
# define U_NAMESPACE_END }
127
# define U_NAMESPACE_USE
128
# define U_NAMESPACE_QUALIFIER
131
# define U_NAMESPACE_BEGIN
132
# define U_NAMESPACE_END
133
# define U_NAMESPACE_USE
134
# define U_NAMESPACE_QUALIFIER
137
/*===========================================================================*/
138
/* General version helper functions. Definitions in putil.c */
139
/*===========================================================================*/
142
* Parse a string with dotted-decimal version information and
143
* fill in a UVersionInfo structure with the result.
144
* Definition of this function lives in putil.c
146
* @param versionArray The destination structure for the version information.
147
* @param versionString A string with dotted-decimal version information,
148
* with up to four non-negative number fields with
149
* values of up to 255 each.
152
U_STABLE void U_EXPORT2
153
u_versionFromString(UVersionInfo versionArray, const char *versionString);
156
* Parse a Unicode string with dotted-decimal version information and
157
* fill in a UVersionInfo structure with the result.
158
* Definition of this function lives in putil.c
160
* @param versionArray The destination structure for the version information.
161
* @param versionString A Unicode string with dotted-decimal version
162
* information, with up to four non-negative number
163
* fields with values of up to 255 each.
166
U_STABLE void U_EXPORT2
167
u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);
171
* Write a string with dotted-decimal version information according
172
* to the input UVersionInfo.
173
* Definition of this function lives in putil.c
175
* @param versionArray The version information to be written as a string.
176
* @param versionString A string buffer that will be filled in with
177
* a string corresponding to the numeric version
178
* information in versionArray.
179
* The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
182
U_STABLE void U_EXPORT2
183
u_versionToString(UVersionInfo versionArray, char *versionString);
186
* Gets the ICU release version. The version array stores the version information
187
* for ICU. For example, release "1.3.31.2" is then represented as 0x01031F02.
188
* Definition of this function lives in putil.c
190
* @param versionArray the version # information, the result will be filled in
193
U_STABLE void U_EXPORT2
194
u_getVersion(UVersionInfo versionArray);