Mercurial > projects > dwt2
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 |