comparison com.ibm.icu/src/com/ibm/icu/mangoicu/USearch.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
203 Creating a search iterator data struct using the argument 203 Creating a search iterator data struct using the argument
204 locale language rule set 204 locale language rule set
205 205
206 ***********************************************************************/ 206 ***********************************************************************/
207 207
208 this (UStringView pattern, UStringView text, inout ULocale locale, UBreakIterator* iterator = null) 208 this (UStringView pattern, UStringView text, ref ULocale locale, UBreakIterator* iterator = null)
209 { 209 {
210 UErrorCode e; 210 UErrorCode e;
211 211
212 this.iterator = iterator; 212 this.iterator = iterator;
213 handle = usearch_open (pattern.get.ptr, pattern.length, text.get.ptr, text.length, toString(locale.name), ( iterator is null ) ? null : iterator.handle, e); 213 handle = usearch_open (pattern.get.ptr, pattern.length, text.get.ptr, text.length, toString(locale.name), ( iterator is null ) ? null : iterator.handle, e);
298 298
299 ***********************************************************************/ 299 ***********************************************************************/
300 300
301 void getMatchedText (UString s) 301 void getMatchedText (UString s)
302 { 302 {
303 uint fmt (wchar* dst, uint length, inout UErrorCode e) 303 uint fmt (wchar* dst, uint length, ref UErrorCode e)
304 { 304 {
305 return usearch_getMatchedText (handle, dst, length, e); 305 return usearch_getMatchedText (handle, dst, length, e);
306 } 306 }
307 307
308 s.format (&fmt, "failed to extract matched text"); 308 s.format (&fmt, "failed to extract matched text");
523 complicated by the issues regarding D and DLLs on the 523 complicated by the issues regarding D and DLLs on the
524 Windows platform 524 Windows platform
525 525
526 ***********************************************************************/ 526 ***********************************************************************/
527 527
528 private static void* library; 528 mixin(genICUNative!("in"
529 529 ,"Handle function (wchar*, uint, wchar*, uint, char*, void*, ref UErrorCode)", "usearch_open"
530 /*********************************************************************** 530 ,"Handle function (wchar*, uint, wchar*, uint, Handle, void*, ref UErrorCode)", "usearch_openFromCollator"
531 531 ,"void function (Handle)", "usearch_close"
532 ***********************************************************************/ 532 ,"void function (Handle, uint, ref UErrorCode)", "usearch_setOffset"
533 533 ,"uint function (Handle)", "usearch_getOffset"
534 private static extern (C) 534 ,"uint function (Handle)", "usearch_getMatchedStart"
535 { 535 ,"uint function (Handle)", "usearch_getMatchedLength"
536 Handle function (wchar*, uint, wchar*, uint, char*, void*, inout UErrorCode) usearch_open; 536 ,"uint function (Handle, wchar*, uint, ref UErrorCode)", "usearch_getMatchedText"
537 Handle function (wchar*, uint, wchar*, uint, Handle, void*, inout UErrorCode) usearch_openFromCollator; 537 ,"void function (Handle, wchar*, uint, ref UErrorCode)", "usearch_setText"
538 void function (Handle) usearch_close; 538 ,"wchar* function (Handle, uint*)", "usearch_getText"
539 void function (Handle, uint, inout UErrorCode) usearch_setOffset; 539 ,"void function (Handle, wchar*, uint, ref UErrorCode)", "usearch_setPattern"
540 uint function (Handle) usearch_getOffset; 540 ,"wchar* function (Handle, uint*)", "usearch_getPattern"
541 uint function (Handle) usearch_getMatchedStart; 541 ,"uint function (Handle, ref UErrorCode)", "usearch_first"
542 uint function (Handle) usearch_getMatchedLength; 542 ,"uint function (Handle, ref UErrorCode)", "usearch_last"
543 uint function (Handle, wchar*, uint, inout UErrorCode) usearch_getMatchedText; 543 ,"uint function (Handle, ref UErrorCode)", "usearch_next"
544 void function (Handle, wchar*, uint, inout UErrorCode) usearch_setText; 544 ,"uint function (Handle, ref UErrorCode)", "usearch_previous"
545 wchar* function (Handle, uint*) usearch_getText; 545 ,"uint function (Handle, uint, ref UErrorCode)", "usearch_following"
546 void function (Handle, wchar*, uint, inout UErrorCode) usearch_setPattern; 546 ,"uint function (Handle, uint, ref UErrorCode)", "usearch_preceding"
547 wchar* function (Handle, uint*) usearch_getPattern; 547 ,"void function (Handle)", "usearch_reset"
548 uint function (Handle, inout UErrorCode) usearch_first; 548 ,"void function (Handle, Handle, ref UErrorCode)", "usearch_setBreakIterator"
549 uint function (Handle, inout UErrorCode) usearch_last; 549 ,"Handle function (Handle)", "usearch_getCollator"
550 uint function (Handle, inout UErrorCode) usearch_next; 550 ,"void function (Handle, Handle, ref UErrorCode)", "usearch_setCollator"
551 uint function (Handle, inout UErrorCode) usearch_previous; 551 ));
552 uint function (Handle, uint, inout UErrorCode) usearch_following;
553 uint function (Handle, uint, inout UErrorCode) usearch_preceding;
554 void function (Handle) usearch_reset;
555 void function (Handle, Handle, inout UErrorCode) usearch_setBreakIterator;
556 Handle function (Handle) usearch_getCollator;
557 void function (Handle, Handle, inout UErrorCode) usearch_setCollator;
558 }
559
560 /***********************************************************************
561
562 ***********************************************************************/
563
564 static FunctionLoader.Bind[] targets =
565 [
566 {cast(void**) &usearch_open, "usearch_open"},
567 {cast(void**) &usearch_openFromCollator, "usearch_openFromCollator"},
568 {cast(void**) &usearch_close, "usearch_close"},
569 {cast(void**) &usearch_setOffset, "usearch_setOffset"},
570 {cast(void**) &usearch_getOffset, "usearch_getOffset"},
571 {cast(void**) &usearch_getMatchedStart, "usearch_getMatchedStart"},
572 {cast(void**) &usearch_getMatchedLength, "usearch_getMatchedLength"},
573 {cast(void**) &usearch_getMatchedText, "usearch_getMatchedText"},
574 {cast(void**) &usearch_setText, "usearch_setText"},
575 {cast(void**) &usearch_getText, "usearch_getText"},
576 {cast(void**) &usearch_setPattern, "usearch_setPattern"},
577 {cast(void**) &usearch_getPattern, "usearch_getPattern"},
578 {cast(void**) &usearch_first, "usearch_first"},
579 {cast(void**) &usearch_last, "usearch_last"},
580 {cast(void**) &usearch_next, "usearch_next"},
581 {cast(void**) &usearch_previous, "usearch_previous"},
582 {cast(void**) &usearch_following, "usearch_following"},
583 {cast(void**) &usearch_preceding, "usearch_preceding"},
584 {cast(void**) &usearch_reset, "usearch_reset"},
585 {cast(void**) &usearch_setBreakIterator, "usearch_setBreakIterator"},
586 {cast(void**) &usearch_getCollator, "usearch_getCollator"},
587 {cast(void**) &usearch_setCollator, "usearch_setCollator"},
588 ];
589
590 /***********************************************************************
591
592 ***********************************************************************/
593
594 static this ()
595 {
596 library = FunctionLoader.bind (icuin, targets);
597 }
598
599 /***********************************************************************
600
601 ***********************************************************************/
602
603 static ~this ()
604 {
605 FunctionLoader.unbind (library);
606 }
607 } 552 }