Sorry, I didn't reused the buffer. Hope this helps:<div><br></div><div><div style><font face="'courier new', monospace"> auto buffer = new OutBuffer();</font></div><div style><font face="'courier new', monospace"> </font></div>
<div style><font face="'courier new', monospace"> int a = 42;</font></div><div style><font face="'courier new', monospace"> buffer.write(a);</font></div><div style><font face="'courier new', monospace"> </font></div>
<div style><font face="'courier new', monospace"> byte[] bytes = cast(byte[]) buffer.toBytes();</font></div><div style><font face="'courier new', monospace"> ubyte[] ubytes = buffer.toBytes();</font></div>
</div><div style><font face="'courier new', monospace"> </font></div><div style><font face="'courier new', monospace"> buffer.offset = 0; // cleared</font></div><div style><font face="'courier new', monospace"> buffer.write(cast(byte[]) [1,2,0x2]);</font></div>
<div><div> </div><div>Timon, std.outbuffer.OutBuffer looks like your Filler struct.</div><div><br></div>Pedro Lacerda<br><br>
<br><br><div class="gmail_quote">2012/2/7 Timon Gehr <span dir="ltr"><<a href="mailto:timon.gehr@gmx.ch" target="_blank">timon.gehr@gmx.ch</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>On 02/07/2012 04:50 PM, Timon Gehr wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 02/07/2012 04:49 PM, Timon Gehr wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 02/07/2012 02:35 PM, Mafi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
does anybody know how to bring <a href="http://std.conv.to" target="_blank">std.conv.to</a> or something similar to<br>
output into an output range?<br>
<br>
int a = 42;<br>
char[25] buffer;<br>
to!typeof(buffer[])(a, buffer[]);<br>
<br>
I want to send these texts throw sockets. Therefore I'd like to reuse<br>
the buffer.<br>
<br>
Mafi<br>
</blockquote>
<br>
You could use std.format.formattedWrite.<br>
<br>
import std.exception, std.format, std.stdio;<br>
<br>
// I don't know if this already exists somewhere:<br>
struct Filler(T:T[]){<br>
this(T[] pl){payload = pl;}<br>
size_t index=0;<br>
T[] payload;<br>
void put(const T[] s){<br>
enforce(payload.length>=index+<u></u>s.length);<br>
payload[index..index+s.length]<u></u>=s;<br>
index+=s.length;<br>
}<br>
void put(char s){<br>
</blockquote>
<br>
Should be 'void put(T s)'.<br>
</blockquote>
<br></div></div>
Just noticed that this overload is not even necessary.<div><div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
enforce(payload.length>=index)<u></u>;<br>
payload[index++]=s;<br>
}<br>
@property auto data(){return payload[0..index];}<br>
}<br>
auto filler(T)(T pl){return Filler!T(pl);}<br>
<br>
void main(){<br>
int a = 42;<br>
char[25] buffer;<br>
auto f = filler(buffer[]);<br>
formattedWrite(&f,"%s",a);<br>
writeln(f.data);<br>
}<br>
</blockquote>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>