KDevelop API Documentation

AdaStoreWalker.hpp

Go to the documentation of this file.
00001 #ifndef INC_AdaStoreWalker_hpp_
00002 #define INC_AdaStoreWalker_hpp_
00003 
00004 #line 1 "expandedada.store.g"
00005 
00006 #include <qstring.h>
00007 #include <qstringlist.h>
00008 #include <qfileinfo.h>
00009 
00010 #include <codemodel.h>
00011 #include "AdaAST.hpp"
00012 #include "ada_utils.hpp"
00013 
00014 #line 15 "AdaStoreWalker.hpp"
00015 #include <antlr/config.hpp>
00016 #include "AdaStoreWalkerTokenTypes.hpp"
00017 /* $ANTLR 2.7.2: "expandedada.store.g" -> "AdaStoreWalker.hpp"$ */
00018 #include <antlr/TreeParser.hpp>
00019 
00020 #line 10 "expandedada.store.g"
00021 
00022 #include <codemodel.h>
00023 #include <kdebug.h>
00024 
00025 #line 26 "AdaStoreWalker.hpp"
00026 class AdaStoreWalker : public ANTLR_USE_NAMESPACE(antlr)TreeParser, public AdaStoreWalkerTokenTypes
00027 {
00028 #line 25 "expandedada.store.g"
00029 
00030 private:
00031     QString m_fileName;
00032     QValueList<NamespaceDom> m_scopeStack;
00033     CodeModel* m_model;
00034     QValueList<QStringList> m_imports;
00035     NamespaceDom m_currentContainer;
00036     int m_currentAccess;
00037     bool m_addToStore; /* auxiliary variable: for the moment, this is `true'
00038                           only when we are in specs, not bodies.  */
00039     bool m_isSubprogram;  // auxiliary to def_id()
00040     FileDom m_file;
00041 
00042 public:
00043     void setCodeModel (CodeModel* model)     { m_model = model; }
00044     CodeModel* codeModel ()                  { return m_model; }
00045     const CodeModel* codeModel () const      { return m_model; }
00046 
00047     QString fileName () const                  { return m_fileName; }
00048     void setFileName (const QString& fileName) { m_fileName = fileName; }
00049 
00050     void init () {
00051         m_scopeStack.clear ();
00052         m_imports.clear ();
00053         m_currentContainer = m_model->globalNamespace ();
00054         m_scopeStack.append (m_currentContainer);
00055         m_currentAccess = CodeModelItem::Public;
00056         m_addToStore = false;
00057         m_isSubprogram = false;
00058         if (m_model->hasFile(m_fileName))
00059             m_model->removeFile (m_model->fileByName(m_fileName));
00060         m_file = m_model->create<FileModel>();
00061         m_file->setName(m_fileName);
00062         m_model->addFile(m_file);
00063     }
00064 
00065     void wipeout ()            { m_model->wipeout (); }
00066 //    void out ()                { m_store->out (); }
00067     void removeWithReferences (const QString& fileName) {
00068         m_model->removeFile (m_model->fileByName(fileName));
00069     }
00070     NamespaceDom insertScopeContainer
00071                 (NamespaceDom scope, const QStringList & scopes ) {
00072         QStringList::ConstIterator it = scopes.begin();
00073         QString prefix( *it );
00074         NamespaceDom ns = scope->namespaceByName( prefix );
00075 //        kdDebug() << "insertScopeContainer begin with prefix " << prefix << endl;
00076         if (!ns.data()) {
00077 //            kdDebug() << "insertScopeContainer: ns is empty" << endl;
00078             ns = m_model->create<NamespaceModel>();
00079 //            kdDebug() << "insertScopeContainer: ns created" << endl;
00080             ns->setName( prefix );
00081 //            kdDebug() << "insertScopeContainer: ns name set" << endl;
00082             scope->addNamespace( ns );
00083 //            kdDebug() << "insertScopeContainer: ns added to a scope" << endl;
00084 
00085             if (scope == m_model->globalNamespace())
00086                 m_file->addNamespace( ns );
00087         }
00088 //        kdDebug() << "insertScopeContainer: while" << endl;
00089         while ( ++it != scopes.end() ) {
00090             QString nameSegment( *it );
00091             prefix += "." + nameSegment;
00092 //            kdDebug() << "insertScopeContainer: while prefix = " << prefix << endl;
00093             NamespaceDom inner = scope->namespaceByName( prefix );
00094             if (!inner.data() ) {
00095 //                kdDebug() << "insertScopeContainer: inner is empty " << endl;
00096                 inner = m_model->create<NamespaceModel>();
00097 //                kdDebug() << "insertScopeContainer: inner created " << endl;
00098                 inner->setName( nameSegment );
00099                 ns->addNamespace( inner );
00100 //                kdDebug() << "insertScopeContainer: inner added " << endl;
00101             }
00102             ns = inner;
00103         }
00104         return ns;
00105     }
00106     NamespaceDom defineScope( RefAdaAST namenode ) {
00107        QStringList scopes( qnamelist( namenode ) );
00108 //        kdDebug() << "defineScope: " << scopes.join(" ") << endl;
00109        NamespaceDom psc = insertScopeContainer( m_currentContainer, scopes );
00110 //        kdDebug() << "defineScope psc created" << endl;
00111        psc->setStartPosition(namenode->getLine(), namenode->getColumn());
00112 //        kdDebug() << "defineScope start position set" << endl;
00113        psc->setFileName(m_fileName);
00114 //        kdDebug() << "defineScope file name set" << endl;
00115        // psc->setEndPosition (endLine, 0);
00116 //        kdDebug() << "defineScope return" << endl;
00117        return psc;
00118     }
00119 #line 30 "AdaStoreWalker.hpp"
00120 public:
00121     AdaStoreWalker();
00122     void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory );
00123     int getNumTokens() const
00124     {
00125         return AdaStoreWalker::NUM_TOKENS;
00126     }
00127     const char* getTokenName( int type ) const
00128     {
00129         if( type > getNumTokens() ) return 0;
00130         return AdaStoreWalker::tokenNames[type];
00131     }
00132     public: void compilation_unit(RefAdaAST _t);
00133     public: void context_items_opt(RefAdaAST _t);
00134     public: void library_item(RefAdaAST _t);
00135     public: void subunit(RefAdaAST _t);
00136     public: void pragma(RefAdaAST _t);
00137     public: void with_clause(RefAdaAST _t);
00138     public: void compound_name(RefAdaAST _t);
00139     public: void use_clause(RefAdaAST _t);
00140     public: void subtype_mark(RefAdaAST _t);
00141     public: void lib_subprog_decl_or_rename_or_inst_or_body(RefAdaAST _t);
00142     public: void def_id(RefAdaAST _t);
00143     public: void pkg_body_part(RefAdaAST _t);
00144     public: void generic_inst(RefAdaAST _t);
00145     public: void pkg_spec_part(RefAdaAST _t);
00146     public: void renames(RefAdaAST _t);
00147     public: void generic_decl(RefAdaAST _t);
00148     public: void subprog_def_id(RefAdaAST _t);
00149     public: void subprog_decl(RefAdaAST _t);
00150     public: void formal_part_opt(RefAdaAST _t);
00151     public: void def_designator(RefAdaAST _t);
00152     public: void function_tail(RefAdaAST _t);
00153     public: void definable_operator_symbol(RefAdaAST _t);
00154     public: void spec_decl_part(RefAdaAST _t);
00155     public: void basic_declarative_items_opt(RefAdaAST _t);
00156     public: void generic_formal_part_opt(RefAdaAST _t);
00157     public: void procedure_body(RefAdaAST _t);
00158     public: void function_body(RefAdaAST _t);
00159     public: void subprog_decl_or_rename_or_inst_or_body(RefAdaAST _t);
00160     public: void subprog_decl_or_body(RefAdaAST _t);
00161     public: void package_body(RefAdaAST _t);
00162     public: void pragma_arg(RefAdaAST _t);
00163     public: void expression(RefAdaAST _t);
00164     public: void attribute_id(RefAdaAST _t);
00165     public: void modifiers(RefAdaAST _t);
00166     public: void value_s(RefAdaAST _t);
00167     public: void value(RefAdaAST _t);
00168     public: void ranged_expr_s(RefAdaAST _t);
00169     public: void ranged_expr(RefAdaAST _t);
00170     public: void simple_expression(RefAdaAST _t);
00171     public: void range(RefAdaAST _t);
00172     public: void range_constraint(RefAdaAST _t);
00173     public: void range_dots(RefAdaAST _t);
00174     public: void range_attrib_ref(RefAdaAST _t);
00175     public: void prefix(RefAdaAST _t);
00176     public: void parameter_specification(RefAdaAST _t);
00177     public: void defining_identifier_list(RefAdaAST _t);
00178     public: void init_opt(RefAdaAST _t);
00179     public: void name(RefAdaAST _t);
00180     public: void parenthesized_primary(RefAdaAST _t);
00181     public: void extension_opt(RefAdaAST _t);
00182     public: void basic_decl_item(RefAdaAST _t);
00183     public: void task_type_or_single_decl(RefAdaAST _t);
00184     public: void prot_type_or_single_decl(RefAdaAST _t);
00185     public: void decl_common(RefAdaAST _t);
00186     public: void discrim_part_opt(RefAdaAST _t);
00187     public: void task_definition_opt(RefAdaAST _t);
00188     public: void task_items_opt(RefAdaAST _t);
00189     public: void private_task_items_opt(RefAdaAST _t);
00190     public: void discriminant_specifications(RefAdaAST _t);
00191     public: void discriminant_specification(RefAdaAST _t);
00192     public: void entrydecls_repspecs_opt(RefAdaAST _t);
00193     public: void entry_declaration(RefAdaAST _t);
00194     public: void rep_spec(RefAdaAST _t);
00195     public: void discrete_subtype_def_opt(RefAdaAST _t);
00196     public: void discrete_subtype_definition(RefAdaAST _t);
00197     public: void subtype_ind(RefAdaAST _t);
00198     public: void align_opt(RefAdaAST _t);
00199     public: void comp_loc_s(RefAdaAST _t);
00200     public: void local_enum_name(RefAdaAST _t);
00201     public: void enumeration_aggregate(RefAdaAST _t);
00202     public: void protected_definition(RefAdaAST _t);
00203     public: void prot_op_decl_s(RefAdaAST _t);
00204     public: void prot_member_decl_s(RefAdaAST _t);
00205     public: void prot_op_decl(RefAdaAST _t);
00206     public: void comp_decl(RefAdaAST _t);
00207     public: void component_subtype_def(RefAdaAST _t);
00208     public: void enum_id_s(RefAdaAST _t);
00209     public: void range_constraint_opt(RefAdaAST _t);
00210     public: void array_type_declaration(RefAdaAST _t);
00211     public: void access_type_declaration(RefAdaAST _t);
00212     public: void id_and_discrim(RefAdaAST _t);
00213     public: void record_definition(RefAdaAST _t);
00214     public: void array_type_definition(RefAdaAST _t);
00215     public: void enumeration_literal_specification(RefAdaAST _t);
00216     public: void index_or_discrete_range_s(RefAdaAST _t);
00217     public: void index_or_discrete_range(RefAdaAST _t);
00218     public: void constraint_opt(RefAdaAST _t);
00219     public: void digits_constraint(RefAdaAST _t);
00220     public: void delta_constraint(RefAdaAST _t);
00221     public: void index_constraint(RefAdaAST _t);
00222     public: void discriminant_constraint(RefAdaAST _t);
00223     public: void discrete_range(RefAdaAST _t);
00224     public: void discriminant_association(RefAdaAST _t);
00225     public: void selector_names_opt(RefAdaAST _t);
00226     public: void selector_name(RefAdaAST _t);
00227     public: void component_list(RefAdaAST _t);
00228     public: void component_items(RefAdaAST _t);
00229     public: void variant_part(RefAdaAST _t);
00230     public: void discriminant_direct_name(RefAdaAST _t);
00231     public: void variant_s(RefAdaAST _t);
00232     public: void variant(RefAdaAST _t);
00233     public: void choice_s(RefAdaAST _t);
00234     public: void choice(RefAdaAST _t);
00235     public: void discrete_with_range(RefAdaAST _t);
00236     public: void mark_with_constraint(RefAdaAST _t);
00237     public: void generic_formal_parameter(RefAdaAST _t);
00238     public: void formal_array_type_declaration(RefAdaAST _t);
00239     public: void formal_access_type_declaration(RefAdaAST _t);
00240     public: void id_part(RefAdaAST _t);
00241     public: void subprogram_default_opt(RefAdaAST _t);
00242     public: void formal_package_actual_part_opt(RefAdaAST _t);
00243     public: void body_part(RefAdaAST _t);
00244     public: void declarative_part(RefAdaAST _t);
00245     public: void block_body(RefAdaAST _t);
00246     public: void declarative_item(RefAdaAST _t);
00247     public: void prot_op_bodies_opt(RefAdaAST _t);
00248     public: void block_body_opt(RefAdaAST _t);
00249     public: void handled_stmt_s(RefAdaAST _t);
00250     public: void entry_body(RefAdaAST _t);
00251     public: void statements(RefAdaAST _t);
00252     public: void except_handler_part_opt(RefAdaAST _t);
00253     public: void statement(RefAdaAST _t);
00254     public: void def_label_opt(RefAdaAST _t);
00255     public: void null_stmt(RefAdaAST _t);
00256     public: void exit_stmt(RefAdaAST _t);
00257     public: void return_stmt(RefAdaAST _t);
00258     public: void goto_stmt(RefAdaAST _t);
00259     public: void delay_stmt(RefAdaAST _t);
00260     public: void abort_stmt(RefAdaAST _t);
00261     public: void raise_stmt(RefAdaAST _t);
00262     public: void requeue_stmt(RefAdaAST _t);
00263     public: void accept_stmt(RefAdaAST _t);
00264     public: void select_stmt(RefAdaAST _t);
00265     public: void if_stmt(RefAdaAST _t);
00266     public: void case_stmt(RefAdaAST _t);
00267     public: void loop_stmt(RefAdaAST _t);
00268     public: void block(RefAdaAST _t);
00269     public: void call_or_assignment(RefAdaAST _t);
00270     public: void cond_clause(RefAdaAST _t);
00271     public: void elsifs_opt(RefAdaAST _t);
00272     public: void else_opt(RefAdaAST _t);
00273     public: void condition(RefAdaAST _t);
00274     public: void alternative_s(RefAdaAST _t);
00275     public: void case_statement_alternative(RefAdaAST _t);
00276     public: void iteration_scheme_opt(RefAdaAST _t);
00277     public: void declare_opt(RefAdaAST _t);
00278     public: void label_name(RefAdaAST _t);
00279     public: void entry_body_formal_part(RefAdaAST _t);
00280     public: void entry_barrier(RefAdaAST _t);
00281     public: void entry_index_spec_opt(RefAdaAST _t);
00282     public: void entry_call_stmt(RefAdaAST _t);
00283     public: void entry_index_opt(RefAdaAST _t);
00284     public: void triggering_alternative(RefAdaAST _t);
00285     public: void abortable_part(RefAdaAST _t);
00286     public: void selective_accept(RefAdaAST _t);
00287     public: void entry_call_alternative(RefAdaAST _t);
00288     public: void delay_alternative(RefAdaAST _t);
00289     public: void stmts_opt(RefAdaAST _t);
00290     public: void guard_opt(RefAdaAST _t);
00291     public: void select_alternative(RefAdaAST _t);
00292     public: void or_select_opt(RefAdaAST _t);
00293     public: void accept_alternative(RefAdaAST _t);
00294     public: void exception_handler(RefAdaAST _t);
00295     public: void identifier_colon_opt(RefAdaAST _t);
00296     public: void except_choice_s(RefAdaAST _t);
00297     public: void exception_choice(RefAdaAST _t);
00298     public: void operator_call(RefAdaAST _t);
00299     public: void relation(RefAdaAST _t);
00300     public: void range_or_mark(RefAdaAST _t);
00301     public: void signed_term(RefAdaAST _t);
00302     public: void term(RefAdaAST _t);
00303     public: void factor(RefAdaAST _t);
00304     public: void primary(RefAdaAST _t);
00305     public: void name_or_qualified(RefAdaAST _t);
00306     public: void allocator(RefAdaAST _t);
00307     public: void subprogram_body(RefAdaAST _t);
00308     public: void task_body(RefAdaAST _t);
00309     public: void protected_body(RefAdaAST _t);
00310 public:
00311     RefAdaAST getAST();
00312     
00313 protected:
00314     RefAdaAST returnAST;
00315     RefAdaAST _retTree;
00316 private:
00317     static const char* tokenNames[];
00318 #ifndef NO_STATIC_CONSTS
00319     static const int NUM_TOKENS = 305;
00320 #else
00321     enum {
00322         NUM_TOKENS = 305
00323     };
00324 #endif
00325     
00326     static const unsigned long _tokenSet_0_data_[];
00327     static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_0;
00328     static const unsigned long _tokenSet_1_data_[];
00329     static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_1;
00330     static const unsigned long _tokenSet_2_data_[];
00331     static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_2;
00332     static const unsigned long _tokenSet_3_data_[];
00333     static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_3;
00334     static const unsigned long _tokenSet_4_data_[];
00335     static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_4;
00336 };
00337 
00338 #endif /*INC_AdaStoreWalker_hpp_*/
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:26 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003