ss_type.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_type_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_type_g_hh__included
00014 
00015 #include <lestes/common.hh>
00016 #include <lestes/std/pair_comparator.hh>
00017 #include <lestes/std/map.hh>
00018 #include <lestes/std/list.hh>
00019 #include <lestes/std/set.hh>
00020 #include <lestes/intercode/intercode.g.hh>
00021 #include <lestes/lang/cplus/sem/or_ics.hh>
00022 
00023 #include <lestes/std/objectize_macros.hh>
00024 package(lestes);
00025 package(md);
00026 package(types);
00027 class tm_data_type_base;
00028 end_package(types);
00029 end_package(md);
00030 end_package(lestes);
00031 
00032 package(lestes);
00033 package(lang);
00034 package(cplus);
00035 package(sem);
00036 
00037 
00038 
00039                 class ss_function_comparator;
00040         
00041 
00042 
00043 
00044 class ss_declaration;
00045 class ss_decl_seq;
00046 class ss_base_specifier;
00047 class ss_declaration_time;
00048 class as_name;
00049 class or_ics_functional;
00050 class ss_type;
00051 class or_ics_base;
00052 class or_ics_base_cv;
00053 class ss_type2tm_type_gen_base;
00054 class ss_type_visitor;
00055 class ss_builtin_type;
00056 class ss_const;
00057 class ss_volatile;
00058 class ss_const_volatile;
00059 class ss_referential;
00060 class ss_reference;
00061 class ss_pseudoreference;
00062 class ss_pointer;
00063 class ss_enum;
00064 class ss_array;
00065 class ss_member_pointer;
00066 class ss_function;
00067 class ss_member_function;
00068 class ss_struct_base;
00069 class ss_class;
00070 class ss_union;
00071 class ss_typename_type;
00072 
00073 
00074 //! Base class for intercode types
00075 class ss_type : public ::lestes::intercode::ss_base {
00076 public:
00077         // WARNING: Detailed doxygen description for method
00078         // should be near it's implementation, not in XML file.
00079 
00080         /*! \brief Is this type void?
00081 
00082         Used for genarating pi calls. 
00083                                         Differentiate between call and callv. 
00084                                         Generic case returns false;
00085                         
00086         */
00087         virtual bool is_void();
00088 
00089         // WARNING: Detailed doxygen description for method
00090         // should be near it's implementation, not in XML file.
00091 
00092         /*! \brief Is this type volatile?
00093 
00094         
00095                                         Used for generating side effects. 
00096                                         Generic case returns false;
00097                                 
00098         */
00099         virtual bool is_volatile();
00100 
00101         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00102         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00103         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00104         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00105         
00106 
00107         //! for purposes of dumping
00108         virtual ptr<reflection_list> reflection_get() const;
00109         //! for purposes of dumping
00110         virtual ptr<field_list_list> field_values_get() const;
00111         
00112 protected:
00113         //! Generated constructor for class ss_type.
00114         ss_type (
00115                 );
00116 
00117         //! Marking routine for class ss_type. 
00118         virtual void gc_mark();
00119 
00120 private:
00121         static ptr<reflection_list> reflection;
00122         
00123 }; // ss_type
00124 
00125 
00126 //! Class for built-in types
00127 class ss_builtin_type : public ss_type {
00128 public:
00129         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00130         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00131         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00132         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00133         
00134 
00135         //! for purposes of dumping
00136         virtual ptr<reflection_list> reflection_get() const;
00137         //! for purposes of dumping
00138         virtual ptr<field_list_list> field_values_get() const;
00139         
00140 protected:
00141         //! Generated constructor for class ss_builtin_type.
00142         ss_builtin_type (
00143                 );
00144 
00145         //! Marking routine for class ss_builtin_type. 
00146         virtual void gc_mark();
00147 
00148 private:
00149         static ptr<reflection_list> reflection;
00150         
00151 }; // ss_builtin_type
00152 
00153 
00154 /*! \brief Class for const types
00155 
00156 Singleton class.
00157 */
00158 class ss_const : public ss_type {
00159 public:
00160         //! The method what_get returns the value of the field ss_const::what.
00161         ptr< ss_type > what_get() const;
00162 
00163         //! The method what_set sets the field ss_const::what to the given value.
00164         void what_set(const ptr< ss_type > &);
00165 
00166         // WARNING: Detailed doxygen description for method
00167         // should be near it's implementation, not in XML file.
00168 
00169         /*! \brief Is this type void?
00170 
00171         Used for genarating pi calls. 
00172                                         Differentiate between call and callv. 
00173                                         Generic case returns false;
00174                         
00175         */
00176         virtual bool is_void();
00177 
00178         //! get the instance representing appropriately qualified argument type
00179         static ptr< ss_type > instance(ptr< ss_type > type);
00180 
00181         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00182         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00183         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00184         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00185         
00186         //! First generated factory method for class ss_const.
00187         static ptr< ss_const > create (
00188                 ptr< ss_type > a__ss_const__what);
00189 
00190         
00191 
00192         //! for purposes of dumping
00193         virtual ptr<reflection_list> reflection_get() const;
00194         //! for purposes of dumping
00195         virtual ptr<field_list_list> field_values_get() const;
00196         
00197 protected:
00198         //! Generated constructor for class ss_const.
00199         ss_const (
00200                 ptr< ss_type > a__ss_const__what);
00201 
00202         //! Marking routine for class ss_const. 
00203         virtual void gc_mark();
00204 
00205 private:
00206         srp< ss_type > what;
00207         //! holder for the class instances
00208         static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > >  the_instances;
00209         static ptr<reflection_list> reflection;
00210         
00211 }; // ss_const
00212 
00213 
00214 /*! \brief Class for volatile types
00215 
00216 Singleton class.
00217 */
00218 class ss_volatile : public ss_type {
00219 public:
00220         //! The method what_get returns the value of the field ss_volatile::what.
00221         ptr< ss_type > what_get() const;
00222 
00223         //! The method what_set sets the field ss_volatile::what to the given value.
00224         void what_set(const ptr< ss_type > &);
00225 
00226         // WARNING: Detailed doxygen description for method
00227         // should be near it's implementation, not in XML file.
00228 
00229         /*! \brief Is this type void?
00230 
00231         Used for genarating pi calls. 
00232                                         Differentiate between call and callv. 
00233                                         Generic case returns false;
00234                         
00235         */
00236         virtual bool is_void();
00237 
00238         // WARNING: Detailed doxygen description for method
00239         // should be near it's implementation, not in XML file.
00240 
00241         /*! \brief Is this type volatile?
00242 
00243         Used for generating side effects. 
00244                                         Returns true.
00245                         
00246         */
00247         virtual bool is_volatile();
00248 
00249         //! get the instance representing appropriately qualified argument type
00250         static ptr< ss_type > instance(ptr< ss_type > type);
00251 
00252         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00253         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00254         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00255         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00256         
00257         //! First generated factory method for class ss_volatile.
00258         static ptr< ss_volatile > create (
00259                 ptr< ss_type > a__ss_volatile__what);
00260 
00261         
00262 
00263         //! for purposes of dumping
00264         virtual ptr<reflection_list> reflection_get() const;
00265         //! for purposes of dumping
00266         virtual ptr<field_list_list> field_values_get() const;
00267         
00268 protected:
00269         //! Generated constructor for class ss_volatile.
00270         ss_volatile (
00271                 ptr< ss_type > a__ss_volatile__what);
00272 
00273         //! Marking routine for class ss_volatile. 
00274         virtual void gc_mark();
00275 
00276 private:
00277         srp< ss_type > what;
00278         //! holder for the class instances
00279         static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > >  the_instances;
00280         static ptr<reflection_list> reflection;
00281         
00282 }; // ss_volatile
00283 
00284 
00285 /*! \brief Class for volatile types
00286 
00287 Singleton class
00288 */
00289 class ss_const_volatile : public ss_type {
00290 public:
00291         //! The method what_get returns the value of the field ss_const_volatile::what.
00292         ptr< ss_type > what_get() const;
00293 
00294         //! The method what_set sets the field ss_const_volatile::what to the given value.
00295         void what_set(const ptr< ss_type > &);
00296 
00297         // WARNING: Detailed doxygen description for method
00298         // should be near it's implementation, not in XML file.
00299 
00300         /*! \brief Is this type void?
00301 
00302         Used for genarating pi calls. 
00303                                         Differentiate between call and callv. 
00304                                         Generic case returns false;
00305                         
00306         */
00307         virtual bool is_void();
00308 
00309         // WARNING: Detailed doxygen description for method
00310         // should be near it's implementation, not in XML file.
00311 
00312         /*! \brief Is this type volatile?
00313 
00314         Used for generating side effects. 
00315                                         Returns true.
00316                         
00317         */
00318         virtual bool is_volatile();
00319 
00320         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00321         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00322         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00323         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00324         
00325         //! First generated factory method for class ss_const_volatile.
00326         static ptr< ss_const_volatile > create (
00327                 ptr< ss_type > a__ss_const_volatile__what);
00328 
00329         
00330 
00331         //! for purposes of dumping
00332         virtual ptr<reflection_list> reflection_get() const;
00333         //! for purposes of dumping
00334         virtual ptr<field_list_list> field_values_get() const;
00335         
00336 protected:
00337         //! Generated constructor for class ss_const_volatile.
00338         ss_const_volatile (
00339                 ptr< ss_type > a__ss_const_volatile__what);
00340 
00341         //! Marking routine for class ss_const_volatile. 
00342         virtual void gc_mark();
00343 
00344 private:
00345         srp< ss_type > what;
00346         static ptr<reflection_list> reflection;
00347         
00348 }; // ss_const_volatile
00349 
00350 
00351 /*! \brief Class for references
00352 
00353 Type representing lvalues.
00354 */
00355 class ss_referential : public ss_type {
00356 public:
00357         //! The method what_get returns the value of the field ss_referential::what.
00358         ptr< ss_type > what_get() const;
00359 
00360         //! The method what_set sets the field ss_referential::what to the given value.
00361         void what_set(const ptr< ss_type > &);
00362 
00363         // WARNING: Detailed doxygen description for method
00364         // should be near it's implementation, not in XML file.
00365 
00366         /*! \brief Is this type void?
00367 
00368         Used for genarating pi calls. 
00369                                         Differentiate between call and callv. 
00370                                         Generic case returns false;
00371                         
00372         */
00373         virtual bool is_void();
00374 
00375         // WARNING: Detailed doxygen description for method
00376         // should be near it's implementation, not in XML file.
00377 
00378         /*! \brief Is this type volatile?
00379 
00380         Used for generating side effects. 
00381                                         Returns true.
00382                         
00383         */
00384         virtual bool is_volatile();
00385 
00386         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00387         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00388         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00389         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00390         
00391 
00392         //! for purposes of dumping
00393         virtual ptr<reflection_list> reflection_get() const;
00394         //! for purposes of dumping
00395         virtual ptr<field_list_list> field_values_get() const;
00396         
00397 protected:
00398         //! Generated constructor for class ss_referential.
00399         ss_referential (
00400                 ptr< ss_type > a__ss_referential__what);
00401 
00402         //! Marking routine for class ss_referential. 
00403         virtual void gc_mark();
00404 
00405 private:
00406         srp< ss_type > what;
00407         static ptr<reflection_list> reflection;
00408         
00409 }; // ss_referential
00410 
00411 
00412 /*! \brief Class for referenced types via &
00413 
00414 Compare with ss_address_of. Singleton class.
00415 */
00416 class ss_reference : public ss_referential {
00417 public:
00418         //! get the instance representing reference to the argument type
00419         static ptr< ss_type > instance(ptr< ss_type > type);
00420 
00421         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00422         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00423         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00424         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00425         
00426         //! First generated factory method for class ss_reference.
00427         static ptr< ss_reference > create (
00428                 ptr< ss_type > a__ss_referential__what);
00429 
00430         
00431 
00432         //! for purposes of dumping
00433         virtual ptr<reflection_list> reflection_get() const;
00434         //! for purposes of dumping
00435         virtual ptr<field_list_list> field_values_get() const;
00436         
00437 protected:
00438         //! Generated constructor for class ss_reference.
00439         ss_reference (
00440                 ptr< ss_type > a__ss_referential__what);
00441 
00442         //! Marking routine for class ss_reference. 
00443         virtual void gc_mark();
00444 
00445 private:
00446         //! holder for the class instances
00447         static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > >  the_instances;
00448         static ptr<reflection_list> reflection;
00449         
00450 }; // ss_reference
00451 
00452 
00453 /*! \brief Class for pseudo-referenced types
00454 
00455 Represents usual variable.
00456 */
00457 class ss_pseudoreference : public ss_referential {
00458 public:
00459         //! get the instance representing reference to the argument type
00460         static ptr< ss_type > instance(ptr< ss_type > type);
00461 
00462         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00463         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00464         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00465         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00466         
00467         //! First generated factory method for class ss_pseudoreference.
00468         static ptr< ss_pseudoreference > create (
00469                 ptr< ss_type > a__ss_referential__what);
00470 
00471         
00472 
00473         //! for purposes of dumping
00474         virtual ptr<reflection_list> reflection_get() const;
00475         //! for purposes of dumping
00476         virtual ptr<field_list_list> field_values_get() const;
00477         
00478 protected:
00479         //! Generated constructor for class ss_pseudoreference.
00480         ss_pseudoreference (
00481                 ptr< ss_type > a__ss_referential__what);
00482 
00483         //! Marking routine for class ss_pseudoreference. 
00484         virtual void gc_mark();
00485 
00486 private:
00487         //! holder for the class instances
00488         static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > >  the_instances;
00489         static ptr<reflection_list> reflection;
00490         
00491 }; // ss_pseudoreference
00492 
00493 
00494 /*! \brief Class for pointered types
00495 
00496 Singleton class.
00497 */
00498 class ss_pointer : public ss_type {
00499 public:
00500         //! The method what_get returns the value of the field ss_pointer::what.
00501         ptr< ss_type > what_get() const;
00502 
00503         //! The method what_set sets the field ss_pointer::what to the given value.
00504         void what_set(const ptr< ss_type > &);
00505 
00506         //! get the instance representing pointer to the argument type
00507         static ptr< ss_type > instance(ptr< ss_type > type);
00508 
00509         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00510         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00511         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00512         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00513         
00514         //! First generated factory method for class ss_pointer.
00515         static ptr< ss_pointer > create (
00516                 ptr< ss_type > a__ss_pointer__what);
00517 
00518         
00519 
00520         //! for purposes of dumping
00521         virtual ptr<reflection_list> reflection_get() const;
00522         //! for purposes of dumping
00523         virtual ptr<field_list_list> field_values_get() const;
00524         
00525 protected:
00526         //! Generated constructor for class ss_pointer.
00527         ss_pointer (
00528                 ptr< ss_type > a__ss_pointer__what);
00529 
00530         //! Marking routine for class ss_pointer. 
00531         virtual void gc_mark();
00532 
00533 private:
00534         srp< ss_type > what;
00535         //! holder for the class instances
00536         static ptr< ::lestes::std::map< srp< ss_type >, srp< ss_type > > >  the_instances;
00537         static ptr<reflection_list> reflection;
00538         
00539 }; // ss_pointer
00540 
00541 
00542 //! Class for enumeration type
00543 class ss_enum : public ss_type {
00544 public:
00545         //! The method enumerators_get returns the value of the field ss_enum::enumerators.
00546         ptr< ::lestes::std::list< srp< ss_declaration > > > enumerators_get() const;
00547 
00548         //! The method enumerators_set sets the field ss_enum::enumerators to the given value.
00549         void enumerators_set(const ptr< ::lestes::std::list< srp< ss_declaration > > > & );
00550 
00551         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00552         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00553         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00554         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00555         
00556         //! First generated factory method for class ss_enum.
00557         static ptr< ss_enum > create (
00558                 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_enum__enumerators);
00559 
00560         
00561 
00562         //! for purposes of dumping
00563         virtual ptr<reflection_list> reflection_get() const;
00564         //! for purposes of dumping
00565         virtual ptr<field_list_list> field_values_get() const;
00566         
00567 protected:
00568         //! Generated constructor for class ss_enum.
00569         ss_enum (
00570                 ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_enum__enumerators);
00571 
00572         //! Marking routine for class ss_enum. 
00573         virtual void gc_mark();
00574 
00575 private:
00576         srp< ::lestes::std::list< srp< ss_declaration > > >  enumerators;
00577         static ptr<reflection_list> reflection;
00578         
00579 }; // ss_enum
00580 
00581 
00582 //! Class for array type
00583 class ss_array : public ss_type {
00584 public:
00585         //! The method bound_get returns the value of the field ss_array::bound.
00586         t_size bound_get() const;
00587 
00588         //! The method bound_set sets the field ss_array::bound to the given value.
00589         void bound_set(t_size);
00590 
00591         //! The method type_get returns the value of the field ss_array::type.
00592         ptr< ss_type > type_get() const;
00593 
00594         //! The method type_set sets the field ss_array::type to the given value.
00595         void type_set(const ptr< ss_type > &);
00596 
00597         //! get the instance representing array of the argument type
00598         static ptr< ss_type > instance(t_size size, ptr< ss_type > type);
00599 
00600         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00601         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00602         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00603         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00604         
00605         //! First generated factory method for class ss_array.
00606         static ptr< ss_array > create (
00607                 t_size a__ss_array__bound,
00608                 ptr< ss_type > a__ss_array__type);
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_array.
00619         ss_array (
00620                 t_size a__ss_array__bound,
00621                 ptr< ss_type > a__ss_array__type);
00622 
00623         //! Marking routine for class ss_array. 
00624         virtual void gc_mark();
00625 
00626 private:
00627         t_size bound;
00628         srp< ss_type > type;
00629         //! holder for the class instances
00630         static ptr< ::lestes::std::map< srp < ::lestes::std::pair < t_size, srp < ss_type > > >, srp< ss_type >, ::lestes::std::pair_comparator < srp < ::lestes::std::pair < t_size, srp < ss_type > > > > > >  the_instances;
00631         static ptr<reflection_list> reflection;
00632         
00633 }; // ss_array
00634 
00635 
00636 //! Class for member pointer (8.3.3)
00637 class ss_member_pointer : public ss_type {
00638 public:
00639         //! The method base_get returns the value of the field ss_member_pointer::base.
00640         ptr< ss_type > base_get() const;
00641 
00642         //! The method base_set sets the field ss_member_pointer::base to the given value.
00643         void base_set(const ptr< ss_type > &);
00644 
00645         //! The method item_get returns the value of the field ss_member_pointer::item.
00646         ptr< ss_type > item_get() const;
00647 
00648         //! The method item_set sets the field ss_member_pointer::item to the given value.
00649         void item_set(const ptr< ss_type > &);
00650 
00651         //! get the instance representing array of the argument type
00652         static ptr< ss_type > instance(ptr< ss_type > base_type, ptr< ss_type > element_type);
00653 
00654         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00655         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00656         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00657         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00658         
00659         //! First generated factory method for class ss_member_pointer.
00660         static ptr< ss_member_pointer > create (
00661                 ptr< ss_type > a__ss_member_pointer__base,
00662                 ptr< ss_type > a__ss_member_pointer__item);
00663 
00664         
00665 
00666         //! for purposes of dumping
00667         virtual ptr<reflection_list> reflection_get() const;
00668         //! for purposes of dumping
00669         virtual ptr<field_list_list> field_values_get() const;
00670         
00671 protected:
00672         //! Generated constructor for class ss_member_pointer.
00673         ss_member_pointer (
00674                 ptr< ss_type > a__ss_member_pointer__base,
00675                 ptr< ss_type > a__ss_member_pointer__item);
00676 
00677         //! Marking routine for class ss_member_pointer. 
00678         virtual void gc_mark();
00679 
00680 private:
00681         srp< ss_type > base;
00682         srp< ss_type > item;
00683         //! holder for the class instances
00684         static ptr< ::lestes::std::map< srp < ::lestes::std::pair < srp < ss_type >, srp < ss_type > > >, srp< ss_type >, ::lestes::std::pair_comparator < srp < ::lestes::std::pair < srp < ss_type >, srp < ss_type > > > > > >  the_instances;
00685         static ptr<reflection_list> reflection;
00686         
00687 }; // ss_member_pointer
00688 
00689 
00690 /*! \brief Class for function type.
00691 
00692 Represents namespace function.
00693 */
00694 class ss_function : public ss_type {
00695 public:
00696         //! The method returns_get returns the value of the field ss_function::returns.
00697         ptr< ss_type > returns_get() const;
00698 
00699         //! The method returns_set sets the field ss_function::returns to the given value.
00700         void returns_set(const ptr< ss_type > &);
00701 
00702         //! The method params_get returns the value of the field ss_function::params.
00703         ptr< ::lestes::std::list< srp< ss_type > > > params_get() const;
00704 
00705         //! The method params_set sets the field ss_function::params to the given value.
00706         void params_set(const ptr< ::lestes::std::list< srp< ss_type > > > & );
00707 
00708         //! The method ellipsis_get returns the value of the field ss_function::ellipsis.
00709         bool ellipsis_get() const;
00710 
00711         //! The method ellipsis_set sets the field ss_function::ellipsis to the given value.
00712         void ellipsis_set(bool);
00713 
00714         //! Returns the instance representing specified function.
00715         static ptr< ss_type > instance(ptr< ss_type > return_type, ptr < ::lestes::std::list < srp<ss_type> > > param_types, bool ellipsis);
00716 
00717         //! Compares to other ss_function for inequality.
00718         bool less_than(ptr< ss_function > other);
00719 
00720         //! Compares to other ss_function signature.
00721         bool equal_signature(ptr< ss_function > other);
00722 
00723         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00724         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00725         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00726         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00727         
00728         //! First generated factory method for class ss_function.
00729         static ptr< ss_function > create (
00730                 ptr< ss_type > a__ss_function__returns,
00731                 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00732                 bool a__ss_function__ellipsis);
00733 
00734         
00735 
00736         //! for purposes of dumping
00737         virtual ptr<reflection_list> reflection_get() const;
00738         //! for purposes of dumping
00739         virtual ptr<field_list_list> field_values_get() const;
00740         
00741 protected:
00742         //! Generated constructor for class ss_function.
00743         ss_function (
00744                 ptr< ss_type > a__ss_function__returns,
00745                 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00746                 bool a__ss_function__ellipsis);
00747 
00748         //! Marking routine for class ss_function. 
00749         virtual void gc_mark();
00750 
00751 private:
00752         //! The singleton instances of the class.
00753         static ptr< ::lestes::std::set< srp< ss_function >, ss_function_comparator > >  instances;
00754         //! The return type of the function.
00755         srp< ss_type > returns;
00756         //! The types of parameters of the function.
00757         srp< ::lestes::std::list< srp< ss_type > > >  params;
00758         /*! \brief Whether current function has an ellipsis(...) in function parameters.
00759 
00760         Rationale for field contra individual class: There is no C++ type, which corresponds to ellipsis.
00761         */
00762         bool ellipsis;
00763         static ptr<reflection_list> reflection;
00764         
00765 }; // ss_function
00766 
00767 
00768 //! Class for member function type
00769 class ss_member_function : public ss_function {
00770 public:
00771         //! The method this_type_get returns the value of the field ss_member_function::this_type.
00772         ptr< ss_type > this_type_get() const;
00773 
00774         //! The method this_type_set sets the field ss_member_function::this_type to the given value.
00775         void this_type_set(const ptr< ss_type > &);
00776 
00777         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00778         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00779         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00780         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00781         
00782         //! First generated factory method for class ss_member_function.
00783         static ptr< ss_member_function > create (
00784                 ptr< ss_type > a__ss_function__returns,
00785                 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00786                 bool a__ss_function__ellipsis,
00787                 ptr< ss_type > a__ss_member_function__this_type);
00788 
00789         
00790 
00791         //! for purposes of dumping
00792         virtual ptr<reflection_list> reflection_get() const;
00793         //! for purposes of dumping
00794         virtual ptr<field_list_list> field_values_get() const;
00795         
00796 protected:
00797         //! Generated constructor for class ss_member_function.
00798         ss_member_function (
00799                 ptr< ss_type > a__ss_function__returns,
00800                 ptr< ::lestes::std::list< srp< ss_type > > > a__ss_function__params,
00801                 bool a__ss_function__ellipsis,
00802                 ptr< ss_type > a__ss_member_function__this_type);
00803 
00804         //! Marking routine for class ss_member_function. 
00805         virtual void gc_mark();
00806 
00807 private:
00808         /*! \brief  The type of "this" as it will be seen in the function.
00809 
00810          
00811                                         In a function declared const in class "a" (e.g. int a::f(int) const;)
00812                                         This field will represent the type "a const *".
00813                                 
00814         */
00815         srp< ss_type > this_type;
00816         static ptr<reflection_list> reflection;
00817         
00818 }; // ss_member_function
00819 
00820 
00821 //! Base class for structurated objects
00822 class ss_struct_base : public ss_type {
00823 public:
00824         //! The method members_get returns the value of the field ss_struct_base::members.
00825         ptr< ss_decl_seq > members_get() const;
00826 
00827         //! The method members_set sets the field ss_struct_base::members to the given value.
00828         void members_set(const ptr< ss_decl_seq > &);
00829 
00830         //! The method decl_get returns the value of the field ss_struct_base::decl.
00831         ptr< ss_declaration > decl_get() const;
00832 
00833         //! The method decl_set sets the field ss_struct_base::decl to the given value.
00834         void decl_set(const ptr< ss_declaration > &);
00835 
00836         //! The method POD_get returns the value of the field ss_struct_base::POD.
00837         bool POD_get() const;
00838 
00839         //! The method POD_set sets the field ss_struct_base::POD to the given value.
00840         void POD_set(bool);
00841 
00842         //! The method completion_time_get returns the value of the field ss_struct_base::completion_time.
00843         ptr< ss_declaration_time > completion_time_get() const;
00844 
00845         //! The method completion_time_set sets the field ss_struct_base::completion_time to the given value.
00846         void completion_time_set(const ptr< ss_declaration_time > &);
00847 
00848         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
00849         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
00850         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
00851         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
00852         
00853 
00854         //! for purposes of dumping
00855         virtual ptr<reflection_list> reflection_get() const;
00856         //! for purposes of dumping
00857         virtual ptr<field_list_list> field_values_get() const;
00858         
00859 protected:
00860         //! Generated constructor for class ss_struct_base.
00861         ss_struct_base (
00862                 ptr< ss_decl_seq > a__ss_struct_base__members,
00863                 ptr< ss_declaration > a__ss_struct_base__decl,
00864                 bool a__ss_struct_base__POD,
00865                 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
00866 
00867         //! Marking routine for class ss_struct_base. 
00868         virtual void gc_mark();
00869 
00870 private:
00871         srp< ss_decl_seq > members;
00872         /*! \brief Points to declaration of this class
00873 
00874         Declaration is needed because of access to enclosing scopes.
00875         */
00876         srp< ss_declaration > decl;
00877         //! Is this class POD strcuture ?
00878         bool POD;
00879         /*! \brief  Structures can have forward declaration 
00880 
00881          Before structure is completed, this field is set to NULL. 
00882         */
00883         srp< ss_declaration_time > completion_time;
00884         static ptr<reflection_list> reflection;
00885         
00886 }; // ss_struct_base
00887 
00888 
00889 /*! \brief Class for struct-class types
00890 
00891 Distinction of struct-class: default visibility is resolved before. TODO struct x class POD status
00892 */
00893 class ss_class : public ss_struct_base {
00894 public:
00895         //! The method bases_get returns the value of the field ss_class::bases.
00896         ptr< ::lestes::std::list< srp< ss_base_specifier > > > bases_get() const;
00897 
00898         //! The method bases_set sets the field ss_class::bases to the given value.
00899         void bases_set(const ptr< ::lestes::std::list< srp< ss_base_specifier > > > & );
00900 
00901         //! The method descendants_get returns the value of the field ss_class::descendants.
00902         ptr< ::lestes::std::set< srp< ss_class > > > descendants_get() const;
00903 
00904         //! The method descendants_set sets the field ss_class::descendants to the given value.
00905         void descendants_set(const ptr< ::lestes::std::set< srp< ss_class > > > & );
00906 
00907         // WARNING: Detailed doxygen description for method
00908         // should be near it's implementation, not in XML file.
00909 
00910         /*! \brief Check whether is this class ancestor of parameter.
00911 
00912         Used in overload resolution.        
00913                         
00914         */
00915         bool is_ancestor(ptr< ss_class > descendant);
00916 
00917         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00918         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00919         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00920         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00921         
00922         //! First generated factory method for class ss_class.
00923         static ptr< ss_class > create (
00924                 ptr< ss_decl_seq > a__ss_struct_base__members,
00925                 ptr< ss_declaration > a__ss_struct_base__decl,
00926                 bool a__ss_struct_base__POD,
00927                 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00928                 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases,
00929                 ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants);
00930 
00931         //! Second generated factory method for class ss_class.
00932         static ptr< ss_class > create (
00933                 ptr< ss_decl_seq > a__ss_struct_base__members,
00934                 ptr< ss_declaration > a__ss_struct_base__decl,
00935                 bool a__ss_struct_base__POD,
00936                 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00937                 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases);
00938 
00939         
00940 
00941         //! for purposes of dumping
00942         virtual ptr<reflection_list> reflection_get() const;
00943         //! for purposes of dumping
00944         virtual ptr<field_list_list> field_values_get() const;
00945         
00946 protected:
00947         //! Generated constructor for class ss_class.
00948         ss_class (
00949                 ptr< ss_decl_seq > a__ss_struct_base__members,
00950                 ptr< ss_declaration > a__ss_struct_base__decl,
00951                 bool a__ss_struct_base__POD,
00952                 ptr< ss_declaration_time > a__ss_struct_base__completion_time,
00953                 ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases,
00954                 ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants);
00955 
00956         //! Marking routine for class ss_class. 
00957         virtual void gc_mark();
00958 
00959 private:
00960         /*! 
00961         Bases of the class are in the list, because ABI-structure-layout has to now order.
00962         */
00963         srp< ::lestes::std::list< srp< ss_base_specifier > > >  bases;
00964         /*! \brief Direct descendant classes of current class.
00965 
00966         Rationale: Overload resolution needs to know descendants. 
00967                                         (Conversions of member pointers into member pointer of derived class.[4.11/2])
00968                                 
00969         */
00970         srp< ::lestes::std::set< srp< ss_class > > >  descendants;
00971         static ptr<reflection_list> reflection;
00972         
00973 }; // ss_class
00974 
00975 
00976 //! Class for union type
00977 class ss_union : public ss_struct_base {
00978 public:
00979         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v );
00980         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v );
00981         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v );
00982         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v );
00983         
00984         //! First generated factory method for class ss_union.
00985         static ptr< ss_union > create (
00986                 ptr< ss_decl_seq > a__ss_struct_base__members,
00987                 ptr< ss_declaration > a__ss_struct_base__decl,
00988                 bool a__ss_struct_base__POD,
00989                 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
00990 
00991         
00992 
00993         //! for purposes of dumping
00994         virtual ptr<reflection_list> reflection_get() const;
00995         //! for purposes of dumping
00996         virtual ptr<field_list_list> field_values_get() const;
00997         
00998 protected:
00999         //! Generated constructor for class ss_union.
01000         ss_union (
01001                 ptr< ss_decl_seq > a__ss_struct_base__members,
01002                 ptr< ss_declaration > a__ss_struct_base__decl,
01003                 bool a__ss_struct_base__POD,
01004                 ptr< ss_declaration_time > a__ss_struct_base__completion_time);
01005 
01006         //! Marking routine for class ss_union. 
01007         virtual void gc_mark();
01008 
01009 private:
01010         static ptr<reflection_list> reflection;
01011         
01012 }; // ss_union
01013 
01014 
01015 /*! \brief Class for template typename types
01016 
01017 
01018                                 This type is prepared for template typename types such as:
01019 
01020                                 template<typename X> class A {
01021                                 typename X::T a(typename X::F);
01022                                 };
01023 
01024                                 and since the templates are not now implemented, processing with this
01025                                 type will cause lassert.
01026                         
01027 */
01028 class ss_typename_type : public ss_type {
01029 public:
01030         //! The method contained_in_get returns the value of the field ss_typename_type::contained_in.
01031         ptr< ss_decl_seq > contained_in_get() const;
01032 
01033         //! The method contained_in_set sets the field ss_typename_type::contained_in to the given value.
01034         void contained_in_set(const ptr< ss_decl_seq > &);
01035 
01036         //! The method decl_time_get returns the value of the field ss_typename_type::decl_time.
01037         ptr< ss_declaration_time > decl_time_get() const;
01038 
01039         //! The method decl_time_set sets the field ss_typename_type::decl_time to the given value.
01040         void decl_time_set(const ptr< ss_declaration_time > &);
01041 
01042         //! The method qualified_name_get returns the value of the field ss_typename_type::qualified_name.
01043         ptr< as_name > qualified_name_get() const;
01044 
01045         //! The method qualified_name_set sets the field ss_typename_type::qualified_name to the given value.
01046         void qualified_name_set(const ptr< as_name > &);
01047 
01048         virtual ptr< ::lestes::std::list< srp< or_ics_functional > > > accept_or_ics_base( ptr< or_ics_base > v ) abstract;
01049         virtual or_cv_enum accept_or_ics_base_cv( ptr< or_ics_base_cv > v ) abstract;
01050         virtual ptr< ::lestes::md::types::tm_data_type_base > accept_ss_type2tm_type_gen_base( ptr< ss_type2tm_type_gen_base > v ) abstract;
01051         virtual void accept_ss_type_visitor( ptr< ss_type_visitor > v ) abstract;
01052         
01053 
01054         //! for purposes of dumping
01055         virtual ptr<reflection_list> reflection_get() const;
01056         //! for purposes of dumping
01057         virtual ptr<field_list_list> field_values_get() const;
01058         
01059 protected:
01060         //! Generated constructor for class ss_typename_type.
01061         ss_typename_type (
01062                 ptr< ss_decl_seq > a__ss_typename_type__contained_in,
01063                 ptr< ss_declaration_time > a__ss_typename_type__decl_time,
01064                 ptr< as_name > a__ss_typename_type__qualified_name);
01065 
01066         //! Marking routine for class ss_typename_type. 
01067         virtual void gc_mark();
01068 
01069 private:
01070         srp< ss_decl_seq > contained_in;
01071         srp< ss_declaration_time > decl_time;
01072         /*! \brief This field represents qualified name.
01073 
01074         
01075                                         Since we dont know the type before template initialization happens, there is
01076                                         no obvious standard ss_type representing this name. To convert
01077                                         current as type to ss type, we will wait for instantiation.
01078                                 
01079         */
01080         srp< as_name > qualified_name;
01081         static ptr<reflection_list> reflection;
01082         
01083 }; // ss_typename_type
01084 
01085 
01086 end_package(sem);
01087 end_package(cplus);
01088 end_package(lang);
01089 end_package(lestes);
01090 
01091 #endif // lestes__lang__cplus__sem__ss_type_g_hh__included

Generated on Mon Feb 12 18:23:33 2007 for lestes by doxygen 1.5.1-20070107