X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..e4f10fab0c078f399c9deef476d9c9b73b47dff8:/icuSources/common/cpputils.h?ds=inline diff --git a/icuSources/common/cpputils.h b/icuSources/common/cpputils.h index de09aea1..b2e0cbc8 100644 --- a/icuSources/common/cpputils.h +++ b/icuSources/common/cpputils.h @@ -1,7 +1,7 @@ /* ****************************************************************************** * -* Copyright (C) 1997-2001, International Business Machines +* Copyright (C) 1997-2011, International Business Machines * Corporation and others. All Rights Reserved. * ****************************************************************************** @@ -15,6 +15,7 @@ #define CPPUTILS_H #include "unicode/utypes.h" +#include "unicode/unistr.h" #include "cmemory.h" /*==========================================================================*/ @@ -63,4 +64,32 @@ uprv_arrayCopy(const UChar *src, int32_t srcStart, UChar *dst, int32_t dstStart, int32_t count) { uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); } +/** + * Copy an array of UnicodeString OBJECTS (not pointers). + * @internal + */ +static inline void +uprv_arrayCopy(const icu::UnicodeString *src, icu::UnicodeString *dst, int32_t count) +{ while(count-- > 0) *dst++ = *src++; } + +/** + * Copy an array of UnicodeString OBJECTS (not pointers). + * @internal + */ +static inline void +uprv_arrayCopy(const icu::UnicodeString *src, int32_t srcStart, + icu::UnicodeString *dst, int32_t dstStart, int32_t count) +{ uprv_arrayCopy(src+srcStart, dst+dstStart, count); } + +/** + * Checks that the string is readable and writable. + * Sets U_ILLEGAL_ARGUMENT_ERROR if the string isBogus() or has an open getBuffer(). + */ +inline void +uprv_checkCanGetBuffer(const icu::UnicodeString &s, UErrorCode &errorCode) { + if(U_SUCCESS(errorCode) && s.isBogus()) { + errorCode=U_ILLEGAL_ARGUMENT_ERROR; + } +} + #endif /* _CPPUTILS */