ss_misc.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Intercode structure for project Lestes
00006         
00007                         This file describes a set of classes and data types used for intercode layer -ss-.
00008                         It is an output from a XSLT template which generates C++ code.
00009                 
00010 */
00011 
00012 #ifndef lestes__lang__cplus__sem__ss_misc_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_misc_g_hh__included
00014 
00015 #include <lestes/common.hh>
00016 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00017 #include <lestes/intercode/intercode.g.hh>
00018 #include <lestes/lang/cplus/sem/ss_misc.hh>
00019 
00020 #include <lestes/std/objectize_macros.hh>
00021 package(lestes);
00022 package(backend_v2);
00023 package(intercode);
00024 class pi_sp;
00025 end_package(intercode);
00026 end_package(backend_v2);
00027 end_package(lestes);
00028 
00029 package(lestes);
00030 package(lang);
00031 package(cplus);
00032 package(sem);
00033 
00034 
00035 class ss_decl_name;
00036 class ss_compound_stmt;
00037 class ss_expression;
00038 class ss_funcall_abstr;
00039 class ss_statement;
00040 class ss_type;
00041 class ss_enum;
00042 class ss_vol_get;
00043 class ss_class;
00044 class ss_breakable_stmt;
00045 class ss_declaration;
00046 class ss_namespace_definition;
00047 class ss_function_declaration;
00048 class ss_declaration_time;
00049 class ss_decl_seq;
00050 class ss_using_directive;
00051 class ss_label;
00052 class ss_breakable_stmt_label;
00053 class ss_case_label;
00054 class ss_default_label;
00055 class ss_continue_label;
00056 class ss_break_label;
00057 class ss_targetted_label;
00058 class ss_internal_label;
00059 class ss_id_label;
00060 class ss_se;
00061 class ss_sp;
00062 class ss_translation_unit;
00063 class ss_base_specifier;
00064 
00065 
00066 /*! \brief Declaration time.
00067 
00068 
00069                                 It is created from token's sequence number
00070                                 stored in a source_location instance.
00071 
00072                                 For the user, ss_declaration_time is a black box that only knows whether it
00073                                 "is before" another one. See the 'is_before' method.
00074 
00075                                 \todo about creating this class
00076 
00077                                 Instances of this class are meant to be used as time tags. At
00078                                 least declarations and expressions are tagged this way.
00079 
00080                                 One of the uses is in the name lookup code. Declaration time is
00081                                 used to filter out declarations that were not visible at
00082                                 specified time (because they were introduced into a scope later).
00083                         
00084 */
00085 class ss_declaration_time : public ::lestes::std::object {
00086 public:
00087         //! Tells whether this time is before the one passed as argument.
00088         bool is_before(ptr< ss_declaration_time > other);
00089 
00090         //! return an ss_declaration_time instance representing infinity
00091         static ptr< ss_declaration_time > infinity();
00092 
00093         
00094         //! First generated factory method for class ss_declaration_time.
00095         static ptr< ss_declaration_time > create (
00096                 ulint a__ss_declaration_time__time);
00097 
00098         
00099 
00100         //! for purposes of dumping
00101         virtual ptr<reflection_list> reflection_get() const;
00102         //! for purposes of dumping
00103         virtual ptr<field_list_list> field_values_get() const;
00104         
00105 protected:
00106         //! Generated constructor for class ss_declaration_time.
00107         ss_declaration_time (
00108                 ulint a__ss_declaration_time__time);
00109 
00110         //! Marking routine for class ss_declaration_time. 
00111         virtual void gc_mark();
00112 
00113 private:
00114         //! The internal representation of the time of declaration.
00115         ulint time;
00116         static ptr< ss_declaration_time > infinity_instance;
00117         static ptr<reflection_list> reflection;
00118         
00119 }; // ss_declaration_time
00120 
00121 
00122 /*! \brief Class for declaration sequence 
00123 
00124 Used as scope
00125 */
00126 class ss_decl_seq : public ::lestes::intercode::ss_base_with_location {
00127 public:
00128         //! The method contents_get returns the value of the field ss_decl_seq::contents.
00129         ptr< ::lestes::std::list< srp< ss_declaration > > > contents_get() const;
00130 
00131         //! The method parent_get returns the value of the field ss_decl_seq::parent.
00132         ptr< ss_decl_seq > parent_get() const;
00133 
00134         //! The method compound_stmt_get returns the value of the field ss_decl_seq::compound_stmt.
00135         ptr< ss_compound_stmt > compound_stmt_get() const;
00136 
00137         //! The method compound_stmt_set sets the field ss_decl_seq::compound_stmt to the given value.
00138         void compound_stmt_set(const ptr< ss_compound_stmt > &);
00139 
00140         //! The method using_directives_get returns the value of the field ss_decl_seq::using_directives.
00141         ptr< ::lestes::std::list< srp< ss_using_directive > > > using_directives_get() const;
00142 
00143         //! The method declared_by_get returns the value of the field ss_decl_seq::declared_by.
00144         ptr< ss_declaration > declared_by_get() const;
00145 
00146         //! The method declared_by_set sets the field ss_decl_seq::declared_by to the given value.
00147         void declared_by_set(const ptr< ss_declaration > &);
00148 
00149         //! Returns pointer to the instance of root (grandparent) ss_decl_seq.
00150         static ptr< ss_decl_seq > root_instance();
00151 
00152         
00153         //! First generated factory method for class ss_decl_seq.
00154         static ptr< ss_decl_seq > create (
00155                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00156                 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00157                 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00158                 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00159                 ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives,
00160                 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00161 
00162         //! Second generated factory method for class ss_decl_seq.
00163         static ptr< ss_decl_seq > create (
00164                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00165                 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00166                 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00167                 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00168                 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00169 
00170         
00171 
00172         //! for purposes of dumping
00173         virtual ptr<reflection_list> reflection_get() const;
00174         //! for purposes of dumping
00175         virtual ptr<field_list_list> field_values_get() const;
00176         
00177 protected:
00178         //! Generated constructor for class ss_decl_seq.
00179         ss_decl_seq (
00180                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00181                 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents,
00182                 ptr< ss_decl_seq > a__ss_decl_seq__parent,
00183                 ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt,
00184                 ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives,
00185                 ptr< ss_declaration > a__ss_decl_seq__declared_by);
00186 
00187         //! Marking routine for class ss_decl_seq. 
00188         virtual void gc_mark();
00189 
00190 private:
00191         //! Contained declarations
00192         srp< ::lestes::std::list< srp< ss_declaration > > >  contents;
00193         //! Lexically enclosing ss_decl_seq
00194         srp< ss_decl_seq > parent;
00195         /*! \brief Compound statement containing declaration statements for declarations declared in this declaration sequence.
00196 
00197         
00198                                         The value is unchecked only to allow creating ss_decl_seq before
00199                                         the ss_compound_stmt pointed to.
00200                                 
00201         */
00202         srp< ss_compound_stmt > compound_stmt;
00203         /*! \brief Namespaces which are 'included' by using directive.
00204 
00205         
00206                                         Using directives are allowed in namespace and block scope [7.3.4].
00207                                         They are a property of ss_decl_seq, as it would be clumsy to have
00208                                         them in both ss_namespace_definition and ss_compound_statement.
00209                                 
00210         */
00211         srp< ::lestes::std::list< srp< ss_using_directive > > >  using_directives;
00212         /*! \brief Pointer back to the declaration that caused that this declaration sequence exists.
00213 
00214         
00215                                         The value is unchecked only to allow creating ss_decl_seq before
00216                                         the ss_declaration pointed to.
00217                                 
00218         */
00219         srp< ss_declaration > declared_by;
00220         static ptr< ss_decl_seq > the_root_instance;
00221         static bool parent_set_ward;
00222         static ptr<reflection_list> reflection;
00223         
00224 }; // ss_decl_seq
00225 
00226 
00227 //! Class for using directive
00228 class ss_using_directive : public ::lestes::intercode::ss_base_with_location {
00229 public:
00230         //! The method decl_time_get returns the value of the field ss_using_directive::decl_time.
00231         ptr< ss_declaration_time > decl_time_get() const;
00232 
00233         //! The method decl_time_set sets the field ss_using_directive::decl_time to the given value.
00234         void decl_time_set(const ptr< ss_declaration_time > &);
00235 
00236         //! The method nspace_get returns the value of the field ss_using_directive::nspace.
00237         ptr< ss_namespace_definition > nspace_get() const;
00238 
00239         //! The method nspace_set sets the field ss_using_directive::nspace to the given value.
00240         void nspace_set(const ptr< ss_namespace_definition > &);
00241 
00242         
00243         //! First generated factory method for class ss_using_directive.
00244         static ptr< ss_using_directive > create (
00245                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00246                 ptr< ss_declaration_time > a__ss_using_directive__decl_time,
00247                 ptr< ss_namespace_definition > a__ss_using_directive__nspace);
00248 
00249         
00250 
00251         //! for purposes of dumping
00252         virtual ptr<reflection_list> reflection_get() const;
00253         //! for purposes of dumping
00254         virtual ptr<field_list_list> field_values_get() const;
00255         
00256 protected:
00257         //! Generated constructor for class ss_using_directive.
00258         ss_using_directive (
00259                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00260                 ptr< ss_declaration_time > a__ss_using_directive__decl_time,
00261                 ptr< ss_namespace_definition > a__ss_using_directive__nspace);
00262 
00263         //! Marking routine for class ss_using_directive. 
00264         virtual void gc_mark();
00265 
00266 private:
00267         //! time of the using directive
00268         srp< ss_declaration_time > decl_time;
00269         //! Used namespace
00270         srp< ss_namespace_definition > nspace;
00271         static ptr<reflection_list> reflection;
00272         
00273 }; // ss_using_directive
00274 
00275 
00276 //! Base class for labels.
00277 class ss_label : public ::lestes::intercode::ss_base_with_location {
00278 public:
00279         
00280 
00281         //! for purposes of dumping
00282         virtual ptr<reflection_list> reflection_get() const;
00283         //! for purposes of dumping
00284         virtual ptr<field_list_list> field_values_get() const;
00285         
00286 protected:
00287         //! Generated constructor for class ss_label.
00288         ss_label (
00289                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00290 
00291         //! Marking routine for class ss_label. 
00292         virtual void gc_mark();
00293 
00294 private:
00295         static ptr<reflection_list> reflection;
00296         
00297 }; // ss_label
00298 
00299 
00300 //! Class for labels created from breakable statements(i.e. do,while,for,switch).
00301 class ss_breakable_stmt_label : public ss_label {
00302 public:
00303         //! The method breakable_get returns the value of the field ss_breakable_stmt_label::breakable.
00304         ptr< ss_breakable_stmt > breakable_get() const;
00305 
00306         //! The method breakable_set sets the field ss_breakable_stmt_label::breakable to the given value.
00307         void breakable_set(const ptr< ss_breakable_stmt > &);
00308 
00309         
00310 
00311         //! for purposes of dumping
00312         virtual ptr<reflection_list> reflection_get() const;
00313         //! for purposes of dumping
00314         virtual ptr<field_list_list> field_values_get() const;
00315         
00316 protected:
00317         //! Generated constructor for class ss_breakable_stmt_label.
00318         ss_breakable_stmt_label (
00319                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00320                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00321 
00322         //! Marking routine for class ss_breakable_stmt_label. 
00323         virtual void gc_mark();
00324 
00325 private:
00326         //! Breakable statement, which produced this label.
00327         srp< ss_breakable_stmt > breakable;
00328         static ptr<reflection_list> reflection;
00329         
00330 }; // ss_breakable_stmt_label
00331 
00332 
00333 //! Class for "case" label inside the switch.
00334 class ss_case_label : public ss_breakable_stmt_label {
00335 public:
00336         //! The method value_get returns the value of the field ss_case_label::value.
00337         ptr< ss_expression > value_get() const;
00338 
00339         //! The method value_set sets the field ss_case_label::value to the given value.
00340         void value_set(const ptr< ss_expression > &);
00341 
00342         
00343         //! First generated factory method for class ss_case_label.
00344         static ptr< ss_case_label > create (
00345                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00346                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable,
00347                 ptr< ss_expression > a__ss_case_label__value);
00348 
00349         
00350 
00351         //! for purposes of dumping
00352         virtual ptr<reflection_list> reflection_get() const;
00353         //! for purposes of dumping
00354         virtual ptr<field_list_list> field_values_get() const;
00355         
00356 protected:
00357         //! Generated constructor for class ss_case_label.
00358         ss_case_label (
00359                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00360                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable,
00361                 ptr< ss_expression > a__ss_case_label__value);
00362 
00363         //! Marking routine for class ss_case_label. 
00364         virtual void gc_mark();
00365 
00366 private:
00367         srp< ss_expression > value;
00368         static ptr<reflection_list> reflection;
00369         
00370 }; // ss_case_label
00371 
00372 
00373 //! Class for the default case inside the switch.
00374 class ss_default_label : public ss_breakable_stmt_label {
00375 public:
00376         
00377         //! First generated factory method for class ss_default_label.
00378         static ptr< ss_default_label > create (
00379                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00380                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00381 
00382         
00383 
00384         //! for purposes of dumping
00385         virtual ptr<reflection_list> reflection_get() const;
00386         //! for purposes of dumping
00387         virtual ptr<field_list_list> field_values_get() const;
00388         
00389 protected:
00390         //! Generated constructor for class ss_default_label.
00391         ss_default_label (
00392                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00393                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00394 
00395         //! Marking routine for class ss_default_label. 
00396         virtual void gc_mark();
00397 
00398 private:
00399         static ptr<reflection_list> reflection;
00400         
00401 }; // ss_default_label
00402 
00403 
00404 //! Class for the continue label in loops.
00405 class ss_continue_label : public ss_breakable_stmt_label {
00406 public:
00407         
00408         //! First generated factory method for class ss_continue_label.
00409         static ptr< ss_continue_label > create (
00410                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00411                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00412 
00413         
00414 
00415         //! for purposes of dumping
00416         virtual ptr<reflection_list> reflection_get() const;
00417         //! for purposes of dumping
00418         virtual ptr<field_list_list> field_values_get() const;
00419         
00420 protected:
00421         //! Generated constructor for class ss_continue_label.
00422         ss_continue_label (
00423                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00424                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00425 
00426         //! Marking routine for class ss_continue_label. 
00427         virtual void gc_mark();
00428 
00429 private:
00430         static ptr<reflection_list> reflection;
00431         
00432 }; // ss_continue_label
00433 
00434 
00435 //! Class for the break label in loops and switch.
00436 class ss_break_label : public ss_breakable_stmt_label {
00437 public:
00438         
00439         //! First generated factory method for class ss_break_label.
00440         static ptr< ss_break_label > create (
00441                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00442                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00443 
00444         
00445 
00446         //! for purposes of dumping
00447         virtual ptr<reflection_list> reflection_get() const;
00448         //! for purposes of dumping
00449         virtual ptr<field_list_list> field_values_get() const;
00450         
00451 protected:
00452         //! Generated constructor for class ss_break_label.
00453         ss_break_label (
00454                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00455                 ptr< ss_breakable_stmt > a__ss_breakable_stmt_label__breakable);
00456 
00457         //! Marking routine for class ss_break_label. 
00458         virtual void gc_mark();
00459 
00460 private:
00461         static ptr<reflection_list> reflection;
00462         
00463 }; // ss_break_label
00464 
00465 
00466 //! Class for labels, which target is known at ceration time of label(i.e. label for goto).
00467 class ss_targetted_label : public ss_label {
00468 public:
00469         //! The method statement_get returns the value of the field ss_targetted_label::statement.
00470         ptr< ss_statement > statement_get() const;
00471 
00472         //! The method statement_set sets the field ss_targetted_label::statement to the given value.
00473         void statement_set(const ptr< ss_statement > &);
00474 
00475         
00476         //! First generated factory method for class ss_targetted_label.
00477         static ptr< ss_targetted_label > create (
00478                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00479                 ptr< ss_statement > a__ss_targetted_label__statement);
00480 
00481         
00482 
00483         //! for purposes of dumping
00484         virtual ptr<reflection_list> reflection_get() const;
00485         //! for purposes of dumping
00486         virtual ptr<field_list_list> field_values_get() const;
00487         
00488 protected:
00489         //! Generated constructor for class ss_targetted_label.
00490         ss_targetted_label (
00491                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00492                 ptr< ss_statement > a__ss_targetted_label__statement);
00493 
00494         //! Marking routine for class ss_targetted_label. 
00495         virtual void gc_mark();
00496 
00497 private:
00498         srp< ss_statement > statement;
00499         static ptr<reflection_list> reflection;
00500         
00501 }; // ss_targetted_label
00502 
00503 
00504 //! Class for internally generated label
00505 class ss_internal_label : public ss_label {
00506 public:
00507         
00508         //! First generated factory method for class ss_internal_label.
00509         static ptr< ss_internal_label > create (
00510                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00511 
00512         
00513 
00514         //! for purposes of dumping
00515         virtual ptr<reflection_list> reflection_get() const;
00516         //! for purposes of dumping
00517         virtual ptr<field_list_list> field_values_get() const;
00518         
00519 protected:
00520         //! Generated constructor for class ss_internal_label.
00521         ss_internal_label (
00522                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location);
00523 
00524         //! Marking routine for class ss_internal_label. 
00525         virtual void gc_mark();
00526 
00527 private:
00528         static ptr<reflection_list> reflection;
00529         
00530 }; // ss_internal_label
00531 
00532 
00533 //! Class for label associated with identifier (from goto).
00534 class ss_id_label : public ss_label {
00535 public:
00536         //! The method name_get returns the value of the field ss_id_label::name.
00537         ucn_string name_get() const;
00538 
00539         //! The method name_set sets the field ss_id_label::name to the given value.
00540         void name_set(ucn_string);
00541 
00542         //! The method function_get returns the value of the field ss_id_label::function.
00543         ptr< ss_function_declaration > function_get() const;
00544 
00545         //! The method function_set sets the field ss_id_label::function to the given value.
00546         void function_set(const ptr< ss_function_declaration > &);
00547 
00548         
00549         //! First generated factory method for class ss_id_label.
00550         static ptr< ss_id_label > create (
00551                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00552                 ucn_string a__ss_id_label__name,
00553                 ptr< ss_function_declaration > a__ss_id_label__function);
00554 
00555         
00556 
00557         //! for purposes of dumping
00558         virtual ptr<reflection_list> reflection_get() const;
00559         //! for purposes of dumping
00560         virtual ptr<field_list_list> field_values_get() const;
00561         
00562 protected:
00563         //! Generated constructor for class ss_id_label.
00564         ss_id_label (
00565                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00566                 ucn_string a__ss_id_label__name,
00567                 ptr< ss_function_declaration > a__ss_id_label__function);
00568 
00569         //! Marking routine for class ss_id_label. 
00570         virtual void gc_mark();
00571 
00572 private:
00573         ucn_string name;
00574         //! Reference to function containing this label.
00575         srp< ss_function_declaration > function;
00576         static ptr<reflection_list> reflection;
00577         
00578 }; // ss_id_label
00579 
00580 
00581 //! Class representing side effect
00582 class ss_se : public ::lestes::intercode::ss_base_with_location {
00583 public:
00584         //! The method from_get returns the value of the field ss_se::from.
00585         ptr< ss_expression > from_get() const;
00586 
00587         //! The method from_set sets the field ss_se::from to the given value.
00588         void from_set(const ptr< ss_expression > &);
00589 
00590         //! The method psp_get returns the value of the field ss_se::psp.
00591         ptr< ss_sp > psp_get() const;
00592 
00593         //! The method psp_set sets the field ss_se::psp to the given value.
00594         void psp_set(const ptr< ss_sp > &);
00595 
00596         //! The method nsp_get returns the value of the field ss_se::nsp.
00597         ptr< ss_sp > nsp_get() const;
00598 
00599         //! The method nsp_set sets the field ss_se::nsp to the given value.
00600         void nsp_set(const ptr< ss_sp > &);
00601 
00602         
00603         //! First generated factory method for class ss_se.
00604         static ptr< ss_se > create (
00605                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00606                 ptr< ss_expression > a__ss_se__from,
00607                 ptr< ss_sp > a__ss_se__psp,
00608                 ptr< ss_sp > a__ss_se__nsp);
00609 
00610         
00611 
00612         //! for purposes of dumping
00613         virtual ptr<reflection_list> reflection_get() const;
00614         //! for purposes of dumping
00615         virtual ptr<field_list_list> field_values_get() const;
00616         
00617 protected:
00618         //! Generated constructor for class ss_se.
00619         ss_se (
00620                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00621                 ptr< ss_expression > a__ss_se__from,
00622                 ptr< ss_sp > a__ss_se__psp,
00623                 ptr< ss_sp > a__ss_se__nsp);
00624 
00625         //! Marking routine for class ss_se. 
00626         virtual void gc_mark();
00627 
00628 private:
00629         srp< ss_expression > from;
00630         srp< ss_sp > psp;
00631         srp< ss_sp > nsp;
00632         static ptr<reflection_list> reflection;
00633         
00634 }; // ss_se
00635 
00636 
00637 //! Class representing sequence point
00638 class ss_sp : public ::lestes::intercode::ss_base_with_location {
00639 public:
00640         //! The method psp_get returns the value of the field ss_sp::psp.
00641         ptr< ss_sp > psp_get() const;
00642 
00643         //! The method psp_set sets the field ss_sp::psp to the given value.
00644         void psp_set(const ptr< ss_sp > &);
00645 
00646         //! The method nsp_get returns the value of the field ss_sp::nsp.
00647         ptr< ss_sp > nsp_get() const;
00648 
00649         //! The method nsp_set sets the field ss_sp::nsp to the given value.
00650         void nsp_set(const ptr< ss_sp > &);
00651 
00652         //! The method pse_get returns the value of the field ss_sp::pse.
00653         ptr< ::lestes::std::list< srp< ss_se > > > pse_get() const;
00654 
00655         //! The method pse_set sets the field ss_sp::pse to the given value.
00656         void pse_set(const ptr< ::lestes::std::list< srp< ss_se > > > & );
00657 
00658         //! The method nse_get returns the value of the field ss_sp::nse.
00659         ptr< ::lestes::std::list< srp< ss_se > > > nse_get() const;
00660 
00661         //! The method nse_set sets the field ss_sp::nse to the given value.
00662         void nse_set(const ptr< ::lestes::std::list< srp< ss_se > > > & );
00663 
00664         //! The method pi_spe_get returns the value of the field ss_sp::pi_spe.
00665         ptr< ::lestes::backend_v2::intercode::pi_sp > pi_spe_get() const;
00666 
00667         //! The method pi_spe_set sets the field ss_sp::pi_spe to the given value.
00668         void pi_spe_set(const ptr< ::lestes::backend_v2::intercode::pi_sp > &);
00669 
00670         //! The method level_get returns the value of the field ss_sp::level.
00671         ulint level_get() const;
00672 
00673         //! The method level_set sets the field ss_sp::level to the given value.
00674         void level_set(ulint);
00675 
00676         
00677         //! First generated factory method for class ss_sp.
00678         static ptr< ss_sp > create (
00679                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00680                 ptr< ss_sp > a__ss_sp__psp,
00681                 ptr< ss_sp > a__ss_sp__nsp,
00682                 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__pse,
00683                 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__nse,
00684                 ptr< ::lestes::backend_v2::intercode::pi_sp > a__ss_sp__pi_spe,
00685                 ulint a__ss_sp__level);
00686 
00687         //! Second generated factory method for class ss_sp.
00688         static ptr< ss_sp > create (
00689                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00690                 ptr< ss_sp > a__ss_sp__psp,
00691                 ptr< ss_sp > a__ss_sp__nsp,
00692                 ulint a__ss_sp__level);
00693 
00694         
00695 
00696         //! for purposes of dumping
00697         virtual ptr<reflection_list> reflection_get() const;
00698         //! for purposes of dumping
00699         virtual ptr<field_list_list> field_values_get() const;
00700         
00701 protected:
00702         //! Generated constructor for class ss_sp.
00703         ss_sp (
00704                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00705                 ptr< ss_sp > a__ss_sp__psp,
00706                 ptr< ss_sp > a__ss_sp__nsp,
00707                 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__pse,
00708                 ptr< ::lestes::std::list< srp< ss_se > > > a__ss_sp__nse,
00709                 ptr< ::lestes::backend_v2::intercode::pi_sp > a__ss_sp__pi_spe,
00710                 ulint a__ss_sp__level);
00711 
00712         //! Marking routine for class ss_sp. 
00713         virtual void gc_mark();
00714 
00715 private:
00716         srp< ss_sp > psp;
00717         srp< ss_sp > nsp;
00718         //! Previous side effects
00719         srp< ::lestes::std::list< srp< ss_se > > >  pse;
00720         //! Next side effects
00721         srp< ::lestes::std::list< srp< ss_se > > >  nse;
00722         /*! \brief Equivalent pi sequence point
00723 
00724         
00725                                         Use special getter ss_sp2pi_sp, which constructs neighbours if needed.
00726                                         Used when constructing pseudoinstructions.
00727                                         When no equivalent pi_sp exists yet, pi_sp is set to NULL.
00728                                         TODO: reformulate pi_sp construction via maps.
00729                                 
00730         */
00731         srp< ::lestes::backend_v2::intercode::pi_sp > pi_spe;
00732         /*! \brief Level of sequence point.
00733 
00734         
00735                                         It is set during construction of semantic structures.  Its value is
00736                                         determined by topology of structures and it is passed to
00737                                         pi_level during ss2pi construction.
00738 
00739                                         Rationale: in ss constructing phase is easy to determine level value.
00740                                         For details see documentation "Level of a sequence point".
00741                                 
00742         */
00743         ulint level;
00744         static ptr<reflection_list> reflection;
00745         
00746 }; // ss_sp
00747 
00748 
00749 /*! 
00750 
00751                         
00752 */
00753 class ss_translation_unit : public ::lestes::intercode::ss_base {
00754 public:
00755         //! The method global_scope_get returns the value of the field ss_translation_unit::global_scope.
00756         ptr< ss_decl_seq > global_scope_get() const;
00757 
00758         
00759         //! First generated factory method for class ss_translation_unit.
00760         static ptr< ss_translation_unit > create (
00761                 ptr< ss_decl_seq > a__ss_translation_unit__global_scope);
00762 
00763         
00764 
00765         //! for purposes of dumping
00766         virtual ptr<reflection_list> reflection_get() const;
00767         //! for purposes of dumping
00768         virtual ptr<field_list_list> field_values_get() const;
00769         
00770 protected:
00771         //! Generated constructor for class ss_translation_unit.
00772         ss_translation_unit (
00773                 ptr< ss_decl_seq > a__ss_translation_unit__global_scope);
00774 
00775         //! Marking routine for class ss_translation_unit. 
00776         virtual void gc_mark();
00777 
00778 private:
00779         srp< ss_decl_seq > global_scope;
00780         static ptr<reflection_list> reflection;
00781         
00782 }; // ss_translation_unit
00783 
00784 
00785 //! Class-base specifier.
00786 class ss_base_specifier : public ::lestes::intercode::ss_base_with_location {
00787 public:
00788         //! The method specifier_get returns the value of the field ss_base_specifier::specifier.
00789         ss_access_specifier::type specifier_get() const;
00790 
00791         //! The method specifier_set sets the field ss_base_specifier::specifier to the given value.
00792         void specifier_set(ss_access_specifier::type);
00793 
00794         //! The method base_class_get returns the value of the field ss_base_specifier::base_class.
00795         ptr< ss_class > base_class_get() const;
00796 
00797         //! The method base_class_set sets the field ss_base_specifier::base_class to the given value.
00798         void base_class_set(const ptr< ss_class > &);
00799 
00800         //! The method virtual_base_get returns the value of the field ss_base_specifier::virtual_base.
00801         bool virtual_base_get() const;
00802 
00803         //! The method virtual_base_set sets the field ss_base_specifier::virtual_base to the given value.
00804         void virtual_base_set(bool);
00805 
00806         
00807         //! First generated factory method for class ss_base_specifier.
00808         static ptr< ss_base_specifier > create (
00809                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00810                 ss_access_specifier::type a__ss_base_specifier__specifier,
00811                 ptr< ss_class > a__ss_base_specifier__base_class,
00812                 bool a__ss_base_specifier__virtual_base);
00813 
00814         //! Second generated factory method for class ss_base_specifier.
00815         static ptr< ss_base_specifier > create (
00816                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00817                 ss_access_specifier::type a__ss_base_specifier__specifier,
00818                 ptr< ss_class > a__ss_base_specifier__base_class);
00819 
00820         
00821 
00822         //! for purposes of dumping
00823         virtual ptr<reflection_list> reflection_get() const;
00824         //! for purposes of dumping
00825         virtual ptr<field_list_list> field_values_get() const;
00826         
00827 protected:
00828         //! Generated constructor for class ss_base_specifier.
00829         ss_base_specifier (
00830                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00831                 ss_access_specifier::type a__ss_base_specifier__specifier,
00832                 ptr< ss_class > a__ss_base_specifier__base_class,
00833                 bool a__ss_base_specifier__virtual_base);
00834 
00835         //! Marking routine for class ss_base_specifier. 
00836         virtual void gc_mark();
00837 
00838 private:
00839         ss_access_specifier::type specifier;
00840         srp< ss_class > base_class;
00841         //! jikos(?) TODO
00842         bool virtual_base;
00843         static ptr<reflection_list> reflection;
00844         
00845 }; // ss_base_specifier
00846 
00847 
00848 end_package(sem);
00849 end_package(cplus);
00850 end_package(lang);
00851 end_package(lestes);
00852 
00853 #endif // lestes__lang__cplus__sem__ss_misc_g_hh__included

Generated on Mon Feb 12 18:27:08 2007 for lestes by doxygen 1.5.1-20070107