Data::Reader
本质上是一个kj::ArrayPtr<const kj::byte>
.
Data::Builder
本质上是一个kj::ArrayPtr<kj::byte>
.
kj::byte
是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));