Mercurial > projects > dwt2
comparison base/src/java/io/ByteArrayOutputStream.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 | 9f4c18c268b2 |
children |
comparison
equal
deleted
inserted
replaced
119:d00e8db0a568 | 120:536e43f63c81 |
---|---|
7 import java.lang.all; | 7 import java.lang.all; |
8 | 8 |
9 version(Tango){ | 9 version(Tango){ |
10 import tango.io.device.Array; | 10 import tango.io.device.Array; |
11 } else { // Phobos | 11 } else { // Phobos |
12 import std.outbuffer; | |
12 } | 13 } |
13 | 14 |
14 public class ByteArrayOutputStream : java.io.OutputStream.OutputStream { | 15 public class ByteArrayOutputStream : java.io.OutputStream.OutputStream { |
15 | 16 |
16 version(Tango){ | 17 version(Tango){ |
17 protected Array buffer; | 18 protected Array buffer; |
18 } else { // Phobos | 19 } else { // Phobos |
20 protected OutBuffer buffer; | |
19 } | 21 } |
20 | 22 |
21 public this (){ | 23 public this (){ |
22 version(Tango){ | 24 version(Tango){ |
23 buffer = new Array(0); | 25 buffer = new Array(0); |
24 } else { // Phobos | 26 } else { // Phobos |
25 implMissing( __FILE__, __LINE__ ); | 27 buffer = new OutBuffer(); |
26 } | 28 } |
27 } | 29 } |
28 | 30 |
29 public this ( int par_size ){ | 31 public this ( int par_size ){ |
30 version(Tango){ | 32 version(Tango){ |
31 buffer = new Array(par_size); | 33 buffer = new Array(par_size); |
32 } else { // Phobos | 34 } else { // Phobos |
33 implMissing( __FILE__, __LINE__ ); | 35 buffer = new OutBuffer(); |
36 buffer.reserve(par_size); | |
34 } | 37 } |
35 } | 38 } |
36 | 39 |
37 public override void write( int b ){ | 40 public override void write( int b ){ |
38 synchronized { | 41 synchronized { |
39 version(Tango){ | 42 version(Tango){ |
40 byte[1] a; | 43 byte[1] a = b & 0xFF; |
41 a[0] = b & 0xFF; | |
42 buffer.append(a); | 44 buffer.append(a); |
43 } else { // Phobos | 45 } else { // Phobos |
44 implMissing( __FILE__, __LINE__ ); | 46 buffer.write(cast(ubyte)(b & 0xFF)); |
45 } | 47 } |
46 } | 48 } |
47 } | 49 } |
48 | 50 |
49 public override void write( byte[] b, int off, int len ){ | 51 public override void write( in byte[] b, int off, int len ){ |
50 synchronized { | 52 synchronized { |
51 version(Tango){ | 53 version(Tango){ |
52 buffer.append( b[ off .. off + len ]); | 54 buffer.append( b[ off .. off + len ] ); |
53 } else { // Phobos | 55 } else { // Phobos |
54 implMissing( __FILE__, __LINE__ ); | 56 buffer.write( cast(ubyte[]) b[ off .. off + len ]); |
55 } | 57 } |
56 } | 58 } |
57 } | 59 } |
58 | 60 |
59 public override void write( byte[] b ){ | 61 public override void write( in byte[] b ){ |
60 synchronized { | 62 synchronized { |
61 version(Tango){ | 63 version(Tango){ |
62 buffer.append( b ); | 64 buffer.append( b ); |
63 } else { // Phobos | 65 } else { // Phobos |
64 implMissing( __FILE__, __LINE__ ); | 66 buffer.write( cast(ubyte[]) b ); |
65 } | 67 } |
66 } | 68 } |
67 } | 69 } |
68 | 70 |
69 public void writeTo( java.io.OutputStream.OutputStream out_KEYWORDESCAPE ){ | 71 public void writeTo( java.io.OutputStream.OutputStream out_KEYWORDESCAPE ){ |
77 } | 79 } |
78 | 80 |
79 public byte[] toByteArray(){ | 81 public byte[] toByteArray(){ |
80 synchronized { | 82 synchronized { |
81 version(Tango){ | 83 version(Tango){ |
82 return cast(byte[])buffer.slice(); | 84 return cast(byte[]) buffer.slice(); |
83 } else { // Phobos | 85 } else { // Phobos |
84 implMissing( __FILE__, __LINE__ ); | 86 return cast(byte[]) buffer.toBytes(); |
85 return null; | |
86 } | 87 } |
87 } | 88 } |
88 } | 89 } |
89 | 90 |
90 public int size(){ | 91 public int size(){ |
105 public String toString( int hibyte ){ | 106 public String toString( int hibyte ){ |
106 implMissing( __FILE__, __LINE__ ); | 107 implMissing( __FILE__, __LINE__ ); |
107 return null; | 108 return null; |
108 } | 109 } |
109 | 110 |
110 public override void close(){ | 111 public override void close(){ |
111 implMissing( __FILE__, __LINE__ ); | 112 implMissing( __FILE__, __LINE__ ); |
112 } | 113 } |
113 } | 114 } |
114 | 115 |
115 | 116 |