comparison java/src/java/lang/Character.d @ 21:9b96950f2c3c

the 'java' tree compiles on both D1-Tango and D2-Phobos
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Mar 2009 20:38:55 +0100
parents 950d84783eac
children
comparison
equal deleted inserted replaced
20:dccb717aa902 21:9b96950f2c3c
1 module java.lang.Character; 1 module java.lang.Character;
2 2
3 import java.lang.exceptions; 3 import java.lang.exceptions;
4 import java.lang.util; 4 import java.lang.util;
5 import tango.text.Unicode; 5
6 version(Tango){
7 static import tango.text.Unicode;
8 } else { // Phobos
9 static import std.utf;
10 static import std.uni;
11 static import std.ctype;
12 static import std.string;
13 }
6 14
7 class Character { 15 class Character {
8 public static bool isUpperCase( dchar c ){ 16 public static bool isUpperCase( dchar c ){
9 implMissing( __FILE__, __LINE__); 17 implMissing( __FILE__, __LINE__);
10 return false; 18 return false;
11 } 19 }
12 public static dchar toUpperCase( wchar c ){ 20 public static dchar toUpperCase( wchar c ){
13 wchar[1] src; 21 version(Tango){
14 src[0] = c; 22 wchar[1] src;
15 dchar[1] buf; 23 src[0] = c;
16 uint ate; 24 dchar[1] buf;
17 dchar[] res = tango.text.convert.Utf.toString32( src, buf, &ate ); 25 uint ate;
18 dchar[] r = tango.text.Unicode.toUpper( res ); 26 dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate );
19 return r[0]; 27 } else { // Phobos
28 wchar[1] src;
29 src[0] = c;
30 auto darr = std.utf.toUTF32(src);
31 }
32 return toUpperCase( darr[0] );
20 } 33 }
21 public static dchar toUpperCase( dchar c ){ 34 public static dchar toUpperCase( dchar c ){
22 dchar[] r = tango.text.Unicode.toUpper( [c] ); 35 version(Tango){
23 return r[0]; 36 dchar[1] src;
37 src[0] = c;
38 dchar[] r = tango.text.Unicode.toUpper( src );
39 return r[0];
40 } else { // Phobos
41 return std.uni.toUniUpper( c );
42 }
24 } 43 }
25 public static dchar toLowerCase( wchar c ){ 44 public static dchar toLowerCase( wchar c ){
26 wchar[1] src; 45 version(Tango){
27 src[0] = c; 46 wchar[1] src;
28 dchar[1] buf; 47 src[0] = c;
29 uint ate; 48 dchar[1] buf;
30 dchar[] res = tango.text.convert.Utf.toString32( src, buf, &ate ); 49 uint ate;
31 dchar[] r = tango.text.Unicode.toLower( res ); 50 dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate );
32 return r[0]; 51 } else { // Phobos
52 wchar[1] src;
53 src[0] = c;
54 auto darr = std.utf.toUTF32(src);
55 }
56 return toLowerCase( darr[0] );
33 } 57 }
34 public static dchar toLowerCase( dchar c ){ 58 public static dchar toLowerCase( dchar c ){
35 dchar[] r = tango.text.Unicode.toLower( [c] ); 59 version(Tango){
36 return r[0]; 60 dchar[1] src;
61 src[0] = c;
62 dchar[] r = tango.text.Unicode.toLower( src );
63 return r[0];
64 } else { // Phobos
65 return std.uni.toUniLower( c );
66 }
37 } 67 }
38 public static bool isWhitespace( dchar c ){ 68 public static bool isWhitespace( dchar c ){
39 return tango.text.Unicode.isWhitespace( c ); 69 version(Tango){
70 return tango.text.Unicode.isWhitespace( c );
71 } else { // Phobos
72 return std.string.iswhite(c);
73 }
40 } 74 }
41 public static bool isDigit( dchar c ){ 75 public static bool isDigit( dchar c ){
42 return tango.text.Unicode.isDigit( c ); 76 version(Tango){
77 return tango.text.Unicode.isDigit( c );
78 } else { // Phobos
79 return cast(bool)std.ctype.isdigit(c);
80 }
43 } 81 }
44 public static bool isLetter( dchar c ){ 82 public static bool isLetter( dchar c ){
45 return tango.text.Unicode.isLetter(c); 83 version(Tango){
84 return tango.text.Unicode.isLetter(c);
85 } else { // Phobos
86 return cast(bool)std.ctype.isalpha(c);
87 }
46 } 88 }
47 public static bool isSpace( dchar c ){ 89 public static bool isSpace( dchar c ){
48 return tango.text.Unicode.isSpace(c); 90 version(Tango){
91 return tango.text.Unicode.isSpace(c);
92 } else { // Phobos
93 return cast(bool)std.ctype.isspace(c);
94 }
49 } 95 }
50 public static bool isWhiteSpace( dchar c ){ 96 public static bool isWhiteSpace( dchar c ){
51 return tango.text.Unicode.isWhitespace(c); 97 version(Tango){
98 return tango.text.Unicode.isWhitespace(c);
99 } else { // Phobos
100 return std.string.iswhite(c);
101 }
52 } 102 }
53 public static bool isLetterOrDigit( dchar c ){ 103 public static bool isLetterOrDigit( dchar c ){
54 return isDigit(c) || isLetter(c); 104 return isDigit(c) || isLetter(c);
55 } 105 }
56 public static bool isUnicodeIdentifierPart(char ch){ 106 public static bool isUnicodeIdentifierPart(char ch){
73 this( char c ){ 123 this( char c ){
74 // must be correct for container storage 124 // must be correct for container storage
75 implMissing( __FILE__, __LINE__); 125 implMissing( __FILE__, __LINE__);
76 } 126 }
77 } 127 }
128
129 bool CharacterIsDefined( dchar ch ){
130 version(Tango){
131 return (ch in tango.text.UnicodeData.unicodeData) !is null;
132 } else { // Phobos
133 implMissing( __FILE__, __LINE__);
134 return false;
135 }
136 }
137
138 dchar CharacterFirstToLower( String str ){
139 int consumed;
140 return CharacterFirstToLower( str, consumed );
141 }
142
143 dchar CharacterFirstToLower( String str, out int consumed ){
144 version(Tango){
145 dchar[1] buf;
146 buf[0] = firstCodePoint( str, consumed );
147 dchar[] r = tango.text.Unicode.toLower( buf );
148 return r[0];
149 } else { // Phobos
150 implMissing( __FILE__, __LINE__);
151 return 0;
152 }
153 }
154
155 dchar CharacterToLower( dchar c ){
156 version(Tango){
157 dchar[] r = tango.text.Unicode.toLower( [c] );
158 return r[0];
159 } else { // Phobos
160 implMissing( __FILE__, __LINE__);
161 return 0;
162 }
163 }
164 dchar CharacterToUpper( dchar c ){
165 version(Tango){
166 dchar[] r = tango.text.Unicode.toUpper( [c] );
167 return r[0];
168 } else { // Phobos
169 implMissing( __FILE__, __LINE__);
170 return 0;
171 }
172 }
173 bool CharacterIsWhitespace( dchar c ){
174 version(Tango){
175 return tango.text.Unicode.isWhitespace( c );
176 } else { // Phobos
177 implMissing( __FILE__, __LINE__);
178 return false;
179 }
180 }
181 bool CharacterIsDigit( dchar c ){
182 version(Tango){
183 return tango.text.Unicode.isDigit( c );
184 } else { // Phobos
185 implMissing( __FILE__, __LINE__);
186 return false;
187 }
188 }
189 bool CharacterIsLetter( dchar c ){
190 version(Tango){
191 return tango.text.Unicode.isLetter( c );
192 } else { // Phobos
193 implMissing( __FILE__, __LINE__);
194 return false;
195 }
196 }
197