1/*
2*****************************************************************************************
3* Copyright (C) 2010 Apple Inc. All Rights Reserved.
4*****************************************************************************************
5*/
6
7#include <unicode/utypes.h>
8#include <unicode/ubrk.h>
9#include <unicode/uchar.h>
10#include <unicode/uidna.h>
11#include <unicode/uscript.h>
12#include <unicode/ustring.h>
13#include <unicode/utf8.h>
14#include <unicode/brkiter.h>
15#include <unicode/unistr.h>
16#include <unicode/locid.h>
17
18extern "C" {
19
20/*
21 * imp: common/uchar.c
22 * hdr: common/unicode/uchar.h
23 * @stable ICU 2.0
24 */
25U_CAPI int8_t U_EXPORT2
26u_charType_4_0(UChar32 c)
27{
28    return u_charType(c);
29}
30
31} // end extern "C"
32
33/*
34 * imp: common/uchar.c
35 * hdr: common/unicode/uchar.h
36 * @stable ICU 2.0
37 */
38U_CAPI UBool U_EXPORT2
39u_isUWhiteSpace_4_0(UChar32 c)
40{
41    return u_isUWhiteSpace(c);
42}
43
44/*
45 * imp: common/uchar.c
46 * hdr: common/unicode/uchar.h
47 * @stable ICU 2.0
48 */
49U_CAPI UBool U_EXPORT2
50u_isprint_4_0(UChar32 c)
51{
52    return u_isprint(c);
53}
54
55/*
56 * imp: common/uchar.c
57 * hdr: common/unicode/uchar.h
58 * @stable ICU 2.0
59 */
60U_CAPI UBool U_EXPORT2
61u_isWhitespace_4_0(UChar32 c)
62{
63    return u_isWhitespace(c);
64}
65
66/*
67 * imp: common/uchar.c
68 * hdr: common/unicode/uchar.h
69 * @stable ICU 2.0
70 */
71U_CAPI UBool U_EXPORT2
72u_isspace_4_0(UChar32 c)
73{
74    return u_isspace(c);
75}
76
77/*
78 * imp: common/ucase.c
79 * hdr: common/unicode/uchar.h
80 * @stable ICU 2.0
81 */
82U_CAPI UChar32 U_EXPORT2
83u_foldCase_4_0(UChar32 c, uint32_t options) {
84    return u_foldCase(c, options);
85}
86
87/*
88 * imp: common/uprops.cpp
89 * hdr: common/unicode/uchar.h
90 * @stable ICU 2.1
91 */
92U_CAPI UBool U_EXPORT2
93u_hasBinaryProperty_4_0(UChar32 c, UProperty which)
94{
95    return u_hasBinaryProperty(c, which);
96}
97
98/*
99 * imp: common/propname.cpp
100 * hdr: common/unicode/uchar.h
101 * @stable ICU 2.4
102 */
103U_CAPI int32_t U_EXPORT2
104u_getPropertyValueEnum_4_0(UProperty property,
105                       const char* alias)
106{
107    return u_getPropertyValueEnum(property, alias);
108}
109
110/*
111 * imp: common/uchar.c
112 * hdr: common/unicode/uscript.h
113 * @stable ICU 2.4
114 */
115U_CAPI UScriptCode  U_EXPORT2
116uscript_getScript_4_0(UChar32 codepoint, UErrorCode *err)
117
118{
119    return uscript_getScript(codepoint, err);
120}
121
122/*
123 * imp: common/ustrcase.c
124 * hdr: common/unicode/ustring.h
125 * @stable ICU 2.0
126 */
127U_CAPI int32_t U_EXPORT2
128u_memcasecmp_4_0(const UChar *s1, const UChar *s2, int32_t length, uint32_t options) {
129    return u_memcasecmp(s1, s2, length, options);
130}
131
132/*
133 * imp: common/utypes.c
134 * hdr: common/unicode/utypes.h
135 * @stable ICU 2.0
136 */
137U_CAPI const char * U_EXPORT2
138u_errorName_4_0(UErrorCode code)
139{
140    return u_errorName(code);
141}
142
143/*
144 * imp: common/ubrk.cpp
145 * hdr: common/unicode/ubrk.h
146 * @stable ICU 2.0
147 * #if !UCONFIG_NO_BREAK_ITERATION
148 * (don't actually conditionalize this, if the underlying library is not
149 * built with break iteration, we want to fail at build time, not runtime)
150 */
151U_CAPI UBreakIterator* U_EXPORT2
152ubrk_open_4_0(UBreakIteratorType type,
153      const char *locale,
154      const UChar *text,
155      int32_t textLength,
156      UErrorCode *status)
157{
158    return ubrk_open(type, locale, text, textLength, status);
159}
160
161/*
162 * imp: common/ubrk.cpp
163 * hdr: common/unicode/ubrk.h
164 * @stable ICU 2.0
165 * #if !UCONFIG_NO_BREAK_ITERATION
166 * (don't actually conditionalize this, if the underlying library is not
167 * built with break iteration, we want to fail at build time, not runtime)
168 */
169U_CAPI void U_EXPORT2
170ubrk_close_4_0(UBreakIterator *bi)
171{
172    return ubrk_close(bi);
173}
174
175/*
176 * imp: common/ubrk.cpp
177 * hdr: common/unicode/ubrk.h
178 * @stable ICU 2.0
179 * #if !UCONFIG_NO_BREAK_ITERATION
180 * (don't actually conditionalize this, if the underlying library is not
181 * built with break iteration, we want to fail at build time, not runtime)
182 */
183U_CAPI void U_EXPORT2
184ubrk_setText_4_0(UBreakIterator* bi,
185             const UChar*    text,
186             int32_t         textLength,
187             UErrorCode*     status)
188{
189    return ubrk_setText(bi, text, textLength, status);
190}
191
192/*
193 * imp: common/ubrk.cpp
194 * hdr: common/unicode/ubrk.h
195 * @stable ICU 2.0
196 * #if !UCONFIG_NO_BREAK_ITERATION
197 * (don't actually conditionalize this, if the underlying library is not
198 * built with break iteration, we want to fail at build time, not runtime)
199 */
200U_CAPI int32_t U_EXPORT2
201ubrk_first_4_0(UBreakIterator *bi)
202{
203    return ubrk_first(bi);
204}
205
206/*
207 * imp: common/ubrk.cpp
208 * hdr: common/unicode/ubrk.h
209 * @stable ICU 2.0
210 * #if !UCONFIG_NO_BREAK_ITERATION
211 * (don't actually conditionalize this, if the underlying library is not
212 * built with break iteration, we want to fail at build time, not runtime)
213 */
214U_CAPI int32_t U_EXPORT2
215ubrk_last_4_0(UBreakIterator *bi)
216{
217    return ubrk_last(bi);
218}
219
220/*
221 * imp: common/ubrk.cpp
222 * hdr: common/unicode/ubrk.h
223 * @stable ICU 2.0
224 * #if !UCONFIG_NO_BREAK_ITERATION
225 * (don't actually conditionalize this, if the underlying library is not
226 * built with break iteration, we want to fail at build time, not runtime)
227 */
228U_CAPI int32_t U_EXPORT2
229ubrk_next_4_0(UBreakIterator *bi)
230{
231    return ubrk_next(bi);
232}
233
234/*
235 * imp: common/ubrk.cpp
236 * hdr: common/unicode/ubrk.h
237 * @stable ICU 2.0
238 * #if !UCONFIG_NO_BREAK_ITERATION
239 * (don't actually conditionalize this, if the underlying library is not
240 * built with break iteration, we want to fail at build time, not runtime)
241 */
242U_CAPI int32_t U_EXPORT2
243ubrk_previous_4_0(UBreakIterator *bi)
244{
245    return ubrk_previous(bi);
246}
247
248/*
249 * imp: common/ubrk.cpp
250 * hdr: common/unicode/ubrk.h
251 * @stable ICU 2.0
252 * #if !UCONFIG_NO_BREAK_ITERATION
253 * (don't actually conditionalize this, if the underlying library is not
254 * built with break iteration, we want to fail at build time, not runtime)
255 */
256U_CAPI int32_t U_EXPORT2
257ubrk_preceding_4_0(UBreakIterator *bi,
258           int32_t offset)
259{
260    return ubrk_preceding(bi, offset);
261}
262
263/*
264 * imp: common/ubrk.cpp
265 * hdr: common/unicode/ubrk.h
266 * @stable ICU 2.0
267 * #if !UCONFIG_NO_BREAK_ITERATION
268 * (don't actually conditionalize this, if the underlying library is not
269 * built with break iteration, we want to fail at build time, not runtime)
270 */
271U_CAPI int32_t U_EXPORT2
272ubrk_following_4_0(UBreakIterator *bi,
273           int32_t offset)
274{
275    return ubrk_following(bi, offset);
276}
277
278
279/*
280 * imp: common/uidna.cpp
281 * hdr: common/unicode/uidna.h
282 * @stable ICU 2.6
283 */
284U_CAPI int32_t U_EXPORT2
285uidna_IDNToUnicode_4_0(  const UChar* src, int32_t srcLength,
286                     UChar* dest, int32_t destCapacity,
287                     int32_t options,
288                     UParseError* parseError,
289                     UErrorCode* status)
290{
291    return uidna_IDNToUnicode(src, srcLength, dest, destCapacity, options, parseError, status);
292}
293
294/*
295 * imp: common/uidna.cpp
296 * hdr: common/unicode/uidna.h
297 * @stable ICU 2.6
298 */
299U_CAPI int32_t U_EXPORT2
300uidna_IDNToASCII_4_0(  const UChar* src, int32_t srcLength,
301                   UChar* dest, int32_t destCapacity,
302                   int32_t options,
303                   UParseError* parseError,
304                   UErrorCode* status)
305{
306    return uidna_IDNToASCII(src, srcLength, dest, destCapacity, options, parseError, status);
307}
308
309
310/*
311 * imp: common/utf_impl.c
312 * hdr: common/unicode/utf8.h
313 * @internal
314 */
315U_CAPI int32_t U_EXPORT2
316utf8_appendCharSafeBody_4_0(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError)
317{
318    return utf8_appendCharSafeBody(s, i, length, c, pIsError);
319}
320
321
322namespace icu_4_0 {
323
324/*
325 * imp: common/locid.cpp
326 * hdr: common/unicode/locid.h
327 */
328class __declspec(dllexport) Locale : public icu::Locale {
329public:
330    // @stable ICU 2.0
331    Locale(const char* language, const char* country = 0, const char* variant = 0, const char* keywordsAndValues = 0)
332    : icu::Locale(language, country, variant, keywordsAndValues)
333    {
334    }
335};
336
337
338/*
339 * imp: common/unistr.cpp
340 * hdr: common/unicode/unistr.h
341 */
342class __declspec(dllexport) UnicodeString : public icu::UnicodeString {
343public:
344    UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength)
345    : icu::UnicodeString(isTerminated, text, textLength)
346    {
347    }
348
349    UnicodeString(int32_t capacity, UChar32 c, int32_t count)
350    : icu::UnicodeString(capacity, c, count)
351    {
352    }
353
354    UnicodeString()
355    : icu::UnicodeString()
356    {
357    }
358
359    UChar *getBuffer(int32_t minCapacity)
360    {
361        return icu::UnicodeString::getBuffer(minCapacity);
362    }
363
364    void releaseBuffer(int32_t newLength=-1)
365    {
366        return icu::UnicodeString::releaseBuffer(newLength);
367    }
368};
369
370
371/*
372 * imp: common/brkiter.cpp
373 * hdr: common/unicode/brkiter.h
374 */
375class __declspec(dllexport) BreakIterator : public icu::BreakIterator {
376public:
377    // @stable ICU 2.0
378    static BreakIterator* U_EXPORT2
379    createWordInstance(const icu_4_0::Locale& where, UErrorCode& status)
380    {
381        return static_cast<BreakIterator*>(icu::BreakIterator::createWordInstance(where, status));
382    }
383};
384
385}; // end namespace icu_4_0
386