本文整理汇总了C++中NodeMap::empty方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeMap::empty方法的具体用法?C++ NodeMap::empty怎么用?C++ NodeMap::empty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeMap
的用法示例。
在下文中一共展示了NodeMap::empty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PostVisit
ExpressionPtr IclHostPlugin::PostVisit(const clang::Expr* expr, const insieme::core::ExpressionPtr& irExpr,
insieme::frontend::conversion::Converter& convFact) {
NodeManager& mgr = irExpr->getNodeManager();
IRBuilder builder(mgr);
const core::lang::BasicGenerator& gen = builder.getLangBasic();
iclRunKernel = irp::callExpr(pattern::any, irp::literal("icl_run_kernel"),
var("derefKernel", irp::callExpr(pattern::any, pattern::atom(gen.getRefDeref()), pattern::single(var("kernel", pattern::any)))) <<
*pattern::any << irp::callExpr(pattern::any, pattern::atom(gen.getVarlistPack()),
pattern::single(irp::tupleExpr(pattern::any << irp::expressions(*var("args", pattern::any))))));
core::pattern::TreePattern derefOfIclBuffer = irp::callExpr(pattern::atom(builder.refType(
builder.arrayType(builder.genericType("_icl_buffer")))),
pattern::atom(gen.getRefDeref()),
pattern::single(var("buffer", pattern::any)));
NodeMap replacements;
irp::matchAllPairs(iclRunKernel, irExpr, [&](const NodePtr& matchPtr, const NodeMatch& runKernel) {
// remove deref from buffers
for(NodePtr arg : runKernel["args"].getFlattened()) {
MatchOpt match = derefOfIclBuffer.matchPointer(arg);
if(match) {
replacements[match.get().getRoot()] = match.get()["buffer"].getValue();
}
}
});
if(!replacements.empty())
return transform::replaceAll(mgr, irExpr, replacements).as<ExpressionPtr>();
return irExpr;
}