Mercurial > projects > dwt2
annotate java/src/java/lang/wrappers.d @ 23:aaa0a4e20edf
Added missing files to repository
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 20 Mar 2009 13:17:52 +0100 |
parents | |
children |
rev | line source |
---|---|
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 module java.lang.wrappers; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 import java.lang.String; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 abstract class ArrayWrapper{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 abstract class ValueWrapper{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 class ArrayWrapperT(T) : ArrayWrapper { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 public T[] array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 public this( T[] data ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 array = data; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 public override equals_t opEquals( Object o ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 if( auto other = cast(ArrayWrapperT!(T))o){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 return array == other.array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 public override hash_t toHash(){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 return (typeid(T[])).getHash(&array); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 static if( is( T == char )){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 public override String toString(){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 return cast(String)array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 class ValueWrapperT(T) : ValueWrapper { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 public T value; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 public this( T data ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 value = data; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 static if( is(T==class) || is(T==interface)){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 public equals_t opEquals( Object other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 if( auto o = cast(ValueWrapperT!(T))other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 return value == o.value; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 if( auto o = cast(T)other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 if( value is o ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 return true; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 if( value is null || o is null ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 return value == o; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 public equals_t opEquals( Object other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 if( auto o = cast(ValueWrapperT!(T))other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 return value == o.value; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 public equals_t opEquals( T other ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 return value == other; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 public override hash_t toHash(){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 return (typeid(T)).getHash(&value); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 alias ArrayWrapperT!(byte) ArrayWrapperByte; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 alias ArrayWrapperT!(int) ArrayWrapperInt; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 alias ArrayWrapperT!(Object) ArrayWrapperObject; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 alias ArrayWrapperT!(char) ArrayWrapperString; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 alias ArrayWrapperT!(String) ArrayWrapperString2; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 Object[] StringArrayToObjectArray( String[] strs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 Object[] res = new Object[strs.length]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 foreach( idx, str; strs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 res[idx] = new ArrayWrapperString(cast(char[])str); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 String stringcast( Object o ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 if( auto str = cast(ArrayWrapperString) o ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 return cast(String)str.array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 String[] stringcast( Object[] objs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 String[] res = new String[](objs.length); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 foreach( idx, obj; objs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 res[idx] = stringcast(obj); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 ArrayWrapperString stringcast( String str ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 return new ArrayWrapperString( cast(char[])str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 ArrayWrapperString[] stringcast( String[] strs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 ArrayWrapperString[] res = new ArrayWrapperString[ strs.length ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 foreach( idx, str; strs ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 res[idx] = stringcast(str); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 String[] stringArrayFromObject( Object obj ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 if( auto wrapper = cast(ArrayWrapperString2)obj ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 return wrapper.array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 if( auto wrapper = cast(ArrayWrapperObject)obj ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 String[] res = new String[ wrapper.array.length ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 foreach( idx, o; wrapper.array ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 if( auto swrapper = cast(ArrayWrapperString) o ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 res[idx] = cast(String)swrapper.array; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 assert( obj is null ); // if not null, it was the wrong type |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 T[] arrayFromObject(T)( Object obj ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 if( auto wrapper = cast(ArrayWrapperObject)obj ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 T[] res = new T[ wrapper.array.length ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 foreach( idx, o; wrapper.array ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 res[idx] = cast(T)o; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 assert( obj is null ); // if not null, it was the wrong type |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 |