comparison com.ibm.icu/src/com/ibm/icu/mangoicu/UTimeZone.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 ebefa5c2eab4
children
comparison
equal deleted inserted replaced
119:d00e8db0a568 120:536e43f63c81
97 97
98 *******************************************************************************/ 98 *******************************************************************************/
99 99
100 struct UTimeZone 100 struct UTimeZone
101 { 101 {
102 public CString16 name; 102 public String16 name;
103 103
104 public static UTimeZone Default = {null}; 104 public static UTimeZone Default = {null};
105 public static UTimeZone Gmt = {"Etc/GMT"}; 105 public static UTimeZone Gmt = {"Etc/GMT"};
106 public static UTimeZone Greenwich = {"Etc/Greenwich"}; 106 public static UTimeZone Greenwich = {"Etc/Greenwich"};
107 public static UTimeZone Uct = {"Etc/UCT"}; 107 public static UTimeZone Uct = {"Etc/UCT"};
140 140
141 Get the default time zone. 141 Get the default time zone.
142 142
143 ***********************************************************************/ 143 ***********************************************************************/
144 144
145 static void getDefault (inout UTimeZone zone) 145 static void getDefault (ref UTimeZone zone)
146 { 146 {
147 uint format (wchar* dst, uint length, inout ICU.UErrorCode e) 147 uint format (wchar* dst, uint length, ref ICU.UErrorCode e)
148 { 148 {
149 return ucal_getDefaultTimeZone (dst, length, e); 149 return ucal_getDefaultTimeZone (dst, length, e);
150 } 150 }
151 151
152 UString s = new UString(64); 152 UString s = new UString(64);
153 s.format (&format, "failed to get default time zone"); 153 s.format (&format, "failed to get default time zone");
154 zone.name = s.get(); 154 zone.name = cast(String16) s.get();
155 } 155 }
156 156
157 /*********************************************************************** 157 /***********************************************************************
158 158
159 Set the default time zone. 159 Set the default time zone.
160 160
161 ***********************************************************************/ 161 ***********************************************************************/
162 162
163 static void setDefault (inout UTimeZone zone) 163 static void setDefault (ref UTimeZone zone)
164 { 164 {
165 ICU.UErrorCode e; 165 ICU.UErrorCode e;
166 166
167 ucal_setDefaultTimeZone (ICU.toString (zone.name), e); 167 ucal_setDefaultTimeZone (ICU.toString (zone.name), e);
168 ICU.testError (e, "failed to set default time zone"); 168 ICU.testError (e, "failed to set default time zone");
175 time zone, or zero if the time zone does not observe daylight 175 time zone, or zero if the time zone does not observe daylight
176 savings time 176 savings time
177 177
178 ***********************************************************************/ 178 ***********************************************************************/
179 179
180 static uint getDSTSavings (inout UTimeZone zone) 180 static uint getDSTSavings (ref UTimeZone zone)
181 { 181 {
182 ICU.UErrorCode e; 182 ICU.UErrorCode e;
183 183
184 uint x = ucal_getDSTSavings (ICU.toString (zone.name), e); 184 uint x = ucal_getDSTSavings (ICU.toString (zone.name), e);
185 ICU.testError (e, "failed to get DST savings"); 185 ICU.testError (e, "failed to get DST savings");
191 191
192 Iterate over the available timezone names 192 Iterate over the available timezone names
193 193
194 **********************************************************************/ 194 **********************************************************************/
195 195
196 static int opApply (int delegate(inout wchar[] element) dg) 196 static int opApply (int delegate(ref wchar[] element) dg)
197 { 197 {
198 ICU.UErrorCode e; 198 ICU.UErrorCode e;
199 wchar[] name; 199 wchar[] name;
200 int result; 200 int result;
201 201
216 complicated by the issues regarding D and DLLs on the 216 complicated by the issues regarding D and DLLs on the
217 Windows platform 217 Windows platform
218 218
219 ***********************************************************************/ 219 ***********************************************************************/
220 220
221 private static void* library; 221 mixin(/*ICU.*/genICUNative!("in"
222 222 ,"void* function (ref ICU.UErrorCode)", "ucal_openTimeZones"
223 /*********************************************************************** 223 ,"uint function (wchar*, uint, ref ICU.UErrorCode)", "ucal_getDefaultTimeZone"
224 224 ,"void function (wchar*, ref ICU.UErrorCode)", "ucal_setDefaultTimeZone"
225 ***********************************************************************/ 225 ,"uint function (wchar*, ref ICU.UErrorCode)", "ucal_getDSTSavings"
226 226 ));
227 private static extern (C)
228 {
229 void* function (inout ICU.UErrorCode) ucal_openTimeZones;
230 uint function (wchar*, uint, inout ICU.UErrorCode) ucal_getDefaultTimeZone;
231 void function (wchar*, inout ICU.UErrorCode) ucal_setDefaultTimeZone;
232 uint function (wchar*, inout ICU.UErrorCode) ucal_getDSTSavings;
233 }
234
235 /***********************************************************************
236
237 ***********************************************************************/
238
239 static FunctionLoader.Bind[] targets =
240 [
241 {cast(void**) &ucal_openTimeZones, "ucal_openTimeZones"},
242 {cast(void**) &ucal_getDefaultTimeZone, "ucal_getDefaultTimeZone"},
243 {cast(void**) &ucal_setDefaultTimeZone, "ucal_setDefaultTimeZone"},
244 {cast(void**) &ucal_getDSTSavings, "ucal_getDSTSavings"},
245 ];
246
247 /***********************************************************************
248
249 ***********************************************************************/
250
251 static this ()
252 {
253 library = FunctionLoader.bind (ICU.icuin, targets);
254 }
255
256 /***********************************************************************
257
258 ***********************************************************************/
259
260 static ~this ()
261 {
262 FunctionLoader.unbind (library);
263 }
264 } 227 }