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