languages/cpp/store_walker.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#ifndef __store_walker_h
00013
#define __store_walker_h
00014
00015
#include "tree_parser.h"
00016
#include <codemodel.h>
00017
#include <qstringlist.h>
00018
#include <qvaluestack.h>
00019
00020 class StoreWalker:
public TreeParser
00021 {
00022
public:
00023
StoreWalker(
const QString& fileName,
CodeModel* store );
00024
virtual ~StoreWalker();
00025
00026 FileDom file() {
return m_file; }
00027
00028
00029
virtual void parseTranslationUnit(
TranslationUnitAST* );
00030
00031
00032
virtual void parseDeclaration(
DeclarationAST* );
00033
virtual void parseLinkageSpecification(
LinkageSpecificationAST* );
00034
virtual void parseNamespace(
NamespaceAST* );
00035
virtual void parseNamespaceAlias(
NamespaceAliasAST* );
00036
virtual void parseUsing(
UsingAST* );
00037
virtual void parseUsingDirective(
UsingDirectiveAST* );
00038
virtual void parseTypedef(
TypedefAST* );
00039
virtual void parseTemplateDeclaration(
TemplateDeclarationAST* );
00040
virtual void parseSimpleDeclaration(
SimpleDeclarationAST* );
00041
virtual void parseFunctionDefinition(
FunctionDefinitionAST* );
00042
virtual void parseLinkageBody(
LinkageBodyAST* );
00043
virtual void parseAccessDeclaration(
AccessDeclarationAST* );
00044
00045
00046
virtual void parseTypeSpecifier(
TypeSpecifierAST* );
00047
virtual void parseClassSpecifier(
ClassSpecifierAST* );
00048
virtual void parseEnumSpecifier(
EnumSpecifierAST* );
00049
virtual void parseElaboratedTypeSpecifier(
ElaboratedTypeSpecifierAST* );
00050
00051
virtual void parseTypeDeclaratation(
TypeSpecifierAST* typeSpec );
00052
virtual void parseDeclaration(
GroupAST* funSpec,
GroupAST* storageSpec,
TypeSpecifierAST* typeSpec,
InitDeclaratorAST* decl );
00053
virtual void parseFunctionDeclaration(
GroupAST* funSpec,
GroupAST* storageSpec,
TypeSpecifierAST* typeSpec,
InitDeclaratorAST* decl );
00054
virtual void parseFunctionArguments(
DeclaratorAST* declarator,
FunctionDom method );
00055
virtual void parseBaseClause(
BaseClauseAST* baseClause,
ClassDom klass );
00056
00057
private:
00058
NamespaceDom findOrInsertNamespace(
NamespaceAST* ast,
const QString& name );
00059
00060
QString typeOfDeclaration(
TypeSpecifierAST* typeSpec,
DeclaratorAST* declarator );
00061
QStringList scopeOfName(
NameAST*
id,
const QStringList& scope );
00062
QStringList scopeOfDeclarator(
DeclaratorAST* d,
const QStringList& scope );
00063
00064
private:
00065 FileDom m_file;
00066 QString m_fileName;
00067 QStringList m_currentScope;
00068 CodeModel*
m_store;
00069 QValueList<QStringList> m_imports;
00070 int m_currentAccess;
00071 bool m_inSlots;
00072 bool m_inSignals;
00073 int m_anon;
00074 bool m_inStorageSpec;
00075 bool m_inTypedef;
00076
00077 DeclaratorAST*
m_currentDeclarator;
00078 QValueStack<NamespaceDom> m_currentNamespace;
00079 QValueStack<ClassDom> m_currentClass;
00080
00081
private:
00082
StoreWalker(
const StoreWalker& source );
00083
void operator = (
const StoreWalker& source );
00084 };
00085
00086
#endif // __store_walker_h
This file is part of the documentation for KDevelop Version 3.0.4.