本文整理汇总了C++中AstInterface::CreateVarRef方法的典型用法代码示例。如果您正苦于以下问题:C++ AstInterface::CreateVarRef方法的具体用法?C++ AstInterface::CreateVarRef怎么用?C++ AstInterface::CreateVarRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AstInterface
的用法示例。
在下文中一共展示了AstInterface::CreateVarRef方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paramMap
static bool
AliasAnnotAnal(AstInterface& fa,
OperatorAnnotCollection <OperatorAliasDescriptor>& aliasInfo,
const AstNodePtr& fc, const AstNodePtr& result,
CollectObject< pair<AstNodePtr, int> >& collectalias)
{
AstInterface::AstNodeList args;
OperatorAliasDescriptor desc;
if (!aliasInfo.known_operator( fa, fc, &args, &desc, false) )
return false;
ReplaceParams paramMap( desc.get_param_decl().get_params(), args);
paramMap.add("result", result);
int index = 0;
for (OperatorAliasDescriptor::const_iterator p1 = desc.begin();
p1 != desc.end(); ++p1, ++index) {
const NameGroup& cur = *p1;
for (NameGroup::const_iterator p2 = cur.begin();
p2 != cur.end(); ++p2) {
string varname = *p2;
AstNodePtr arg = paramMap.find(varname).get_ast();
if (arg != AST_NULL) {
collectalias( pair<AstNodePtr, int>(arg, index));
}
else {
AstNodePtr var = fa.CreateVarRef(varname);
collectalias( pair<AstNodePtr, int>(var, index));
}
}
}
return true;
}
示例2: paramMap
void OperatorSideEffectDescriptor::
get_side_effect( AstInterface& fa,
AstInterface::AstNodeList& args, CollectObject< AstNodePtr >& collect)
{
ReplaceParams paramMap( get_param_decl().get_params(), args);
for (OperatorSideEffectDescriptor::const_iterator p = begin(); p != end(); ++p) {
string varname = *p;
AstNodePtr arg = paramMap.find(varname).get_ast();
if (arg != AST_NULL) {
collect( arg);
}
else {
AstNodePtr var = fa.CreateVarRef(varname);
collect( var);
}
}
}
示例3: CodeGen
AstNodePtr SymbolicVar :: CodeGen( AstInterface &fa) const
{
return fa.CreateVarRef(varname, scope);
}