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;