xref: /netbsd-src/external/gpl3/gcc.old/dist/libphobos/libdruntime/rt/arraycat.d (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg /**
2*627f7eb2Smrg  * Implementation of array copy support routines.
3*627f7eb2Smrg  *
4*627f7eb2Smrg  * Copyright: Copyright Digital Mars 2004 - 2016.
5*627f7eb2Smrg  * License:   Distributed under the
6*627f7eb2Smrg  *            $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
7*627f7eb2Smrg  * Authors:   Walter Bright, Sean Kelly
8*627f7eb2Smrg  * Source:    $(DRUNTIMESRC src/rt/_arraycat.d)
9*627f7eb2Smrg  */
10*627f7eb2Smrg 
11*627f7eb2Smrg module rt.arraycat;
12*627f7eb2Smrg 
13*627f7eb2Smrg private
14*627f7eb2Smrg {
15*627f7eb2Smrg     import core.stdc.string;
16*627f7eb2Smrg     import rt.util.array;
17*627f7eb2Smrg     debug(PRINTF) import core.stdc.stdio;
18*627f7eb2Smrg }
19*627f7eb2Smrg 
20*627f7eb2Smrg extern (C) @trusted nothrow:
21*627f7eb2Smrg 
_d_arraycopy(size_t size,void[]from,void[]to)22*627f7eb2Smrg void[] _d_arraycopy(size_t size, void[] from, void[] to)
23*627f7eb2Smrg {
24*627f7eb2Smrg     debug(PRINTF) printf("f = %p,%d, t = %p,%d, size = %d\n",
25*627f7eb2Smrg                  from.ptr, from.length, to.ptr, to.length, size);
26*627f7eb2Smrg 
27*627f7eb2Smrg     enforceRawArraysConformable("copy", size, from, to);
28*627f7eb2Smrg     memcpy(to.ptr, from.ptr, to.length * size);
29*627f7eb2Smrg     return to;
30*627f7eb2Smrg }
31