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));