Bug 773151: Convert nsCAutoString->nsAutoCString CLOSED TREE r=bsmedberg
[gecko.git] / parser / html / nsHtml5ArrayCopy.h
blob7eb2649ef7afedc2157d7d9c3af44d9eee14533e
1 /*
2 * Copyright (c) 2008 Mozilla Foundation
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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.
23 #ifndef nsHtml5ArrayCopy_h__
24 #define nsHtml5ArrayCopy_h__
26 #include "prtypes.h"
28 class nsString;
29 class nsHtml5StackNode;
30 class nsHtml5AttributeName;
32 // Unfortunately, these don't work as template functions because the arguments
33 // would need coercion from a template class, which complicates things.
34 class nsHtml5ArrayCopy {
35 public:
37 static inline void
38 arraycopy(PRUnichar* source, int32_t sourceOffset, PRUnichar* target, int32_t targetOffset, int32_t length)
40 memcpy(&(target[targetOffset]), &(source[sourceOffset]), length * sizeof(PRUnichar));
43 static inline void
44 arraycopy(PRUnichar* source, PRUnichar* target, int32_t length)
46 memcpy(target, source, length * sizeof(PRUnichar));
49 static inline void
50 arraycopy(nsString** source, nsString** target, int32_t length)
52 memcpy(target, source, length * sizeof(nsString*));
55 static inline void
56 arraycopy(nsHtml5AttributeName** source, nsHtml5AttributeName** target, int32_t length)
58 memcpy(target, source, length * sizeof(nsHtml5AttributeName*));
61 static inline void
62 arraycopy(nsHtml5StackNode** source, nsHtml5StackNode** target, int32_t length)
64 memcpy(target, source, length * sizeof(nsHtml5StackNode*));
67 static inline void
68 arraycopy(nsHtml5StackNode** arr, int32_t sourceOffset, int32_t targetOffset, int32_t length)
70 memmove(&(arr[targetOffset]), &(arr[sourceOffset]), length * sizeof(nsHtml5StackNode*));
73 #endif // nsHtml5ArrayCopy_h__