Path: blob/master/thirdparty/icu4c/common/cpputils.h
10279 views
// © 2016 and later: Unicode, Inc. and others.1// License & terms of use: http://www.unicode.org/copyright.html2/*3******************************************************************************4*5* Copyright (C) 1997-2011, International Business Machines6* Corporation and others. All Rights Reserved.7*8******************************************************************************9* file name: cpputils.h10* encoding: UTF-811* tab size: 8 (not used)12* indentation:413*/1415#ifndef CPPUTILS_H16#define CPPUTILS_H1718#include "unicode/utypes.h"19#include "unicode/unistr.h"20#include "cmemory.h"2122/*==========================================================================*/23/* Array copy utility functions */24/*==========================================================================*/2526static27inline void uprv_arrayCopy(const double* src, double* dst, int32_t count)28{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }2930static31inline void uprv_arrayCopy(const double* src, int32_t srcStart,32double* dst, int32_t dstStart, int32_t count)33{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }3435static36inline void uprv_arrayCopy(const int8_t* src, int8_t* dst, int32_t count)37{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }3839static40inline void uprv_arrayCopy(const int8_t* src, int32_t srcStart,41int8_t* dst, int32_t dstStart, int32_t count)42{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }4344static45inline void uprv_arrayCopy(const int16_t* src, int16_t* dst, int32_t count)46{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }4748static49inline void uprv_arrayCopy(const int16_t* src, int32_t srcStart,50int16_t* dst, int32_t dstStart, int32_t count)51{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }5253static54inline void uprv_arrayCopy(const int32_t* src, int32_t* dst, int32_t count)55{ uprv_memcpy(dst, src, (size_t)count * sizeof(*src)); }5657static58inline void uprv_arrayCopy(const int32_t* src, int32_t srcStart,59int32_t* dst, int32_t dstStart, int32_t count)60{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }6162static63inline void64uprv_arrayCopy(const char16_t *src, int32_t srcStart,65char16_t *dst, int32_t dstStart, int32_t count)66{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }6768/**69* Copy an array of UnicodeString OBJECTS (not pointers).70* @internal71*/72static inline void73uprv_arrayCopy(const icu::UnicodeString *src, icu::UnicodeString *dst, int32_t count)74{ while(count-- > 0) *dst++ = *src++; }7576/**77* Copy an array of UnicodeString OBJECTS (not pointers).78* @internal79*/80static inline void81uprv_arrayCopy(const icu::UnicodeString *src, int32_t srcStart,82icu::UnicodeString *dst, int32_t dstStart, int32_t count)83{ uprv_arrayCopy(src+srcStart, dst+dstStart, count); }8485/**86* Checks that the string is readable and writable.87* Sets U_ILLEGAL_ARGUMENT_ERROR if the string isBogus() or has an open getBuffer().88*/89inline void90uprv_checkCanGetBuffer(const icu::UnicodeString &s, UErrorCode &errorCode) {91if(U_SUCCESS(errorCode) && s.isBogus()) {92errorCode=U_ILLEGAL_ARGUMENT_ERROR;93}94}9596#endif /* _CPPUTILS */979899