本文整理汇总了C++中ZoneSet类的典型用法代码示例。如果您正苦于以下问题:C++ ZoneSet类的具体用法?C++ ZoneSet怎么用?C++ ZoneSet使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ZoneSet类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: MOZ_ASSERT
bool
RootList::init(HandleObject debuggees)
{
MOZ_ASSERT(debuggees && JS::dbg::IsDebugger(ObjectValue(*debuggees)));
js::Debugger *dbg = js::Debugger::fromJSObject(debuggees);
ZoneSet debuggeeZones;
if (!debuggeeZones.init())
return false;
for (js::WeakGlobalObjectSet::Range r = dbg->allDebuggees(); !r.empty(); r.popFront()) {
if (!debuggeeZones.put(r.front()->zone()))
return false;
}
if (!init(debuggeeZones))
return false;
// Ensure that each of our debuggee globals are in the root list.
for (js::WeakGlobalObjectSet::Range r = dbg->allDebuggees(); !r.empty(); r.popFront()) {
if (!addRoot(JS::ubi::Node(static_cast<JSObject *>(r.front())),
MOZ_UTF16("debuggee global")))
{
return false;
}
}
return true;
}
开发者ID:mmatyas,项目名称:mozjs,代码行数:29,代码来源:UbiNode.cpp
示例2: BOOST_FOREACH
void
PictureZoneEditor::commitZones()
{
ZoneSet zones;
BOOST_FOREACH(EditableZoneSet::Zone const& zone, m_zones) {
zones.add(Zone(*zone.spline(), *zone.properties()));
}
开发者ID:DikBSD,项目名称:STE,代码行数:8,代码来源:PictureZoneEditor.cpp
示例3: BOOST_FOREACH
void
FillZoneEditor::commitZones()
{
ZoneSet zones;
BOOST_FOREACH(EditableZoneSet::Zone const& zone, m_zones) {
SerializableSpline const spline(
SerializableSpline(*zone.spline()).transformed(m_imageToOrig)
);
zones.add(Zone(spline, *zone.properties()));
}
开发者ID:4sp1r3,项目名称:scantailor,代码行数:11,代码来源:FillZoneEditor.cpp
示例4: filter_el
void
Filter::loadSettings(ProjectReader const& reader, QDomElement const& filters_el)
{
m_ptrSettings->clear();
QDomElement const filter_el(
filters_el.namedItem("output").toElement()
);
QString const page_tag_name("page");
QDomNode node(filter_el.firstChild());
for (; !node.isNull(); node = node.nextSibling()) {
if (!node.isElement()) {
continue;
}
if (node.nodeName() != page_tag_name) {
continue;
}
QDomElement const el(node.toElement());
bool ok = true;
int const id = el.attribute("id").toInt(&ok);
if (!ok) {
continue;
}
PageId const page_id(reader.pageId(id));
if (page_id.isNull()) {
continue;
}
ZoneSet const picture_zones(el.namedItem("zones").toElement(), m_pictureZonePropFactory);
if (!picture_zones.empty()) {
m_ptrSettings->setPictureZones(page_id, picture_zones);
}
ZoneSet const fill_zones(el.namedItem("fill-zones").toElement(), m_fillZonePropFactory);
if (!fill_zones.empty()) {
m_ptrSettings->setFillZones(page_id, fill_zones);
}
QDomElement const params_el(el.namedItem("params").toElement());
if (!params_el.isNull()) {
Params const params(params_el);
m_ptrSettings->setParams(page_id, params);
}
QDomElement const output_params_el(el.namedItem("output-params").toElement());
if (!output_params_el.isNull()) {
OutputParams const output_params(output_params_el);
m_ptrSettings->setOutputParams(page_id, output_params);
}
}
}
开发者ID:Combustible,项目名称:scantailor,代码行数:54,代码来源:Filter.cpp
示例5: PopulateZonesWithGlobals
// If we are only taking a snapshot of the heap affected by the given set of
// globals, find the set of zones the globals are allocated within. Returns
// false on OOM failure.
static bool
PopulateZonesWithGlobals(ZoneSet& zones, AutoObjectVector& globals)
{
if (!zones.init())
return false;
unsigned length = globals.length();
for (unsigned i = 0; i < length; i++) {
if (!zones.put(GetObjectZone(globals[i])))
return false;
}
return true;
}
开发者ID:Klaudit,项目名称:cyberfox,代码行数:17,代码来源:HeapSnapshot.cpp
示例6: allRootEdges
bool
RootList::init(ZoneSet &debuggees)
{
SimpleEdgeVector allRootEdges(cx);
SimpleEdgeVectorTracer tracer(cx, &allRootEdges, wantNames);
JS_TraceRuntime(&tracer);
if (!tracer.okay)
return false;
JS_TraceIncomingCCWs(&tracer, debuggees);
if (!tracer.okay)
return false;
for (SimpleEdgeVector::Range r = allRootEdges.all(); !r.empty(); r.popFront()) {
SimpleEdge &edge = r.front();
Zone *zone = edge.referent.zone();
if (zone && !debuggees.has(zone))
continue;
if (!edges.append(mozilla::Move(edge)))
return false;
}
noGC.emplace(cx->runtime());
return true;
}
开发者ID:mmatyas,项目名称:mozjs,代码行数:25,代码来源:UbiNode.cpp
示例7: tracer
bool
RootList::init(CompartmentSet& debuggees)
{
EdgeVector allRootEdges;
EdgeVectorTracer tracer(rt, &allRootEdges, wantNames);
ZoneSet debuggeeZones;
if (!debuggeeZones.init())
return false;
for (auto range = debuggees.all(); !range.empty(); range.popFront()) {
if (!debuggeeZones.put(range.front()->zone()))
return false;
}
js::TraceRuntime(&tracer);
if (!tracer.okay)
return false;
TraceIncomingCCWs(&tracer, debuggees);
if (!tracer.okay)
return false;
for (EdgeVector::Range r = allRootEdges.all(); !r.empty(); r.popFront()) {
Edge& edge = r.front();
JSCompartment* compartment = edge.referent.compartment();
if (compartment && !debuggees.has(compartment))
continue;
Zone* zone = edge.referent.zone();
if (zone && !debuggeeZones.has(zone))
continue;
if (!edges.append(mozilla::Move(edge)))
return false;
}
noGC.emplace(rt);
return true;
}
开发者ID:JefferyQ,项目名称:spidernode,代码行数:39,代码来源:UbiNode.cpp
示例8: EstablishBoundaries
// Choose roots and limits for a traversal, given `boundaries`. Set `roots` to
// the set of nodes within the boundaries that are referred to by nodes
// outside. If `boundaries` does not include all JS zones, initialize `zones` to
// the set of included zones; otherwise, leave `zones` uninitialized. (You can
// use zones.initialized() to check.)
//
// If `boundaries` is incoherent, or we encounter an error while trying to
// handle it, or we run out of memory, set `rv` appropriately and return
// `false`.
static bool
EstablishBoundaries(JSContext* cx,
ErrorResult& rv,
const HeapSnapshotBoundaries& boundaries,
ubi::RootList& roots,
ZoneSet& zones)
{
MOZ_ASSERT(!roots.initialized());
MOZ_ASSERT(!zones.initialized());
bool foundBoundaryProperty = false;
if (boundaries.mRuntime.WasPassed()) {
foundBoundaryProperty = true;
if (!boundaries.mRuntime.Value()) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
if (!roots.init()) {
rv.Throw(NS_ERROR_OUT_OF_MEMORY);
return false;
}
}
if (boundaries.mDebugger.WasPassed()) {
if (foundBoundaryProperty) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
foundBoundaryProperty = true;
JSObject* dbgObj = boundaries.mDebugger.Value();
if (!dbgObj || !dbg::IsDebugger(*dbgObj)) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
AutoObjectVector globals(cx);
if (!dbg::GetDebuggeeGlobals(cx, *dbgObj, globals) ||
!PopulateZonesWithGlobals(zones, globals) ||
!roots.init(zones) ||
!AddGlobalsAsRoots(globals, roots))
{
rv.Throw(NS_ERROR_OUT_OF_MEMORY);
return false;
}
}
if (boundaries.mGlobals.WasPassed()) {
if (foundBoundaryProperty) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
foundBoundaryProperty = true;
uint32_t length = boundaries.mGlobals.Value().Length();
if (length == 0) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
AutoObjectVector globals(cx);
for (uint32_t i = 0; i < length; i++) {
JSObject* global = boundaries.mGlobals.Value().ElementAt(i);
if (!JS_IsGlobalObject(global)) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
if (!globals.append(global)) {
rv.Throw(NS_ERROR_OUT_OF_MEMORY);
return false;
}
}
if (!PopulateZonesWithGlobals(zones, globals) ||
!roots.init(zones) ||
!AddGlobalsAsRoots(globals, roots))
{
rv.Throw(NS_ERROR_OUT_OF_MEMORY);
return false;
}
}
if (!foundBoundaryProperty) {
rv.Throw(NS_ERROR_INVALID_ARG);
return false;
}
MOZ_ASSERT(roots.initialized());
//.........这里部分代码省略.........
开发者ID:Klaudit,项目名称:cyberfox,代码行数:101,代码来源:HeapSnapshot.cpp
注:本文中的ZoneSet类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论