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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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