Data::Readerは本質的にkj::ArrayPtr<const kj::byte>です。
Data::Builderは本質的にkj::ArrayPtr<kj::byte>です。
kj::byteの typedef ですunsigned char。
kj::ArrayPtr基本的にはポインタとサイズのペアです。operator[]、size()、begin()、end()などを実装し、特別なイテレータ型ではなく生のポインタbegin()を返します。end()
建物:
UUID::Builder builder = ...;
kj::byte buf[16] = ...;
// option 1
builder.setData(kj::arrayPtr(buf, sizeof(buf)));
// option 2
memcpy(builder.initData(16).begin(), buf, 16);
読む:
UUID::Reader reader = ...;
auto data = reader.getData();
// option 1
// void someFunction(kj::byte* ptr, size_t size)
someFunction(data.begin(), data.size());
// option 2
kj::byte buf[16];
KJ_REQUIRE(data.size() == sizeof(buf));
memcpy(buf, data.begin(), sizeof(buf));