parser/html/nsHtml5ArrayCopy.h

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 /*
     2  * Copyright (c) 2008 Mozilla Foundation
     3  *
     4  * Permission is hereby granted, free of charge, to any person obtaining a
     5  * copy of this software and associated documentation files (the "Software"),
     6  * to deal in the Software without restriction, including without limitation
     7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     8  * and/or sell copies of the Software, and to permit persons to whom the
     9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    23 #ifndef nsHtml5ArrayCopy_h
    24 #define nsHtml5ArrayCopy_h
    27 class nsString;
    28 class nsHtml5StackNode;
    29 class nsHtml5AttributeName;
    31 // Unfortunately, these don't work as template functions because the arguments
    32 // would need coercion from a template class, which complicates things.
    33 class nsHtml5ArrayCopy {
    34   public:
    36     static inline void
    37     arraycopy(char16_t* source, int32_t sourceOffset, char16_t* target, int32_t targetOffset, int32_t length)
    38     {
    39       memcpy(&(target[targetOffset]), &(source[sourceOffset]), length * sizeof(char16_t));
    40     }
    42     static inline void
    43     arraycopy(char16_t* source, char16_t* target, int32_t length)
    44     {
    45       memcpy(target, source, length * sizeof(char16_t));
    46     }
    48     static inline void
    49     arraycopy(int32_t* source, int32_t* target, int32_t length)
    50     {
    51       memcpy(target, source, length * sizeof(int32_t));
    52     }
    54     static inline void
    55     arraycopy(nsString** source, nsString** target, int32_t length)
    56     {
    57       memcpy(target, source, length * sizeof(nsString*));
    58     }
    60     static inline void
    61     arraycopy(nsHtml5AttributeName** source, nsHtml5AttributeName** target, int32_t length)
    62     {
    63       memcpy(target, source, length * sizeof(nsHtml5AttributeName*));
    64     }
    66     static inline void
    67     arraycopy(nsHtml5StackNode** source, nsHtml5StackNode** target, int32_t length)
    68     {
    69       memcpy(target, source, length * sizeof(nsHtml5StackNode*));
    70     }
    72     static inline void
    73     arraycopy(nsHtml5StackNode** arr, int32_t sourceOffset, int32_t targetOffset, int32_t length)
    74     {
    75       memmove(&(arr[targetOffset]), &(arr[sourceOffset]), length * sizeof(nsHtml5StackNode*));
    76     }
    77 };
    78 #endif // nsHtml5ArrayCopy_h

mercurial