1 /**
2  * Authors: Frank Benoit <keinfarbton@googlemail.com>
3  */
4 module java.io.ByteArrayOutputStream;
5 
6 public import java.io.OutputStream;
7 import java.lang.all;
8 
9 version(Tango){
10     import tango.io.device.Array;
11 } else { // Phobos
12     import std.outbuffer;
13 }
14 
15 public class ByteArrayOutputStream : java.io.OutputStream.OutputStream {
16 
17     version(Tango){
18         protected Array buffer;
19     } else { // Phobos
20         protected OutBuffer buffer;
21     }
22 
23     public this (){
24         version(Tango){
25             buffer = new Array(0, 1);
26         } else { // Phobos
27             buffer = new OutBuffer();
28         }
29     }
30 
31     public this ( int par_size ){
32         version(Tango){
33             buffer = new Array(par_size, 1);
34         } else { // Phobos
35             buffer = new OutBuffer();
36             buffer.reserve(par_size);
37         }
38     }
39 
40     public override void write( int b ){
41         synchronized {
42             version(Tango){
43                 byte[1] a = b & 0xFF;
44                 buffer.append(a);
45             } else { // Phobos
46                 buffer.write(cast(ubyte)(b & 0xFF));
47             }
48         }
49     }
50 
51     public override void write( in byte[] b, ptrdiff_t off, ptrdiff_t len ){
52         synchronized {
53             version(Tango){
54                 buffer.append( b[ off .. off + len ] );
55             } else { // Phobos
56                 buffer.write( cast(ubyte[]) b[ off .. off + len ]);
57             }
58         }
59     }
60 
61     public override void write( in byte[] b ){
62         synchronized {
63             version(Tango){
64                 buffer.append( b );
65             } else { // Phobos
66                 buffer.write( cast(ubyte[]) b );
67             }
68         }
69     }
70 
71     public void writeTo( java.io.OutputStream.OutputStream out_KEYWORDESCAPE ){
72         synchronized
73         implMissing( __FILE__, __LINE__ );
74     }
75 
76     public void reset(){
77         synchronized
78         implMissing( __FILE__, __LINE__ );
79     }
80 
81     public byte[] toByteArray(){
82         synchronized {
83             version(Tango){
84                 return cast(byte[]) buffer.slice();
85             } else { // Phobos
86                 return cast(byte[]) buffer.toBytes();
87             }
88         }
89     }
90 
91     public int size(){
92         implMissing( __FILE__, __LINE__ );
93         return 0;
94     }
95 
96     public override String toString(){
97         implMissing( __FILE__, __LINE__ );
98         return null;
99     }
100 
101     public String toString( String enc ){
102         implMissing( __FILE__, __LINE__ );
103         return null;
104     }
105 
106     public String toString( int hibyte ){
107         implMissing( __FILE__, __LINE__ );
108         return null;
109     }
110 
111     public override void close(){
112         // Nothing.
113     }
114 }
115 
116