KDevelop API Documentation

languages/cpp/store_walker.h

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 2003 by Roberto Raggi * 00003 * roberto@kdevelop.org * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 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 // translation-unit 00029 virtual void parseTranslationUnit( TranslationUnitAST* ); 00030 00031 // declarations 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 // type-specifier 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
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:43 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003