本文整理汇总了C++中TranslationUnit::lookup方法的典型用法代码示例。如果您正苦于以下问题:C++ TranslationUnit::lookup方法的具体用法?C++ TranslationUnit::lookup怎么用?C++ TranslationUnit::lookup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TranslationUnit
的用法示例。
在下文中一共展示了TranslationUnit::lookup方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scopes
Nameables
resolve (TranslationUnit& tu,
ScopedName const& from,
Name const& name)
{
if (trace) cerr << "resolve: starting resolution process for \'"
<< name << "\' from \'" << from << "\'" << endl;
Nameables r;
// Check if name is already scoped.
//
if (name.scoped ())
{
r = tu.lookup (ScopedName (name));
}
else
{
// Obtain all nodes corresponding to this scope name.
//
for (ScopedName next (from);;)
{
Nameables scopes (tu.lookup (next));
// Lookup the name in each scope.
//
for (Nameables::const_iterator
i (scopes.begin ()), end (scopes.end ());
i != end; ++i)
{
if (Scope* s = dynamic_cast<Scope*> (*i))
{
s->lookup (name, r);
}
}
if (r.begin () != r.end () || next.simple ())
{
// Found something -or- at the root scope.
//
break;
}
next = ScopedName (next.begin (), next.end () - 1);
}
}
if (r.begin () == r.end ())
{
if (trace) cerr << "resolve: resolution process for \'"
<< name << "\' from \'" << from << "\' failed."
<< endl;
throw NotFound ();
}
else
{
if (trace) cerr << "resolve: resolution process for \'"
<< name << "\' from \'" << from << "\' succeeded:"
<< endl;
for (Nameables::const_iterator i (r.begin ()), end (r.end ());
i != end; ++i)
{
if (trace) cerr << "\t\'" << (**i).scoped_name () << "\'"
<< endl;
}
}
return r;
}