annotate base/src/java/lang/wrappers.d @ 84:fcf926c91ca4

Added base classes
author Frank Benoit <benoit@tionex.de>
date Sat, 18 Apr 2009 09:25:29 +0200
parents 2e09b0e6857a
children 536e43f63c81
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 }
38
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
15 version(D_Version2){
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
16 static if( is(T == char )){
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
17 public this( String data ){
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
18 array = data.dup;
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
19 }
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
20 }
2e09b0e6857a work on phobosfication
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
21 }
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 public override equals_t opEquals( Object o ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 if( auto other = cast(ArrayWrapperT!(T))o){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 return array == other.array;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 return false;
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 public override hash_t toHash(){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 return (typeid(T[])).getHash(&array);
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 static if( is( T == char )){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 public override String toString(){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 return cast(String)array;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 }
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 class ValueWrapperT(T) : ValueWrapper {
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 public T value;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 public this( T data ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 value = data;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 static if( is(T==class) || is(T==interface)){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 public equals_t opEquals( Object other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 if( auto o = cast(ValueWrapperT!(T))other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 return value == o.value;
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 if( auto o = cast(T)other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 if( value is o ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 return true;
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 if( value is null || o is null ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 return false;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 return value == o;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 return false;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 }
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 else{
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 public equals_t opEquals( Object other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 if( auto o = cast(ValueWrapperT!(T))other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 return value == o.value;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 return false;
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 public equals_t opEquals( T other ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 return value == other;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 public override hash_t toHash(){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 return (typeid(T)).getHash(&value);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 }
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
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 alias ArrayWrapperT!(byte) ArrayWrapperByte;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 alias ArrayWrapperT!(int) ArrayWrapperInt;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 alias ArrayWrapperT!(Object) ArrayWrapperObject;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 alias ArrayWrapperT!(char) ArrayWrapperString;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 alias ArrayWrapperT!(String) ArrayWrapperString2;
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 Object[] StringArrayToObjectArray( String[] strs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 Object[] res = new Object[strs.length];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 foreach( idx, str; strs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 res[idx] = new ArrayWrapperString(cast(char[])str);
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 res;
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
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 String stringcast( Object o ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 if( auto str = cast(ArrayWrapperString) o ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 return cast(String)str.array;
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 null;
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 String[] stringcast( Object[] objs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 String[] res = new String[](objs.length);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 foreach( idx, obj; objs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 res[idx] = stringcast(obj);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 return res;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 ArrayWrapperString stringcast( String str ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 return new ArrayWrapperString( cast(char[])str );
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 ArrayWrapperString[] stringcast( String[] strs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 ArrayWrapperString[] res = new ArrayWrapperString[ strs.length ];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 foreach( idx, str; strs ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 res[idx] = stringcast(str);
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 return res;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 String[] stringArrayFromObject( Object obj ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 if( auto wrapper = cast(ArrayWrapperString2)obj ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 return wrapper.array;
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 if( auto wrapper = cast(ArrayWrapperObject)obj ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 String[] res = new String[ wrapper.array.length ];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 foreach( idx, o; wrapper.array ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 if( auto swrapper = cast(ArrayWrapperString) o ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 res[idx] = cast(String)swrapper.array;
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 return res;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 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
128 return null;
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
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 T[] arrayFromObject(T)( Object obj ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 if( auto wrapper = cast(ArrayWrapperObject)obj ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 T[] res = new T[ wrapper.array.length ];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 foreach( idx, o; wrapper.array ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 res[idx] = cast(T)o;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 return res;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 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
140 return null;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
143