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.1.2.