www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - std.container.Array support in msgpack

reply =?UTF-8?B?Ik5vcmRsw7Z3Ig==?= <per.nordlow gmail.com> writes:
I'm trying to figure out how to add raw bytes the packed stream 
in msgpack-d. My current try is

import std.stdio;
import std.conv: to;
import std.container: Array;
import msgpack;

static void stringArrayPackHandler(E)(ref Packer p,
                                       ref Array!E x)
{
     // p.put(192);
     /* p.packArray(x); */
     foreach (e; x)
         p.pack(e);
}

unittest
{
     registerPackHandler!(Array!string, stringArrayPackHandler);
     Array!string x = ["x", "y"];
     writeln(x.pack);
     writeln(["x", "y"].pack);
}

which outputs

[161, 120, 161, 121]
[146, 161, 120, 161, 121]

How do I add the leading byte 146?
Sep 27 2014
parent =?UTF-8?B?Ik5vcmRsw7Z3Ig==?= <per.nordlow gmail.com> writes:
On Saturday, 27 September 2014 at 21:24:14 UTC, Nordlöw wrote:
 How do I add the leading byte 146?
Update: This is achieved by calling stream_.put() which is only allowed in members of PackerImpl.
Sep 28 2014