comparison base/src/java/lang/Character.d @ 120:536e43f63c81

Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661 ===D2=== * added [Try]Immutable/Const/Shared templates to work with differenses in D1/D2 instead of version statements used these templates to work with strict type storage rules of dmd-2.053 * com.ibm.icu now also compilable with D2, but not tested yet * small fixes Snippet288 - shared data is in TLS ===Phobos=== * fixed critical bugs in Phobos implemention completely incorrect segfault prone fromStringz (Linux's port ruthless killer) terrible, incorrect StringBuffer realization (StyledText killer) * fixed small bugs as well Snippet72 - misprint in the snippet * implemented missed functionality for Phobos ByteArrayOutputStream implemented (image loading available) formatting correctly works for all DWT's cases As a result, folowing snippets now works with Phobos (Snippet### - what is fixed): Snippet24, 42, 111, 115, 130, 235, 276 - bad string formatting Snippet48, 282 - crash on image loading Snippet163, 189, 211, 213, 217, 218, 222 - crash on copy/cut in StyledText Snippet244 - hang-up ===Tango=== * few changes for the latest Tango trunc-r5661 * few small performance improvments ===General=== * implMissing-s for only one version changed to implMissingInTango/InPhobos * incorrect calls to Format in toString-s fixed * fixed loading \uXXXX characters in ResourceBundle * added good UTF-8 support for StyledText, TextLayout (Win32) and friends UTF functions revised and tested. It is now in java.nonstandard.*Utf modules StyledText and TextLayout (Win32) modules revised for UTF-8 support * removed small diferences in most identical files in *.swt.* folders *.swt.internal.image, *.swt.events and *.swt.custom are identical in Win32/Linux32 now 179 of 576 (~31%) files in *.swt.* folders are fully identical * Win32: snippets now have right subsystem, pretty icons and native system style controls * small fixes in snippets Snippet44 - it's not Snippet44 Snippet212 - functions work with different images and offsets arrays Win32: Snippet282 - crash on close if the button has an image Snippet293 - setGrayed is commented and others Win32: As a result, folowing snippets now works Snippet68 - color doesn't change Snippet163, 189, 211, 213, 217, 218, 222 - UTF-8 issues (see above) Snippet193 - no tabel headers
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Sat, 09 Jul 2011 15:50:20 +0300
parents fb3aa8075988
children dc6fc593e8d7
comparison
equal deleted inserted replaced
119:d00e8db0a568 120:536e43f63c81
1 module java.lang.Character; 1 module java.lang.Character;
2 2
3 import java.lang.util;
3 import java.lang.exceptions; 4 import java.lang.exceptions;
4 import java.lang.util;
5 import java.lang.Class; 5 import java.lang.Class;
6 import java.lang.String;
6 7
7 version(Tango){ 8 version(Tango){
8 static import tango.text.Unicode; 9 static import tango.text.Unicode;
9 static import tango.text.UnicodeData; 10 static import tango.text.UnicodeData; //for getUnicodeData
10 } else { // Phobos 11 } else { // Phobos
11 static import std.utf; 12 static import std.utf;
13 static import std.conv;
12 static import std.uni; 14 static import std.uni;
13 static import std.ctype; 15 static import std.ctype;
14 static import std.string; 16 static import std.string;
15 } 17 }
16 18
17 class Character { 19 class Character {
20 public static const int MIN_RADIX = 2;
21 public static const int MAX_RADIX = 36;
18 public static bool isUpperCase( dchar c ){ 22 public static bool isUpperCase( dchar c ){
19 implMissing( __FILE__, __LINE__);
20 return false;
21 }
22 public static dchar toUpperCase( wchar c ){
23 version(Tango){ 23 version(Tango){
24 wchar[1] src; 24 implMissingInTango( __FILE__, __LINE__);
25 src[0] = c; 25 return false;
26 dchar[1] buf;
27 uint ate;
28 dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate );
29 } else { // Phobos 26 } else { // Phobos
30 wchar[1] src; 27 return !!std.uni.isUniUpper(c);
31 src[0] = c;
32 auto darr = std.utf.toUTF32(src);
33 } 28 }
34 return toUpperCase( darr[0] );
35 }
36 public static String toString(char c){
37 implMissing(__FILE__, __LINE__ );
38 return null;
39 }
40 public static String toString(wchar c){
41 implMissing(__FILE__, __LINE__ );
42 return null;
43 }
44 public static String toString(dchar c){
45 implMissing(__FILE__, __LINE__ );
46 return null;
47 } 29 }
48 public static dchar toUpperCase( dchar c ){ 30 public static dchar toUpperCase( dchar c ){
49 version(Tango){ 31 version(Tango){
50 dchar[1] src; 32 dchar[1] src = c;
51 src[0] = c;
52 dchar[] r = tango.text.Unicode.toUpper( src ); 33 dchar[] r = tango.text.Unicode.toUpper( src );
53 return r[0]; 34 return r[0];
54 } else { // Phobos 35 } else { // Phobos
55 return std.uni.toUniUpper( c ); 36 return std.uni.toUniUpper( c );
56 } 37 }
57 } 38 }
58 public static dchar toLowerCase( wchar c ){ 39 public static String toString( char c ){
59 version(Tango){ 40 version(Tango){
60 wchar[1] src; 41 implMissingInTango(__FILE__, __LINE__ );
61 src[0] = c; 42 return null;
62 dchar[1] buf;
63 uint ate;
64 dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate );
65 } else { // Phobos 43 } else { // Phobos
66 wchar[1] src; 44 return std.conv.to!(String)( c );
67 src[0] = c;
68 auto darr = std.utf.toUTF32(src);
69 } 45 }
70 return toLowerCase( darr[0] ); 46 }
47 public static String toString( wchar c ){
48 version(Tango){
49 implMissingInTango(__FILE__, __LINE__ );
50 return null;
51 } else { // Phobos
52 return std.conv.to!(String)( c );
53 }
54 }
55 public static String toString( dchar c ){
56 version(Tango){
57 implMissingInTango(__FILE__, __LINE__ );
58 return null;
59 } else { // Phobos
60 return std.conv.to!(String)( c );
61 }
71 } 62 }
72 public static dchar toLowerCase( dchar c ){ 63 public static dchar toLowerCase( dchar c ){
73 version(Tango){ 64 version(Tango){
74 dchar[1] src; 65 dchar[1] src = c;
75 src[0] = c;
76 dchar[] r = tango.text.Unicode.toLower( src ); 66 dchar[] r = tango.text.Unicode.toLower( src );
77 return r[0]; 67 return r[0];
78 } else { // Phobos 68 } else { // Phobos
79 return std.uni.toUniLower( c ); 69 return std.uni.toUniLower( c );
80 } 70 }
84 return tango.text.Unicode.isWhitespace( c ); 74 return tango.text.Unicode.isWhitespace( c );
85 } else { // Phobos 75 } else { // Phobos
86 return std.string.iswhite(c); 76 return std.string.iswhite(c);
87 } 77 }
88 } 78 }
79 alias isWhitespace isWhiteSpace;
80 public static bool isSpace( dchar c ){
81 version(Tango){
82 return tango.text.Unicode.isSpace(c);
83 } else { // Phobos
84 return !!std.ctype.isspace(c);
85 }
86 }
89 public static bool isDigit( dchar c ){ 87 public static bool isDigit( dchar c ){
90 version(Tango){ 88 version(Tango){
91 return tango.text.Unicode.isDigit( c ); 89 return tango.text.Unicode.isDigit( c );
92 } else { // Phobos 90 } else { // Phobos
93 return std.string.isNumeric(c); 91 return !!std.ctype.isdigit(c);
94 } 92 }
95 } 93 }
96 public static bool isLetter( dchar c ){ 94 public static bool isLetter( dchar c ){
97 version(Tango){ 95 version(Tango){
98 return tango.text.Unicode.isLetter(c); 96 return tango.text.Unicode.isLetter(c);
99 } else { // Phobos 97 } else { // Phobos
100 return std.uni.isUniAlpha(c) != 0; 98 return !!std.uni.isUniAlpha(c);
101 }
102 }
103 public static bool isSpace( dchar c ){
104 version(Tango){
105 return tango.text.Unicode.isSpace(c);
106 } else { // Phobos
107 return cast(bool)std.ctype.isspace(c);
108 }
109 }
110 public static bool isWhiteSpace( dchar c ){
111 version(Tango){
112 return tango.text.Unicode.isWhitespace(c);
113 } else { // Phobos
114 return std.string.iswhite(c);
115 } 99 }
116 } 100 }
117 public static bool isLetterOrDigit( dchar c ){ 101 public static bool isLetterOrDigit( dchar c ){
118 return isDigit(c) || isLetter(c); 102 return isDigit(c) || isLetter(c);
119 } 103 }
153 } 137 }
154 } 138 }
155 139
156 bool CharacterIsDefined( dchar ch ){ 140 bool CharacterIsDefined( dchar ch ){
157 version(Tango){ 141 version(Tango){
158 return (ch in tango.text.UnicodeData.unicodeData) !is null; 142 return tango.text.UnicodeData.getUnicodeData(ch) !is null;
159 } else { // Phobos 143 } else { // Phobos
160 implMissing( __FILE__, __LINE__); 144 return std.utf.isValidDchar(ch);
161 return false;
162 }
163 }
164
165 dchar CharacterFirstToLower( CString str ){
166 int consumed;
167 return CharacterFirstToLower( str, consumed );
168 }
169
170 dchar CharacterFirstToLower( CString str, out int consumed ){
171 version(Tango){
172 dchar[1] buf;
173 buf[0] = firstCodePoint( str, consumed );
174 dchar[] r = tango.text.Unicode.toLower( buf );
175 return r[0];
176 } else { // Phobos
177 implMissing( __FILE__, __LINE__);
178 return 0;
179 } 145 }
180 } 146 }
181 147
182 dchar CharacterToLower( dchar c ){ 148 dchar CharacterToLower( dchar c ){
183 version(Tango){ 149 return Character.toLowerCase(c);
184 dchar[] r = tango.text.Unicode.toLower( [c] );
185 return r[0];
186 } else { // Phobos
187 return std.uni.toUniLower(c);
188 }
189 } 150 }
190 dchar CharacterToUpper( dchar c ){ 151 dchar CharacterToUpper( dchar c ){
191 version(Tango){ 152 return Character.toUpperCase(c);
192 dchar[] r = tango.text.Unicode.toUpper( [c] );
193 return r[0];
194 } else { // Phobos
195 return std.uni.toUniUpper(c);
196 }
197 } 153 }
198 bool CharacterIsWhitespace( dchar c ){ 154 bool CharacterIsWhitespace( dchar c ){
199 version(Tango){ 155 return Character.isWhitespace(c);
200 return tango.text.Unicode.isWhitespace( c );
201 } else { // Phobos
202 return std.string.iswhite(c);
203 }
204 } 156 }
205 bool CharacterIsDigit( dchar c ){ 157 bool CharacterIsDigit( dchar c ){
206 version(Tango){ 158 return Character.isDigit(c);
207 return tango.text.Unicode.isDigit( c );
208 } else { // Phobos
209 return std.string.isNumeric(c);
210 }
211 } 159 }
212 bool CharacterIsLetter( dchar c ){ 160 bool CharacterIsLetter( dchar c ){
213 version(Tango){ 161 return Character.isLetter(c);
214 return tango.text.Unicode.isLetter( c );
215 } else { // Phobos
216 return std.uni.isUniAlpha(c) != 0;
217 }
218 } 162 }
219 163
220 164