ss_declaration.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 #ifndef lestes__lang__cplus__sem__ss_declaration_g_hh__included
00004 #define lestes__lang__cplus__sem__ss_declaration_g_hh__included
00005 
00006 #include <lestes/common.hh>
00007 #include <lestes/std/set.hh>
00008 #include <lestes/std/list.hh>
00009 #include <lestes/std/map.hh>
00010 #include <lestes/intercode/intercode.g.hh>
00011 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00012 
00013 #include <lestes/std/objectize_macros.hh>
00014 package(lestes);
00015 package(std);
00016 class object;
00017 end_package(std);
00018 end_package(lestes);
00019 
00020 package(lestes);
00021 package(lang);
00022 package(cplus);
00023 package(sem);
00024 
00025 
00026 class ss_statement;
00027 class ss_decl_name;
00028 class ss_decl_seq;
00029 class ss_declaration_time;
00030 class ss_type;
00031 class ss_struct_base;
00032 class ss_id_label;
00033 class ss_enum;
00034 class ss_expression;
00035 class ss_compound_stmt;
00036 class or_or_functional;
00037 class ss_declaration;
00038 class ss_declaration_visitor;
00039 class ss_decl2ulint_base;
00040 class ss_decl2lstring_base;
00041 class ss_namespace_definition;
00042 class ss_declaration_with_access_specifier;
00043 class ss_object_declaration;
00044 class ss_bitfield_declaration;
00045 class ss_parameter_declaration;
00046 class ss_fake_declaration;
00047 class ss_injected_class_declaration;
00048 class ss_enum_definition;
00049 class ss_typedef_definition;
00050 class ss_enumerator_declaration;
00051 class ss_befriendable_declaration;
00052 class ss_structure_declaration;
00053 class ss_function_declaration;
00054 class ss_method_declaration;
00055 class ss_using_declaration;
00056 class ss_dummy_declaration;
00057 class ss_compound_stmt_declaration;
00058 class ss_builtin_operator_declaration;
00059 class ss_linkage;
00060 
00061 
00062 //! Class for declarations
00063 class ss_declaration : public ::lestes::intercode::ss_base_with_location {
00064 public:
00065         //! The method visible_since_get returns the value of the field ss_declaration::visible_since.
00066         ptr< ss_declaration_time > visible_since_get() const;
00067 
00068         //! The method visible_since_set sets the field ss_declaration::visible_since to the given value.
00069         void visible_since_set(const ptr< ss_declaration_time > &);
00070 
00071         //! The method decl_time_get returns the value of the field ss_declaration::decl_time.
00072         ptr< ss_declaration_time > decl_time_get() const;
00073 
00074         //! The method decl_time_set sets the field ss_declaration::decl_time to the given value.
00075         void decl_time_set(const ptr< ss_declaration_time > &);
00076 
00077         //! The method name_get returns the value of the field ss_declaration::name.
00078         ptr< ss_decl_name > name_get() const;
00079 
00080         //! The method name_set sets the field ss_declaration::name to the given value.
00081         void name_set(const ptr< ss_decl_name > &);
00082 
00083         //! The method contained_in_get returns the value of the field ss_declaration::contained_in.
00084         ptr< ss_decl_seq > contained_in_get() const;
00085 
00086         //! The method contained_in_set sets the field ss_declaration::contained_in to the given value.
00087         void contained_in_set(const ptr< ss_decl_seq > &);
00088 
00089         //! The method type_get returns the value of the field ss_declaration::type.
00090         ptr< ss_type > type_get() const;
00091 
00092         //! The method type_set sets the field ss_declaration::type to the given value.
00093         void type_set(const ptr< ss_type > &);
00094 
00095         //! The method linkage_get returns the value of the field ss_declaration::linkage.
00096         ptr< ss_linkage > linkage_get() const;
00097 
00098         //! The method linkage_set sets the field ss_declaration::linkage to the given value.
00099         void linkage_set(const ptr< ss_linkage > &);
00100 
00101         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00102         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00103         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00104         
00105 
00106         //! for purposes of dumping
00107         virtual ptr<reflection_list> reflection_get() const;
00108         //! for purposes of dumping
00109         virtual ptr<field_list_list> field_values_get() const;
00110         
00111 protected:
00112         //! Generated constructor for class ss_declaration.
00113         ss_declaration (
00114                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00115                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00116                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00117                 ptr< ss_decl_name > a__ss_declaration__name,
00118                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00119                 ptr< ss_type > a__ss_declaration__type,
00120                 ptr< ss_linkage > a__ss_declaration__linkage);
00121 
00122         //! Marking routine for class ss_declaration. 
00123         virtual void gc_mark();
00124 
00125 private:
00126         /*! \brief Invisible declarations are results of friend declarations.
00127 
00128         
00129                                         Invisible declarations can be introduced into namespace scope
00130                                         using 'friend' declarations in classes:
00131 
00132                                         class c {
00133                                                 friend class a;
00134                                                 friend int foo();
00135                                         };
00136 
00137                                         Both ::a and ::foo are introduced into :: namespace, yet they are
00138                                         invisible. However, when later defining ::a or ::foo, the invisible
00139                                         declarations have to be paired (marked as overridden by) the new,
00140                                         visible ones.
00141 
00142                                         Visible is defined, so that the visible_since time is before the
00143                                         query time (in terms of declaration_time).
00144                                 
00145         */
00146         srp< ss_declaration_time > visible_since;
00147         srp< ss_declaration_time > decl_time;
00148         srp< ss_decl_name > name;
00149         srp< ss_decl_seq > contained_in;
00150         /*! \brief Type of the declared thing.
00151 
00152         
00153                                         Namespace declarations have 'void' type, for simplicity.
00154                                 
00155         */
00156         srp< ss_type > type;
00157         //! external,internal,inline,no linkage
00158         srp< ss_linkage > linkage;
00159         static ptr<reflection_list> reflection;
00160         
00161 }; // ss_declaration
00162 
00163 
00164 class ss_namespace_definition : public ss_declaration {
00165 public:
00166         //! The method body_get returns the value of the field ss_namespace_definition::body.
00167         ptr< ss_decl_seq > body_get() const;
00168 
00169         //! The method body_set sets the field ss_namespace_definition::body to the given value.
00170         void body_set(const ptr< ss_decl_seq > &);
00171 
00172         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00173         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00174         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00175         
00176         //! First generated factory method for class ss_namespace_definition.
00177         static ptr< ss_namespace_definition > create (
00178                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00179                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00180                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00181                 ptr< ss_decl_name > a__ss_declaration__name,
00182                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00183                 ptr< ss_type > a__ss_declaration__type,
00184                 ptr< ss_linkage > a__ss_declaration__linkage,
00185                 ptr< ss_decl_seq > a__ss_namespace_definition__body);
00186 
00187         
00188 
00189         //! for purposes of dumping
00190         virtual ptr<reflection_list> reflection_get() const;
00191         //! for purposes of dumping
00192         virtual ptr<field_list_list> field_values_get() const;
00193         
00194 protected:
00195         //! Generated constructor for class ss_namespace_definition.
00196         ss_namespace_definition (
00197                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00198                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00199                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00200                 ptr< ss_decl_name > a__ss_declaration__name,
00201                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00202                 ptr< ss_type > a__ss_declaration__type,
00203                 ptr< ss_linkage > a__ss_declaration__linkage,
00204                 ptr< ss_decl_seq > a__ss_namespace_definition__body);
00205 
00206         //! Marking routine for class ss_namespace_definition. 
00207         virtual void gc_mark();
00208 
00209 private:
00210         srp< ss_decl_seq > body;
00211         static ptr<reflection_list> reflection;
00212         
00213 }; // ss_namespace_definition
00214 
00215 
00216 class ss_declaration_with_access_specifier : public ss_declaration {
00217 public:
00218         //! The method access_specifier_get returns the value of the field ss_declaration_with_access_specifier::access_specifier.
00219         ss_access_specifier::type access_specifier_get() const;
00220 
00221         //! The method access_specifier_set sets the field ss_declaration_with_access_specifier::access_specifier to the given value.
00222         void access_specifier_set(ss_access_specifier::type);
00223 
00224         //! The method storage_class_get returns the value of the field ss_declaration_with_access_specifier::storage_class.
00225         ss_storage_class::type storage_class_get() const;
00226 
00227         //! The method storage_class_set sets the field ss_declaration_with_access_specifier::storage_class to the given value.
00228         void storage_class_set(ss_storage_class::type);
00229 
00230         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00231         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00232         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00233         
00234 
00235         //! for purposes of dumping
00236         virtual ptr<reflection_list> reflection_get() const;
00237         //! for purposes of dumping
00238         virtual ptr<field_list_list> field_values_get() const;
00239         
00240 protected:
00241         //! Generated constructor for class ss_declaration_with_access_specifier.
00242         ss_declaration_with_access_specifier (
00243                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00244                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00245                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00246                 ptr< ss_decl_name > a__ss_declaration__name,
00247                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00248                 ptr< ss_type > a__ss_declaration__type,
00249                 ptr< ss_linkage > a__ss_declaration__linkage,
00250                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00251                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00252 
00253         //! Marking routine for class ss_declaration_with_access_specifier. 
00254         virtual void gc_mark();
00255 
00256 private:
00257         /*! \brief Access specifier
00258 
00259         Non-member definitions use ACCESS_PUBLIC value.
00260         */
00261         ss_access_specifier::type access_specifier;
00262         /*! \brief Storage class specifier.
00263 
00264         Defaultly set to ST_NONE.
00265         */
00266         ss_storage_class::type storage_class;
00267         static ptr<reflection_list> reflection;
00268         
00269 }; // ss_declaration_with_access_specifier
00270 
00271 
00272 //! A variable is an object in the terms of the norm.
00273 class ss_object_declaration : public ss_declaration_with_access_specifier {
00274 public:
00275         //! The method initialized_since_get returns the value of the field ss_object_declaration::initialized_since.
00276         ptr< ss_declaration_time > initialized_since_get() const;
00277 
00278         //! The method initialized_since_set sets the field ss_object_declaration::initialized_since to the given value.
00279         void initialized_since_set(const ptr< ss_declaration_time > &);
00280 
00281         //! The method initializer_get returns the value of the field ss_object_declaration::initializer.
00282         ptr< or_or_functional > initializer_get() const;
00283 
00284         //! The method initializer_set sets the field ss_object_declaration::initializer to the given value.
00285         void initializer_set(const ptr< or_or_functional > &);
00286 
00287         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00288         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00289         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00290         
00291         //! First generated factory method for class ss_object_declaration.
00292         static ptr< ss_object_declaration > create (
00293                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00294                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00295                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00296                 ptr< ss_decl_name > a__ss_declaration__name,
00297                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00298                 ptr< ss_type > a__ss_declaration__type,
00299                 ptr< ss_linkage > a__ss_declaration__linkage,
00300                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00301                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00302                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00303                 ptr< or_or_functional > a__ss_object_declaration__initializer);
00304 
00305         //! Second generated factory method for class ss_object_declaration.
00306         static ptr< ss_object_declaration > create (
00307                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00308                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00309                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00310                 ptr< ss_decl_name > a__ss_declaration__name,
00311                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00312                 ptr< ss_type > a__ss_declaration__type,
00313                 ptr< ss_linkage > a__ss_declaration__linkage,
00314                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00315                 ptr< or_or_functional > a__ss_object_declaration__initializer);
00316 
00317         
00318 
00319         //! for purposes of dumping
00320         virtual ptr<reflection_list> reflection_get() const;
00321         //! for purposes of dumping
00322         virtual ptr<field_list_list> field_values_get() const;
00323         
00324 protected:
00325         //! Generated constructor for class ss_object_declaration.
00326         ss_object_declaration (
00327                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00328                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00329                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00330                 ptr< ss_decl_name > a__ss_declaration__name,
00331                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00332                 ptr< ss_type > a__ss_declaration__type,
00333                 ptr< ss_linkage > a__ss_declaration__linkage,
00334                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00335                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00336                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00337                 ptr< or_or_functional > a__ss_object_declaration__initializer);
00338 
00339         //! Marking routine for class ss_object_declaration. 
00340         virtual void gc_mark();
00341 
00342 private:
00343         /*! \brief The time at which the initializer appears
00344 
00345         
00346                                         The time is used in determining whether a function has a default argument at the time of the call:
00347                                         <pre>
00348                                                 void foo(int, int = 3); // declaration_time == 1;
00349                                                 foo(3); // declaration_time == 2;
00350                                                 void foo(int = 2, int); // declaration_time == 3;
00351                                         </pre>
00352                                         Here the first argument will have its initialized_since equal to 3 so
00353                                         that it can be determined that at time 2 the expression foo(); would
00354                                         be invalid.
00355                                 
00356         */
00357         srp< ss_declaration_time > initialized_since;
00358         /*! \brief TODO: this field might go to ss_parameter_declaration.
00359 
00360         
00361                                         Ratio: for parameter: we see it clearly when creating declaration
00362                                         contrary: static const int; inside class (we need reference to decl-stmt).
00363                                 
00364         */
00365         srp< or_or_functional > initializer;
00366         static ptr<reflection_list> reflection;
00367         
00368 }; // ss_object_declaration
00369 
00370 
00371 class ss_bitfield_declaration : public ss_object_declaration {
00372 public:
00373         //! The method width_get returns the value of the field ss_bitfield_declaration::width.
00374         t_size width_get() const;
00375 
00376         //! The method width_set sets the field ss_bitfield_declaration::width to the given value.
00377         void width_set(t_size);
00378 
00379         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00380         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00381         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00382         
00383         //! First generated factory method for class ss_bitfield_declaration.
00384         static ptr< ss_bitfield_declaration > create (
00385                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00386                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00387                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00388                 ptr< ss_decl_name > a__ss_declaration__name,
00389                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00390                 ptr< ss_type > a__ss_declaration__type,
00391                 ptr< ss_linkage > a__ss_declaration__linkage,
00392                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00393                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00394                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00395                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00396                 t_size a__ss_bitfield_declaration__width);
00397 
00398         //! Second generated factory method for class ss_bitfield_declaration.
00399         static ptr< ss_bitfield_declaration > create (
00400                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00401                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00402                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00403                 ptr< ss_decl_name > a__ss_declaration__name,
00404                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00405                 ptr< ss_type > a__ss_declaration__type,
00406                 ptr< ss_linkage > a__ss_declaration__linkage,
00407                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00408                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00409                 t_size a__ss_bitfield_declaration__width);
00410 
00411         
00412 
00413         //! for purposes of dumping
00414         virtual ptr<reflection_list> reflection_get() const;
00415         //! for purposes of dumping
00416         virtual ptr<field_list_list> field_values_get() const;
00417         
00418 protected:
00419         //! Generated constructor for class ss_bitfield_declaration.
00420         ss_bitfield_declaration (
00421                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00422                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00423                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00424                 ptr< ss_decl_name > a__ss_declaration__name,
00425                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00426                 ptr< ss_type > a__ss_declaration__type,
00427                 ptr< ss_linkage > a__ss_declaration__linkage,
00428                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00429                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00430                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00431                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00432                 t_size a__ss_bitfield_declaration__width);
00433 
00434         //! Marking routine for class ss_bitfield_declaration. 
00435         virtual void gc_mark();
00436 
00437 private:
00438         t_size width;
00439         static ptr<reflection_list> reflection;
00440         
00441 }; // ss_bitfield_declaration
00442 
00443 
00444 class ss_parameter_declaration : public ss_object_declaration {
00445 public:
00446         //! The method position_get returns the value of the field ss_parameter_declaration::position.
00447         ulint position_get() const;
00448 
00449         //! The method position_set sets the field ss_parameter_declaration::position to the given value.
00450         void position_set(ulint);
00451 
00452         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00453         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00454         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00455         
00456         //! First generated factory method for class ss_parameter_declaration.
00457         static ptr< ss_parameter_declaration > create (
00458                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00459                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00460                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00461                 ptr< ss_decl_name > a__ss_declaration__name,
00462                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00463                 ptr< ss_type > a__ss_declaration__type,
00464                 ptr< ss_linkage > a__ss_declaration__linkage,
00465                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00466                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00467                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00468                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00469                 ulint a__ss_parameter_declaration__position);
00470 
00471         //! Second generated factory method for class ss_parameter_declaration.
00472         static ptr< ss_parameter_declaration > create (
00473                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00474                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00475                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00476                 ptr< ss_decl_name > a__ss_declaration__name,
00477                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00478                 ptr< ss_type > a__ss_declaration__type,
00479                 ptr< ss_linkage > a__ss_declaration__linkage,
00480                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00481                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00482                 ulint a__ss_parameter_declaration__position);
00483 
00484         
00485 
00486         //! for purposes of dumping
00487         virtual ptr<reflection_list> reflection_get() const;
00488         //! for purposes of dumping
00489         virtual ptr<field_list_list> field_values_get() const;
00490         
00491 protected:
00492         //! Generated constructor for class ss_parameter_declaration.
00493         ss_parameter_declaration (
00494                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00495                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00496                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00497                 ptr< ss_decl_name > a__ss_declaration__name,
00498                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00499                 ptr< ss_type > a__ss_declaration__type,
00500                 ptr< ss_linkage > a__ss_declaration__linkage,
00501                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00502                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00503                 ptr< ss_declaration_time > a__ss_object_declaration__initialized_since,
00504                 ptr< or_or_functional > a__ss_object_declaration__initializer,
00505                 ulint a__ss_parameter_declaration__position);
00506 
00507         //! Marking routine for class ss_parameter_declaration. 
00508         virtual void gc_mark();
00509 
00510 private:
00511         ulint position;
00512         static ptr<reflection_list> reflection;
00513         
00514 }; // ss_parameter_declaration
00515 
00516 
00517 /*! \brief Fake declaration is used to prohibit redeclaration of an object.
00518 
00519 
00520                                 ss_fake_declaration is placed into an ss_decl_seq to make it
00521                                 impossible to declare something with the same name in the
00522                                 ss_decl_seq. This is a requirement of the norm. For example, at
00523                                 function body's outermost compound statement, it is forbidden to
00524                                 introduce a name that is equal to a name of a parameter.
00525 
00526                                 See [3.3.2/2], [6.4/3].
00527                         
00528 */
00529 class ss_fake_declaration : public ss_declaration_with_access_specifier {
00530 public:
00531         //! The method real_decl_get returns the value of the field ss_fake_declaration::real_decl.
00532         ptr< ss_object_declaration > real_decl_get() const;
00533 
00534         //! The method real_decl_set sets the field ss_fake_declaration::real_decl to the given value.
00535         void real_decl_set(const ptr< ss_object_declaration > &);
00536 
00537         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00538         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00539         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00540         
00541         //! First generated factory method for class ss_fake_declaration.
00542         static ptr< ss_fake_declaration > create (
00543                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00544                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00545                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00546                 ptr< ss_decl_name > a__ss_declaration__name,
00547                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00548                 ptr< ss_type > a__ss_declaration__type,
00549                 ptr< ss_linkage > a__ss_declaration__linkage,
00550                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00551                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00552                 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00553 
00554         //! Second generated factory method for class ss_fake_declaration.
00555         static ptr< ss_fake_declaration > create (
00556                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00557                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00558                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00559                 ptr< ss_decl_name > a__ss_declaration__name,
00560                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00561                 ptr< ss_type > a__ss_declaration__type,
00562                 ptr< ss_linkage > a__ss_declaration__linkage,
00563                 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00564 
00565         
00566 
00567         //! for purposes of dumping
00568         virtual ptr<reflection_list> reflection_get() const;
00569         //! for purposes of dumping
00570         virtual ptr<field_list_list> field_values_get() const;
00571         
00572 protected:
00573         //! Generated constructor for class ss_fake_declaration.
00574         ss_fake_declaration (
00575                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00576                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00577                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00578                 ptr< ss_decl_name > a__ss_declaration__name,
00579                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00580                 ptr< ss_type > a__ss_declaration__type,
00581                 ptr< ss_linkage > a__ss_declaration__linkage,
00582                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00583                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00584                 ptr< ss_object_declaration > a__ss_fake_declaration__real_decl);
00585 
00586         //! Marking routine for class ss_fake_declaration. 
00587         virtual void gc_mark();
00588 
00589 private:
00590         //! Points to the real declaration of the object.
00591         srp< ss_object_declaration > real_decl;
00592         static ptr<reflection_list> reflection;
00593         
00594 }; // ss_fake_declaration
00595 
00596 
00597 /*! \brief The injected class name declaration
00598 
00599 
00600                                 see [9/2]
00601                         
00602 */
00603 class ss_injected_class_declaration : public ss_declaration_with_access_specifier {
00604 public:
00605         //! The method real_decl_get returns the value of the field ss_injected_class_declaration::real_decl.
00606         ptr< ss_structure_declaration > real_decl_get() const;
00607 
00608         //! The method real_decl_set sets the field ss_injected_class_declaration::real_decl to the given value.
00609         void real_decl_set(const ptr< ss_structure_declaration > &);
00610 
00611         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00612         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00613         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00614         
00615         //! First generated factory method for class ss_injected_class_declaration.
00616         static ptr< ss_injected_class_declaration > create (
00617                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00618                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00619                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00620                 ptr< ss_decl_name > a__ss_declaration__name,
00621                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00622                 ptr< ss_type > a__ss_declaration__type,
00623                 ptr< ss_linkage > a__ss_declaration__linkage,
00624                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00625                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00626                 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00627 
00628         //! Second generated factory method for class ss_injected_class_declaration.
00629         static ptr< ss_injected_class_declaration > create (
00630                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00631                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00632                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00633                 ptr< ss_decl_name > a__ss_declaration__name,
00634                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00635                 ptr< ss_type > a__ss_declaration__type,
00636                 ptr< ss_linkage > a__ss_declaration__linkage,
00637                 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00638 
00639         
00640 
00641         //! for purposes of dumping
00642         virtual ptr<reflection_list> reflection_get() const;
00643         //! for purposes of dumping
00644         virtual ptr<field_list_list> field_values_get() const;
00645         
00646 protected:
00647         //! Generated constructor for class ss_injected_class_declaration.
00648         ss_injected_class_declaration (
00649                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00650                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00651                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00652                 ptr< ss_decl_name > a__ss_declaration__name,
00653                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00654                 ptr< ss_type > a__ss_declaration__type,
00655                 ptr< ss_linkage > a__ss_declaration__linkage,
00656                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00657                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00658                 ptr< ss_structure_declaration > a__ss_injected_class_declaration__real_decl);
00659 
00660         //! Marking routine for class ss_injected_class_declaration. 
00661         virtual void gc_mark();
00662 
00663 private:
00664         //! Points to the real declaration of the object.
00665         srp< ss_structure_declaration > real_decl;
00666         static ptr<reflection_list> reflection;
00667         
00668 }; // ss_injected_class_declaration
00669 
00670 
00671 class ss_enum_definition : public ss_declaration_with_access_specifier {
00672 public:
00673         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00674         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00675         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00676         
00677         //! First generated factory method for class ss_enum_definition.
00678         static ptr< ss_enum_definition > create (
00679                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00680                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00681                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00682                 ptr< ss_decl_name > a__ss_declaration__name,
00683                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00684                 ptr< ss_type > a__ss_declaration__type,
00685                 ptr< ss_linkage > a__ss_declaration__linkage,
00686                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00687                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00688 
00689         //! Second generated factory method for class ss_enum_definition.
00690         static ptr< ss_enum_definition > create (
00691                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00692                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00693                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00694                 ptr< ss_decl_name > a__ss_declaration__name,
00695                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00696                 ptr< ss_type > a__ss_declaration__type,
00697                 ptr< ss_linkage > a__ss_declaration__linkage);
00698 
00699         
00700 
00701         //! for purposes of dumping
00702         virtual ptr<reflection_list> reflection_get() const;
00703         //! for purposes of dumping
00704         virtual ptr<field_list_list> field_values_get() const;
00705         
00706 protected:
00707         //! Generated constructor for class ss_enum_definition.
00708         ss_enum_definition (
00709                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00710                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00711                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00712                 ptr< ss_decl_name > a__ss_declaration__name,
00713                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00714                 ptr< ss_type > a__ss_declaration__type,
00715                 ptr< ss_linkage > a__ss_declaration__linkage,
00716                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00717                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00718 
00719         //! Marking routine for class ss_enum_definition. 
00720         virtual void gc_mark();
00721 
00722 private:
00723         static ptr<reflection_list> reflection;
00724         
00725 }; // ss_enum_definition
00726 
00727 
00728 class ss_typedef_definition : public ss_declaration_with_access_specifier {
00729 public:
00730         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00731         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00732         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00733         
00734         //! First generated factory method for class ss_typedef_definition.
00735         static ptr< ss_typedef_definition > create (
00736                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00737                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00738                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00739                 ptr< ss_decl_name > a__ss_declaration__name,
00740                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00741                 ptr< ss_type > a__ss_declaration__type,
00742                 ptr< ss_linkage > a__ss_declaration__linkage,
00743                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00744                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00745 
00746         //! Second generated factory method for class ss_typedef_definition.
00747         static ptr< ss_typedef_definition > create (
00748                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00749                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00750                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00751                 ptr< ss_decl_name > a__ss_declaration__name,
00752                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00753                 ptr< ss_type > a__ss_declaration__type,
00754                 ptr< ss_linkage > a__ss_declaration__linkage);
00755 
00756         
00757 
00758         //! for purposes of dumping
00759         virtual ptr<reflection_list> reflection_get() const;
00760         //! for purposes of dumping
00761         virtual ptr<field_list_list> field_values_get() const;
00762         
00763 protected:
00764         //! Generated constructor for class ss_typedef_definition.
00765         ss_typedef_definition (
00766                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00767                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00768                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00769                 ptr< ss_decl_name > a__ss_declaration__name,
00770                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00771                 ptr< ss_type > a__ss_declaration__type,
00772                 ptr< ss_linkage > a__ss_declaration__linkage,
00773                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00774                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class);
00775 
00776         //! Marking routine for class ss_typedef_definition. 
00777         virtual void gc_mark();
00778 
00779 private:
00780         static ptr<reflection_list> reflection;
00781         
00782 }; // ss_typedef_definition
00783 
00784 
00785 class ss_enumerator_declaration : public ss_declaration_with_access_specifier {
00786 public:
00787         //! The method specifier_get returns the value of the field ss_enumerator_declaration::specifier.
00788         ptr< ss_enum > specifier_get() const;
00789 
00790         //! The method specifier_set sets the field ss_enumerator_declaration::specifier to the given value.
00791         void specifier_set(const ptr< ss_enum > &);
00792 
00793         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00794         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00795         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00796         
00797         //! First generated factory method for class ss_enumerator_declaration.
00798         static ptr< ss_enumerator_declaration > create (
00799                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00800                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00801                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00802                 ptr< ss_decl_name > a__ss_declaration__name,
00803                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00804                 ptr< ss_type > a__ss_declaration__type,
00805                 ptr< ss_linkage > a__ss_declaration__linkage,
00806                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00807                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00808                 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00809 
00810         //! Second generated factory method for class ss_enumerator_declaration.
00811         static ptr< ss_enumerator_declaration > create (
00812                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00813                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00814                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00815                 ptr< ss_decl_name > a__ss_declaration__name,
00816                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00817                 ptr< ss_type > a__ss_declaration__type,
00818                 ptr< ss_linkage > a__ss_declaration__linkage,
00819                 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00820 
00821         
00822 
00823         //! for purposes of dumping
00824         virtual ptr<reflection_list> reflection_get() const;
00825         //! for purposes of dumping
00826         virtual ptr<field_list_list> field_values_get() const;
00827         
00828 protected:
00829         //! Generated constructor for class ss_enumerator_declaration.
00830         ss_enumerator_declaration (
00831                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00832                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00833                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00834                 ptr< ss_decl_name > a__ss_declaration__name,
00835                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00836                 ptr< ss_type > a__ss_declaration__type,
00837                 ptr< ss_linkage > a__ss_declaration__linkage,
00838                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00839                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00840                 ptr< ss_enum > a__ss_enumerator_declaration__specifier);
00841 
00842         //! Marking routine for class ss_enumerator_declaration. 
00843         virtual void gc_mark();
00844 
00845 private:
00846         srp< ss_enum > specifier;
00847         static ptr<reflection_list> reflection;
00848         
00849 }; // ss_enumerator_declaration
00850 
00851 
00852 //! Class for declarations that can be friends of a class
00853 class ss_befriendable_declaration : public ss_declaration_with_access_specifier {
00854 public:
00855         //! The method friend_of_get returns the value of the field ss_befriendable_declaration::friend_of.
00856         ptr< ::lestes::std::set< srp< ss_struct_base > > > friend_of_get() const;
00857 
00858         //! The method friend_of_set sets the field ss_befriendable_declaration::friend_of to the given value.
00859         void friend_of_set(const ptr< ::lestes::std::set< srp< ss_struct_base > > > & );
00860 
00861         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
00862         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
00863         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
00864         
00865 
00866         //! for purposes of dumping
00867         virtual ptr<reflection_list> reflection_get() const;
00868         //! for purposes of dumping
00869         virtual ptr<field_list_list> field_values_get() const;
00870         
00871 protected:
00872         //! Generated constructor for class ss_befriendable_declaration.
00873         ss_befriendable_declaration (
00874                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00875                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00876                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00877                 ptr< ss_decl_name > a__ss_declaration__name,
00878                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00879                 ptr< ss_type > a__ss_declaration__type,
00880                 ptr< ss_linkage > a__ss_declaration__linkage,
00881                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00882                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00883                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of);
00884 
00885         //! Marking routine for class ss_befriendable_declaration. 
00886         virtual void gc_mark();
00887 
00888 private:
00889         //! Set of classes that this entity is friend with.
00890         srp< ::lestes::std::set< srp< ss_struct_base > > >  friend_of;
00891         static ptr<reflection_list> reflection;
00892         
00893 }; // ss_befriendable_declaration
00894 
00895 
00896 //! Class for declarations that can be friends of a class
00897 class ss_structure_declaration : public ss_befriendable_declaration {
00898 public:
00899         //! The method body_get returns the value of the field ss_structure_declaration::body.
00900         ptr< ss_decl_seq > body_get() const;
00901 
00902         //! The method body_set sets the field ss_structure_declaration::body to the given value.
00903         void body_set(const ptr< ss_decl_seq > &);
00904 
00905         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00906         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00907         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00908         
00909         //! First generated factory method for class ss_structure_declaration.
00910         static ptr< ss_structure_declaration > create (
00911                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00912                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00913                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00914                 ptr< ss_decl_name > a__ss_declaration__name,
00915                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00916                 ptr< ss_type > a__ss_declaration__type,
00917                 ptr< ss_linkage > a__ss_declaration__linkage,
00918                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00919                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00920                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
00921                 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00922 
00923         //! Second generated factory method for class ss_structure_declaration.
00924         static ptr< ss_structure_declaration > create (
00925                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00926                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00927                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00928                 ptr< ss_decl_name > a__ss_declaration__name,
00929                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00930                 ptr< ss_type > a__ss_declaration__type,
00931                 ptr< ss_linkage > a__ss_declaration__linkage,
00932                 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00933 
00934         
00935 
00936         //! for purposes of dumping
00937         virtual ptr<reflection_list> reflection_get() const;
00938         //! for purposes of dumping
00939         virtual ptr<field_list_list> field_values_get() const;
00940         
00941 protected:
00942         //! Generated constructor for class ss_structure_declaration.
00943         ss_structure_declaration (
00944                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00945                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
00946                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
00947                 ptr< ss_decl_name > a__ss_declaration__name,
00948                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
00949                 ptr< ss_type > a__ss_declaration__type,
00950                 ptr< ss_linkage > a__ss_declaration__linkage,
00951                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
00952                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
00953                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
00954                 ptr< ss_decl_seq > a__ss_structure_declaration__body);
00955 
00956         //! Marking routine for class ss_structure_declaration. 
00957         virtual void gc_mark();
00958 
00959 private:
00960         srp< ss_decl_seq > body;
00961         static ptr<reflection_list> reflection;
00962         
00963 }; // ss_structure_declaration
00964 
00965 
00966 //! Class for function definition
00967 class ss_function_declaration : public ss_befriendable_declaration {
00968 public:
00969         //! The method parameters_get returns the value of the field ss_function_declaration::parameters.
00970         ptr< ss_decl_seq > parameters_get() const;
00971 
00972         //! The method parameters_set sets the field ss_function_declaration::parameters to the given value.
00973         void parameters_set(const ptr< ss_decl_seq > &);
00974 
00975         //! The method body_get returns the value of the field ss_function_declaration::body.
00976         ptr< ss_compound_stmt > body_get() const;
00977 
00978         //! The method body_set sets the field ss_function_declaration::body to the given value.
00979         void body_set(const ptr< ss_compound_stmt > &);
00980 
00981         //! The method labels_get returns the value of the field ss_function_declaration::labels.
00982         ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > labels_get() const;
00983 
00984         //! The method labels_set sets the field ss_function_declaration::labels to the given value.
00985         void labels_set(const ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > & );
00986 
00987         //! The method historical_parameters_get returns the value of the field ss_function_declaration::historical_parameters.
00988         ptr< ::lestes::std::list< srp< ss_decl_seq > > > historical_parameters_get() const;
00989 
00990         //! The method historical_parameters_set sets the field ss_function_declaration::historical_parameters to the given value.
00991         void historical_parameters_set(const ptr< ::lestes::std::list< srp< ss_decl_seq > > > & );
00992 
00993         //! Whether is the current function entry point of the whole translation unit.
00994         bool is_entry_point();
00995 
00996         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
00997         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
00998         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
00999         
01000         //! First generated factory method for class ss_function_declaration.
01001         static ptr< ss_function_declaration > create (
01002                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01003                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01004                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01005                 ptr< ss_decl_name > a__ss_declaration__name,
01006                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01007                 ptr< ss_type > a__ss_declaration__type,
01008                 ptr< ss_linkage > a__ss_declaration__linkage,
01009                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01010                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01011                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01012                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01013                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01014                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01015                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01016 
01017         //! Second generated factory method for class ss_function_declaration.
01018         static ptr< ss_function_declaration > create (
01019                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01020                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01021                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01022                 ptr< ss_decl_name > a__ss_declaration__name,
01023                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01024                 ptr< ss_type > a__ss_declaration__type,
01025                 ptr< ss_linkage > a__ss_declaration__linkage,
01026                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01027                 ptr< ss_compound_stmt > a__ss_function_declaration__body);
01028 
01029         
01030 
01031         //! for purposes of dumping
01032         virtual ptr<reflection_list> reflection_get() const;
01033         //! for purposes of dumping
01034         virtual ptr<field_list_list> field_values_get() const;
01035         
01036 protected:
01037         //! Generated constructor for class ss_function_declaration.
01038         ss_function_declaration (
01039                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01040                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01041                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01042                 ptr< ss_decl_name > a__ss_declaration__name,
01043                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01044                 ptr< ss_type > a__ss_declaration__type,
01045                 ptr< ss_linkage > a__ss_declaration__linkage,
01046                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01047                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01048                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01049                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01050                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01051                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01052                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01053 
01054         //! Marking routine for class ss_function_declaration. 
01055         virtual void gc_mark();
01056 
01057 private:
01058         srp< ss_decl_seq > parameters;
01059         /*! \brief Compound statement of the function
01060 
01061         
01062                                         When the declaration is not a definition (ie. there was no
01063                                         function body), null value is used.
01064 
01065                                         Parent of ss_decl_seq in the body should be set to
01066                                         parameters_get()->parent_get(), not to parameters_get().
01067                                 
01068         */
01069         srp< ss_compound_stmt > body;
01070         //! Labels used inside function body. Used for goto statement.
01071         srp< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > >  labels;
01072         /*! \brief Historical parameters
01073 
01074         
01075                                         Whenever a function declaration is encountered a new declseq is
01076                                         created, holding the parameters.  The old value is of the field
01077                                         ss_function_declaration::parameters is put at the end of that list,
01078                                         so that the old names of the parameters can be retrieved later.
01079                                 
01080         */
01081         srp< ::lestes::std::list< srp< ss_decl_seq > > >  historical_parameters;
01082         static ptr<reflection_list> reflection;
01083         
01084 }; // ss_function_declaration
01085 
01086 
01087 //! Method declaration for a class.
01088 class ss_method_declaration : public ss_function_declaration {
01089 public:
01090         //! The method virtuality_get returns the value of the field ss_method_declaration::virtuality.
01091         bool virtuality_get() const;
01092 
01093         //! The method virtuality_set sets the field ss_method_declaration::virtuality to the given value.
01094         void virtuality_set(bool);
01095 
01096         //! The method pure_virtual_get returns the value of the field ss_method_declaration::pure_virtual.
01097         bool pure_virtual_get() const;
01098 
01099         //! The method pure_virtual_set sets the field ss_method_declaration::pure_virtual to the given value.
01100         void pure_virtual_set(bool);
01101 
01102         //! The method reimplements_get returns the value of the field ss_method_declaration::reimplements.
01103         ptr< ss_method_declaration > reimplements_get() const;
01104 
01105         //! The method reimplements_set sets the field ss_method_declaration::reimplements to the given value.
01106         void reimplements_set(const ptr< ss_method_declaration > &);
01107 
01108         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01109         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01110         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01111         
01112         //! First generated factory method for class ss_method_declaration.
01113         static ptr< ss_method_declaration > create (
01114                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01115                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01116                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01117                 ptr< ss_decl_name > a__ss_declaration__name,
01118                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01119                 ptr< ss_type > a__ss_declaration__type,
01120                 ptr< ss_linkage > a__ss_declaration__linkage,
01121                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01122                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01123                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01124                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01125                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01126                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01127                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters,
01128                 bool a__ss_method_declaration__virtuality,
01129                 bool a__ss_method_declaration__pure_virtual,
01130                 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01131 
01132         //! Second generated factory method for class ss_method_declaration.
01133         static ptr< ss_method_declaration > create (
01134                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01135                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01136                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01137                 ptr< ss_decl_name > a__ss_declaration__name,
01138                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01139                 ptr< ss_type > a__ss_declaration__type,
01140                 ptr< ss_linkage > a__ss_declaration__linkage,
01141                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01142                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01143                 bool a__ss_method_declaration__virtuality,
01144                 bool a__ss_method_declaration__pure_virtual,
01145                 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01146 
01147         
01148 
01149         //! for purposes of dumping
01150         virtual ptr<reflection_list> reflection_get() const;
01151         //! for purposes of dumping
01152         virtual ptr<field_list_list> field_values_get() const;
01153         
01154 protected:
01155         //! Generated constructor for class ss_method_declaration.
01156         ss_method_declaration (
01157                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01158                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01159                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01160                 ptr< ss_decl_name > a__ss_declaration__name,
01161                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01162                 ptr< ss_type > a__ss_declaration__type,
01163                 ptr< ss_linkage > a__ss_declaration__linkage,
01164                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01165                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01166                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01167                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01168                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01169                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01170                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters,
01171                 bool a__ss_method_declaration__virtuality,
01172                 bool a__ss_method_declaration__pure_virtual,
01173                 ptr< ss_method_declaration > a__ss_method_declaration__reimplements);
01174 
01175         //! Marking routine for class ss_method_declaration. 
01176         virtual void gc_mark();
01177 
01178 private:
01179         //! Whether is current function(method) virtual.
01180         bool virtuality;
01181         //! Whether is current function(method) pure virtual (=0).
01182         bool pure_virtual;
01183         /*! \brief Declaration, which is being replaced in VMT by current declaration.
01184 
01185         
01186                                         This field is used only for virtual functions. Non virtual methods
01187                                         have this field set to NULL.
01188                                 
01189         */
01190         srp< ss_method_declaration > reimplements;
01191         static ptr<reflection_list> reflection;
01192         
01193 }; // ss_method_declaration
01194 
01195 
01196 class ss_using_declaration : public ss_declaration_with_access_specifier {
01197 public:
01198         //! The method target_get returns the value of the field ss_using_declaration::target.
01199         ptr< ss_declaration > target_get() const;
01200 
01201         //! The method target_set sets the field ss_using_declaration::target to the given value.
01202         void target_set(const ptr< ss_declaration > &);
01203 
01204         //! The method real_target_get returns the value of the field ss_using_declaration::real_target.
01205         ptr< ss_declaration > real_target_get() const;
01206 
01207         //! The method real_target_set sets the field ss_using_declaration::real_target to the given value.
01208         void real_target_set(const ptr< ss_declaration > &);
01209 
01210         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01211         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01212         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01213         
01214         //! First generated factory method for class ss_using_declaration.
01215         static ptr< ss_using_declaration > create (
01216                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01217                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01218                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01219                 ptr< ss_decl_name > a__ss_declaration__name,
01220                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01221                 ptr< ss_type > a__ss_declaration__type,
01222                 ptr< ss_linkage > a__ss_declaration__linkage,
01223                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01224                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01225                 ptr< ss_declaration > a__ss_using_declaration__target,
01226                 ptr< ss_declaration > a__ss_using_declaration__real_target);
01227 
01228         //! Second generated factory method for class ss_using_declaration.
01229         static ptr< ss_using_declaration > create (
01230                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01231                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01232                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01233                 ptr< ss_decl_name > a__ss_declaration__name,
01234                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01235                 ptr< ss_type > a__ss_declaration__type,
01236                 ptr< ss_linkage > a__ss_declaration__linkage,
01237                 ptr< ss_declaration > a__ss_using_declaration__target,
01238                 ptr< ss_declaration > a__ss_using_declaration__real_target);
01239 
01240         
01241 
01242         //! for purposes of dumping
01243         virtual ptr<reflection_list> reflection_get() const;
01244         //! for purposes of dumping
01245         virtual ptr<field_list_list> field_values_get() const;
01246         
01247 protected:
01248         //! Generated constructor for class ss_using_declaration.
01249         ss_using_declaration (
01250                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01251                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01252                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01253                 ptr< ss_decl_name > a__ss_declaration__name,
01254                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01255                 ptr< ss_type > a__ss_declaration__type,
01256                 ptr< ss_linkage > a__ss_declaration__linkage,
01257                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01258                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01259                 ptr< ss_declaration > a__ss_using_declaration__target,
01260                 ptr< ss_declaration > a__ss_using_declaration__real_target);
01261 
01262         //! Marking routine for class ss_using_declaration. 
01263         virtual void gc_mark();
01264 
01265 private:
01266         /*! \brief The target field points to a declaration that we are using.
01267 
01268         
01269                                         Note that this target can be another ss_using_declaration.
01270                                         To find out what declaration is at the end of the
01271                                         using_declaration chain, use real_target field.
01272                                 
01273         */
01274         srp< ss_declaration > target;
01275         /*! \brief "Real" target of the using declaration; never another ss_using_declaration.
01276 
01277         
01278                                         This field *must* be set (prefferably initialized) to
01279 
01280                                         ss_using_target::instance()->process( target )
01281                                 
01282         */
01283         srp< ss_declaration > real_target;
01284         static ptr<reflection_list> reflection;
01285         
01286 }; // ss_using_declaration
01287 
01288 
01289 class ss_dummy_declaration : public ss_declaration {
01290 public:
01291         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v ) abstract;
01292         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v ) abstract;
01293         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v ) abstract;
01294         
01295 
01296         //! for purposes of dumping
01297         virtual ptr<reflection_list> reflection_get() const;
01298         //! for purposes of dumping
01299         virtual ptr<field_list_list> field_values_get() const;
01300         
01301 protected:
01302         //! Generated constructor for class ss_dummy_declaration.
01303         ss_dummy_declaration (
01304                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01305                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01306                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01307                 ptr< ss_decl_name > a__ss_declaration__name,
01308                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01309                 ptr< ss_type > a__ss_declaration__type,
01310                 ptr< ss_linkage > a__ss_declaration__linkage);
01311 
01312         //! Marking routine for class ss_dummy_declaration. 
01313         virtual void gc_mark();
01314 
01315 private:
01316         static ptr<reflection_list> reflection;
01317         
01318 }; // ss_dummy_declaration
01319 
01320 
01321 /*! \brief Dummy declaration of compound statement.
01322 
01323 
01324                                 Instances of ss_decl_seq that are 'declared by' compound
01325                                 statements point to instances of this class by their declared_by
01326                                 field.
01327                         
01328 */
01329 class ss_compound_stmt_declaration : public ss_dummy_declaration {
01330 public:
01331         //! The method compound_stmt_get returns the value of the field ss_compound_stmt_declaration::compound_stmt.
01332         ptr< ss_compound_stmt > compound_stmt_get() const;
01333 
01334         //! The method compound_stmt_set sets the field ss_compound_stmt_declaration::compound_stmt to the given value.
01335         void compound_stmt_set(const ptr< ss_compound_stmt > &);
01336 
01337         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01338         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01339         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01340         
01341         //! First generated factory method for class ss_compound_stmt_declaration.
01342         static ptr< ss_compound_stmt_declaration > create (
01343                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01344                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01345                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01346                 ptr< ss_decl_name > a__ss_declaration__name,
01347                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01348                 ptr< ss_type > a__ss_declaration__type,
01349                 ptr< ss_linkage > a__ss_declaration__linkage,
01350                 ptr< ss_compound_stmt > a__ss_compound_stmt_declaration__compound_stmt);
01351 
01352         
01353 
01354         //! for purposes of dumping
01355         virtual ptr<reflection_list> reflection_get() const;
01356         //! for purposes of dumping
01357         virtual ptr<field_list_list> field_values_get() const;
01358         
01359 protected:
01360         //! Generated constructor for class ss_compound_stmt_declaration.
01361         ss_compound_stmt_declaration (
01362                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01363                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01364                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01365                 ptr< ss_decl_name > a__ss_declaration__name,
01366                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01367                 ptr< ss_type > a__ss_declaration__type,
01368                 ptr< ss_linkage > a__ss_declaration__linkage,
01369                 ptr< ss_compound_stmt > a__ss_compound_stmt_declaration__compound_stmt);
01370 
01371         //! Marking routine for class ss_compound_stmt_declaration. 
01372         virtual void gc_mark();
01373 
01374 private:
01375         srp< ss_compound_stmt > compound_stmt;
01376         static ptr<reflection_list> reflection;
01377         
01378 }; // ss_compound_stmt_declaration
01379 
01380 
01381 /*! \brief This class represents concieved declaration for builtin operators
01382 
01383 Instances of this class are used in the overload resolution process as
01384                                 per [13.6]. These objects shall not be constructed elsewhere
01385                         
01386 */
01387 class ss_builtin_operator_declaration : public ss_function_declaration {
01388 public:
01389         virtual void accept_ss_declaration_visitor( ptr< ss_declaration_visitor > v );
01390         virtual ulint accept_ss_decl2ulint_base( ptr< ss_decl2ulint_base > v );
01391         virtual lstring accept_ss_decl2lstring_base( ptr< ss_decl2lstring_base > v );
01392         
01393         //! First generated factory method for class ss_builtin_operator_declaration.
01394         static ptr< ss_builtin_operator_declaration > create (
01395                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01396                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01397                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01398                 ptr< ss_decl_name > a__ss_declaration__name,
01399                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01400                 ptr< ss_type > a__ss_declaration__type,
01401                 ptr< ss_linkage > a__ss_declaration__linkage,
01402                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01403                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01404                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01405                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01406                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01407                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01408                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01409 
01410         //! Second generated factory method for class ss_builtin_operator_declaration.
01411         static ptr< ss_builtin_operator_declaration > create (
01412                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01413                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01414                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01415                 ptr< ss_decl_name > a__ss_declaration__name,
01416                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01417                 ptr< ss_type > a__ss_declaration__type,
01418                 ptr< ss_linkage > a__ss_declaration__linkage,
01419                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01420                 ptr< ss_compound_stmt > a__ss_function_declaration__body);
01421 
01422         
01423 
01424         //! for purposes of dumping
01425         virtual ptr<reflection_list> reflection_get() const;
01426         //! for purposes of dumping
01427         virtual ptr<field_list_list> field_values_get() const;
01428         
01429 protected:
01430         //! Generated constructor for class ss_builtin_operator_declaration.
01431         ss_builtin_operator_declaration (
01432                 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
01433                 ptr< ss_declaration_time > a__ss_declaration__visible_since,
01434                 ptr< ss_declaration_time > a__ss_declaration__decl_time,
01435                 ptr< ss_decl_name > a__ss_declaration__name,
01436                 ptr< ss_decl_seq > a__ss_declaration__contained_in,
01437                 ptr< ss_type > a__ss_declaration__type,
01438                 ptr< ss_linkage > a__ss_declaration__linkage,
01439                 ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier,
01440                 ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class,
01441                 ptr< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of,
01442                 ptr< ss_decl_seq > a__ss_function_declaration__parameters,
01443                 ptr< ss_compound_stmt > a__ss_function_declaration__body,
01444                 ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels,
01445                 ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters);
01446 
01447         //! Marking routine for class ss_builtin_operator_declaration. 
01448         virtual void gc_mark();
01449 
01450 private:
01451         static ptr<reflection_list> reflection;
01452         
01453 }; // ss_builtin_operator_declaration
01454 
01455 
01456 class ss_linkage : public ::lestes::std::object {
01457 public:
01458         enum type {
01459                 LINKAGE_EXTERNAL,
01460                 LINKAGE_INTERNAL,
01461                 LINKAGE_NO
01462         };
01463 
01464         //! The method language_get returns the value of the field ss_linkage::language.
01465         ucn_string language_get() const;
01466 
01467         //! The method language_set sets the field ss_linkage::language to the given value.
01468         void language_set(ucn_string);
01469 
01470         //! The method linkage_get returns the value of the field ss_linkage::linkage.
01471         type linkage_get() const;
01472 
01473         //! The method linkage_set sets the field ss_linkage::linkage to the given value.
01474         void linkage_set(type);
01475 
01476         
01477         //! First generated factory method for class ss_linkage.
01478         static ptr< ss_linkage > create (
01479                 ucn_string a__ss_linkage__language,
01480                 type a__ss_linkage__linkage);
01481 
01482         
01483 
01484         //! for purposes of dumping
01485         virtual ptr<reflection_list> reflection_get() const;
01486         //! for purposes of dumping
01487         virtual ptr<field_list_list> field_values_get() const;
01488         
01489 protected:
01490         //! Generated constructor for class ss_linkage.
01491         ss_linkage (
01492                 ucn_string a__ss_linkage__language,
01493                 type a__ss_linkage__linkage);
01494 
01495         //! Marking routine for class ss_linkage. 
01496         virtual void gc_mark();
01497 
01498 private:
01499         ucn_string language;
01500         type linkage;
01501         static ptr<reflection_list> reflection;
01502         
01503 }; // ss_linkage
01504 
01505 
01506 end_package(sem);
01507 end_package(cplus);
01508 end_package(lang);
01509 end_package(lestes);
01510 
01511 package(lestes);
01512 package(std);
01513 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_linkage::type );
01514 end_package(std);
01515 end_package(lestes);
01516 
01517 #endif // lestes__lang__cplus__sem__ss_declaration_g_hh__included

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