forked from qt-creator/qt-creator
Added a way to bind TranslationUnitAST nodes.
This commit is contained in:
@@ -68,8 +68,6 @@ Bind::Bind(TranslationUnit *unit)
|
||||
_name(0),
|
||||
_declaratorId(0)
|
||||
{
|
||||
if (unit->ast())
|
||||
translationUnit(unit->ast()->asTranslationUnit());
|
||||
}
|
||||
|
||||
Scope *Bind::currentScope() const
|
||||
@@ -84,6 +82,13 @@ Scope *Bind::switchScope(Scope *scope)
|
||||
return previousScope;
|
||||
}
|
||||
|
||||
void Bind::operator()(TranslationUnitAST *ast, Namespace *globalNamespace)
|
||||
{
|
||||
Scope *previousScope = switchScope(globalNamespace);
|
||||
translationUnit(ast);
|
||||
(void) switchScope(previousScope);
|
||||
}
|
||||
|
||||
void Bind::statement(StatementAST *ast)
|
||||
{
|
||||
accept(ast);
|
||||
@@ -703,12 +708,9 @@ void Bind::translationUnit(TranslationUnitAST *ast)
|
||||
if (! ast)
|
||||
return;
|
||||
|
||||
Namespace *globalNamespace = control()->newNamespace(0, 0);
|
||||
Scope *previousScope = switchScope(globalNamespace);
|
||||
for (DeclarationListAST *it = ast->declaration_list; it; it = it->next) {
|
||||
this->declaration(it->value);
|
||||
}
|
||||
(void) switchScope(previousScope);
|
||||
}
|
||||
|
||||
bool Bind::visit(ObjCProtocolRefsAST *ast)
|
||||
|
||||
@@ -59,6 +59,13 @@ class CPLUSPLUS_EXPORT Bind: protected ASTVisitor
|
||||
public:
|
||||
Bind(TranslationUnit *unit);
|
||||
|
||||
void operator()(TranslationUnitAST *ast, Namespace *globalNamespace);
|
||||
|
||||
protected:
|
||||
using ASTVisitor::translationUnit;
|
||||
|
||||
static int visibilityForAccessSpecifier(int tokenKind);
|
||||
|
||||
typedef FullySpecifiedType ExpressionTy;
|
||||
ExpressionTy expression(ExpressionAST *ast);
|
||||
|
||||
@@ -75,11 +82,6 @@ public:
|
||||
Scope *currentScope() const;
|
||||
Scope *switchScope(Scope *scope);
|
||||
|
||||
protected:
|
||||
using ASTVisitor::translationUnit;
|
||||
|
||||
static int visibilityForAccessSpecifier(int tokenKind);
|
||||
|
||||
const Name *objCSelectorArgument(ObjCSelectorArgumentAST *ast, bool *hasArg);
|
||||
void attribute(AttributeAST *ast);
|
||||
FullySpecifiedType declarator(DeclaratorAST *ast, const FullySpecifiedType &init, DeclaratorIdAST **declaratorId);
|
||||
|
||||
Reference in New Issue
Block a user