]> git.saurik.com Git - apple/icu.git/blob - icuSources/common/cpputils.h
ICU-57132.0.1.tar.gz
[apple/icu.git] / icuSources / common / cpputils.h
1 /*
2 ******************************************************************************
3 *
4 * Copyright (C) 1997-2011, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 ******************************************************************************
8 * file name: cpputils.h
9 * encoding: US-ASCII
10 * tab size: 8 (not used)
11 * indentation:4
12 */
13
14 #ifndef CPPUTILS_H
15 #define CPPUTILS_H
16
17 #include "unicode/utypes.h"
18 #include "unicode/unistr.h"
19 #include "cmemory.h"
20
21 /*==========================================================================*/
22 /* Array copy utility functions */
23 /*==========================================================================*/
24
25 static
26 inline void uprv_arrayCopy(const double* src, double* dst, int32_t count)
27 { uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
28
29 static
30 inline void uprv_arrayCopy(const double* src, int32_t srcStart,
31 double* dst, int32_t dstStart, int32_t count)
32 { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
33
34 static
35 inline void uprv_arrayCopy(const int8_t* src, int8_t* dst, int32_t count)
36 { uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
37
38 static
39 inline void uprv_arrayCopy(const int8_t* src, int32_t srcStart,
40 int8_t* dst, int32_t dstStart, int32_t count)
41 { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
42
43 static
44 inline void uprv_arrayCopy(const int16_t* src, int16_t* dst, int32_t count)
45 { uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
46
47 static
48 inline void uprv_arrayCopy(const int16_t* src, int32_t srcStart,
49 int16_t* dst, int32_t dstStart, int32_t count)
50 { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
51
52 static
53 inline void uprv_arrayCopy(const int32_t* src, int32_t* dst, int32_t count)
54 { uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
55
56 static
57 inline void uprv_arrayCopy(const int32_t* src, int32_t srcStart,
58 int32_t* dst, int32_t dstStart, int32_t count)
59 { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
60
61 static
62 inline void
63 uprv_arrayCopy(const UChar *src, int32_t srcStart,
64 UChar *dst, int32_t dstStart, int32_t count)
65 { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
66
67 /**
68 * Copy an array of UnicodeString OBJECTS (not pointers).
69 * @internal
70 */
71 static inline void
72 uprv_arrayCopy(const icu::UnicodeString *src, icu::UnicodeString *dst, int32_t count)
73 { while(count-- > 0) *dst++ = *src++; }
74
75 /**
76 * Copy an array of UnicodeString OBJECTS (not pointers).
77 * @internal
78 */
79 static inline void
80 uprv_arrayCopy(const icu::UnicodeString *src, int32_t srcStart,
81 icu::UnicodeString *dst, int32_t dstStart, int32_t count)
82 { uprv_arrayCopy(src+srcStart, dst+dstStart, count); }
83
84 /**
85 * Checks that the string is readable and writable.
86 * Sets U_ILLEGAL_ARGUMENT_ERROR if the string isBogus() or has an open getBuffer().
87 */
88 inline void
89 uprv_checkCanGetBuffer(const icu::UnicodeString &s, UErrorCode &errorCode) {
90 if(U_SUCCESS(errorCode) && s.isBogus()) {
91 errorCode=U_ILLEGAL_ARGUMENT_ERROR;
92 }
93 }
94
95 #endif /* _CPPUTILS */