1
/***************************************************************************
2
* Copyright (C) 2003 by Roberto Raggi *
3
* roberto@kdevelop.org *
5
* This program is free software; you can redistribute it and/or modify *
6
* it under the terms of the GNU General Public License as published by *
7
* the Free Software Foundation; either version 2 of the License, or *
8
* (at your option) any later version. *
10
***************************************************************************/
12
#ifndef __store_walker_h
13
#define __store_walker_h
15
#include "tree_parser.h"
16
#include <codemodel.h>
17
#include <qstringlist.h>
18
#include <qvaluestack.h>
20
class StoreWalker: public TreeParser
23
StoreWalker( const QString& fileName, CodeModel* store );
24
virtual ~StoreWalker();
32
virtual void parseTranslationUnit( TranslationUnitAST* );
35
virtual void parseDeclaration( DeclarationAST* );
36
virtual void parseLinkageSpecification( LinkageSpecificationAST* );
37
virtual void parseNamespace( NamespaceAST* );
38
virtual void parseNamespaceAlias( NamespaceAliasAST* );
39
virtual void parseUsing( UsingAST* );
40
virtual void parseUsingDirective( UsingDirectiveAST* );
41
virtual void parseTypedef( TypedefAST* );
42
virtual void parseTemplateDeclaration( TemplateDeclarationAST* );
43
virtual void parseSimpleDeclaration( SimpleDeclarationAST* );
44
virtual void parseFunctionDefinition( FunctionDefinitionAST* );
45
virtual void parseLinkageBody( LinkageBodyAST* );
46
virtual void parseAccessDeclaration( AccessDeclarationAST* );
49
virtual void parseTypeSpecifier( TypeSpecifierAST* );
50
virtual void parseClassSpecifier( ClassSpecifierAST* );
51
virtual void parseEnumSpecifier( EnumSpecifierAST* );
52
virtual void parseElaboratedTypeSpecifier( ElaboratedTypeSpecifierAST* );
54
virtual void parseTypeDeclaratation( TypeSpecifierAST* typeSpec );
55
virtual void parseDeclaration( GroupAST* funSpec, GroupAST* storageSpec, TypeSpecifierAST* typeSpec, InitDeclaratorAST* decl );
56
virtual void parseFunctionDeclaration( GroupAST* funSpec, GroupAST* storageSpec, TypeSpecifierAST* typeSpec, InitDeclaratorAST* decl );
57
virtual void parseFunctionArguments( DeclaratorAST* declarator, FunctionDom method );
58
virtual void parseBaseClause( BaseClauseAST* baseClause, ClassDom klass );
61
NamespaceDom findOrInsertNamespace( NamespaceAST* ast, const QString& name );
63
QString typeOfDeclaration( TypeSpecifierAST* typeSpec, DeclaratorAST* declarator );
64
QStringList scopeOfName( NameAST* id, const QStringList& scope );
65
QStringList scopeOfDeclarator( DeclaratorAST* d, const QStringList& scope );
70
QStringList m_currentScope;
72
QValueList<QStringList> m_imports;
80
DeclaratorAST* m_currentDeclarator;
81
QValueStack<NamespaceDom> m_currentNamespace;
82
QValueStack<ClassDom> m_currentClass;
85
StoreWalker( const StoreWalker& source );
86
void operator = ( const StoreWalker& source );
89
#endif // __store_walker_h
90
// kate: indent-mode csands; tab-width 4;