本文整理汇总了C++中NativeIterator::propertiesBegin方法的典型用法代码示例。如果您正苦于以下问题:C++ NativeIterator::propertiesBegin方法的具体用法?C++ NativeIterator::propertiesBegin怎么用?C++ NativeIterator::propertiesBegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NativeIterator
的用法示例。
在下文中一共展示了NativeIterator::propertiesBegin方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Reify
static JSObject* Reify(JSContext* cx, JS::Compartment* origin,
HandleObject iter) {
// Ensure iterator gets closed.
auto autoCloseIterator = mozilla::MakeScopeExit([=] { CloseIterator(iter); });
NativeIterator* ni = iter->as<PropertyIteratorObject>().getNativeIterator();
RootedObject obj(cx, ni->objectBeingIterated());
// Wrap iteratee.
if (!origin->wrap(cx, &obj)) {
return nullptr;
}
// Wrap the elements in the iterator's snapshot.
size_t length = ni->numKeys();
AutoIdVector keys(cx);
if (length > 0) {
if (!keys.reserve(length)) {
return nullptr;
}
RootedId id(cx);
RootedValue v(cx);
for (size_t i = 0; i < length; ++i) {
v.setString(ni->propertiesBegin()[i]);
if (!ValueToId<CanGC>(cx, v, &id)) {
return nullptr;
}
cx->markId(id);
keys.infallibleAppend(id);
}
}
// Return iterator in current compartment.
return EnumeratedIdVectorToIterator(cx, obj, keys);
}