annotate base/src/java/util/Arrays.d @ 84:fcf926c91ca4

Added base classes
author Frank Benoit <benoit@tionex.de>
date Sat, 18 Apr 2009 09:25:29 +0200
parents 1bf55a6eb092
children 6be48cf9f95c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 module java.util.Arrays;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 import java.lang.all;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 import java.util.List;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 import java.util.ArrayList;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 import java.util.Collections;
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
7 version(Tango){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
8 static import tango.core.Array;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
9 } else { // Phobos
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
10 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 class Arrays {
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 public static bool equals(T)(T[] a, T[] b){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 if( a.length !is b.length ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 return false;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 for( int i = 0; i < a.length; i++ ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 if( a[i] is null && b[i] is null ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 continue;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 if( a[i] !is null && b[i] !is null && a[i] == b[i] ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 continue;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 return false;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 return true;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 /+ public static bool equals(Object[] a, Object[] b){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 if( a.length !is b.length ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 return false;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 for( int i = 0; i < a.length; i++ ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 if( a[i] is null && b[i] is null ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 continue;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 if( a[i] !is null && b[i] !is null && a[i] == b[i] ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 continue;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 return false;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 return true;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 +/
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
44 static int binarySearch( T )( T[] a, T b ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
45 if( tango.core.Array.bsearch( a, b )){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
46 tango.core.Array.lbound( a, b );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
47 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
48 else{
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
49 return -(tango.core.Array.lbound( a, b ))-1;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
50 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
51 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
52 static void sort( T )( T[] a ){
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
53 tango.core.Array.sort( a );
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
54 }
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 static void sort( T )( T[] a, Comparator c ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 static if( is( T : char[] )){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 bool isLess( String o1, String o2 ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 return c.compare( stringcast(o1), stringcast(o2) ) < 0;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 else{
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 bool isLess( T o1, T o2 ){
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 return c.compare( cast(Object)o1, cast(Object)o2 ) < 0;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 tango.core.Array.sort( a, &isLess );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 }
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
68 static List asList(T)(T[] a) {
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
69 static assert( is(T==interface) || is(T==class));
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 if( a.length is 0 ) return Collections.EMPTY_LIST;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 ArrayList res = new ArrayList( a.length );
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 foreach( o; a ){
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
73 res.add( cast(Object)o);
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 return res;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 }
21
9b96950f2c3c the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
77 public static void fill( char[] str, char c ){
10
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 str[] = c;
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 }
eb8ff453285d Added java.util collection classes.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81