intl/icu/source/common/cpputils.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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 */
    14 #ifndef CPPUTILS_H
    15 #define CPPUTILS_H
    17 #include "unicode/utypes.h"
    18 #include "unicode/unistr.h"
    19 #include "cmemory.h"
    21 /*==========================================================================*/
    22 /* Array copy utility functions */
    23 /*==========================================================================*/
    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))); }
    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))); }
    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))); }
    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))); }
    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))); }
    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))); }
    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))); }
    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))); }
    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))); }
    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++; }
    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); }
    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 }
    95 #endif /* _CPPUTILS */

mercurial