Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/icu4c/common/cpputils.h
9903 views
1
// © 2016 and later: Unicode, Inc. and others.
2
// License & terms of use: http://www.unicode.org/copyright.html
3
/*
4
******************************************************************************
5
*
6
* Copyright (C) 1997-2011, International Business Machines
7
* Corporation and others. All Rights Reserved.
8
*
9
******************************************************************************
10
* file name: cpputils.h
11
* encoding: UTF-8
12
* tab size: 8 (not used)
13
* indentation:4
14
*/
15
16
#ifndef CPPUTILS_H
17
#define CPPUTILS_H
18
19
#include "unicode/utypes.h"
20
#include "unicode/unistr.h"
21
#include "cmemory.h"
22
23
/*==========================================================================*/
24
/* Array copy utility functions */
25
/*==========================================================================*/
26
27
static
28
inline void uprv_arrayCopy(const double* src, double* dst, int32_t count)
29
{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }
30
31
static
32
inline void uprv_arrayCopy(const double* src, int32_t srcStart,
33
double* dst, int32_t dstStart, int32_t count)
34
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
35
36
static
37
inline void uprv_arrayCopy(const int8_t* src, int8_t* dst, int32_t count)
38
{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }
39
40
static
41
inline void uprv_arrayCopy(const int8_t* src, int32_t srcStart,
42
int8_t* dst, int32_t dstStart, int32_t count)
43
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
44
45
static
46
inline void uprv_arrayCopy(const int16_t* src, int16_t* dst, int32_t count)
47
{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }
48
49
static
50
inline void uprv_arrayCopy(const int16_t* src, int32_t srcStart,
51
int16_t* dst, int32_t dstStart, int32_t count)
52
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
53
54
static
55
inline void uprv_arrayCopy(const int32_t* src, int32_t* dst, int32_t count)
56
{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }
57
58
static
59
inline void uprv_arrayCopy(const int32_t* src, int32_t srcStart,
60
int32_t* dst, int32_t dstStart, int32_t count)
61
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
62
63
static
64
inline void
65
uprv_arrayCopy(const char16_t *src, int32_t srcStart,
66
char16_t *dst, int32_t dstStart, int32_t count)
67
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
68
69
/**
70
* Copy an array of UnicodeString OBJECTS (not pointers).
71
* @internal
72
*/
73
static inline void
74
uprv_arrayCopy(const icu::UnicodeString *src, icu::UnicodeString *dst, int32_t count)
75
{ while(count-- > 0) *dst++ = *src++; }
76
77
/**
78
* Copy an array of UnicodeString OBJECTS (not pointers).
79
* @internal
80
*/
81
static inline void
82
uprv_arrayCopy(const icu::UnicodeString *src, int32_t srcStart,
83
icu::UnicodeString *dst, int32_t dstStart, int32_t count)
84
{ uprv_arrayCopy(src+srcStart, dst+dstStart, count); }
85
86
/**
87
* Checks that the string is readable and writable.
88
* Sets U_ILLEGAL_ARGUMENT_ERROR if the string isBogus() or has an open getBuffer().
89
*/
90
inline void
91
uprv_checkCanGetBuffer(const icu::UnicodeString &s, UErrorCode &errorCode) {
92
if(U_SUCCESS(errorCode) && s.isBogus()) {
93
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
94
}
95
}
96
97
#endif /* _CPPUTILS */
98
99