Mercurial > projects > dwt2
diff base/src/java/lang/System.d @ 85:6be48cf9f95c
Work on databinding
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 18 Apr 2009 13:54:50 +0200 |
parents | 2e09b0e6857a |
children | bbe49769ec18 |
line wrap: on
line diff
--- a/base/src/java/lang/System.d Sat Apr 18 09:25:29 2009 +0200 +++ b/base/src/java/lang/System.d Sat Apr 18 13:54:50 2009 +0200 @@ -114,6 +114,34 @@ class System { + version(D_Version2){ + mixin("alias const(T) CT;"); + } else { // D1 + static void arraycopyT(T)(T[] src, uint srcPos, T[] dest, uint destPos, uint len) { + if(len == 0) return; + + assert(src); + assert(dest); + debug{validCheck(src.length - srcPos, dest.length - destPos, len);} + + // overlapping? + if((src.ptr <= dest.ptr && src.ptr + len > dest.ptr) + ||(src.ptr >= dest.ptr && src.ptr < dest.ptr + len)){ + if( destPos < srcPos ){ + for(int i=0; i<len; ++i){ + dest[destPos+i] = cast(T)src[srcPos+i]; + } + } + else{ + for(int i=len-1; i>=0; --i){ + dest[destPos+i] = cast(T)src[srcPos+i]; + } + } + }else{ + dest[destPos..(len+destPos)] = cast(T[])src[srcPos..(len+srcPos)]; + } + } + } alias SimpleType!(int).arraycopy arraycopy; alias SimpleType!(byte).arraycopy arraycopy;