ss_type2info.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Type information for SS.
00006         Declaration of visitor providing type information for certain ss_type classes.
00007 */
00008 
00009 #ifndef lestes__lang__cplus__sem__ss_type2info_g_hh__included
00010 #define lestes__lang__cplus__sem__ss_type2info_g_hh__included
00011 
00012 #include <lestes/common.hh>
00013 #include <lestes/std/list.hh>
00014 #include <lestes/lang/cplus/sem/ss_type_visitor.v.g.hh>
00015 
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(lang);
00019 package(cplus);
00020 package(sem);
00021 
00022 
00023 class ss_const;
00024 class ss_volatile;
00025 class ss_struct_base;
00026 class ss_builtin_type;
00027 class ss_type;
00028 class ss_type2info;
00029 
00030 
00031 /*! \brief Visitor providing lightweight type info for certain SS type classes.
00032 
00033 
00034                                 Recognizes certain concrete SS classes, substituting typeinfo mechanism.
00035                                 TODO pt Enables cast to the derived type without dynamic_cast.
00036                         
00037 */
00038 class ss_type2info : public ss_type2info_base {
00039 public:
00040         enum info_type {
00041                 UNKNOWN,
00042                 SS_CONST,
00043                 SS_VOLATILE,
00044                 SS_CONST_VOLATILE,
00045                 SS_POINTER,
00046                 SS_MEMBER_POINTER,
00047                 SS_REFERENCE,
00048                 SS_PSEUDOREFERENCE,
00049                 SS_FUNCTION
00050         };
00051 
00052         //! The method info_get returns the value of the field ss_type2info::info.
00053         info_type info_get() const;
00054 
00055         //! The method ss_const_object_get returns the value of the field ss_type2info::ss_const_object.
00056         ptr< ss_const > ss_const_object_get() const;
00057 
00058         //! The method ss_volatile_object_get returns the value of the field ss_type2info::ss_volatile_object.
00059         ptr< ss_volatile > ss_volatile_object_get() const;
00060 
00061         // WARNING: Detailed doxygen description for method
00062         // should be near it's implementation, not in XML file.
00063 
00064         /*! \brief Default visitor method.
00065 
00066         Visitor method for all SS types in ss_struct_base hierarchy.
00067         */
00068         void default_ss_struct_base(ptr< ss_struct_base > obj);
00069 
00070         // WARNING: Detailed doxygen description for method
00071         // should be near it's implementation, not in XML file.
00072 
00073         /*! \brief Default visitor method.
00074 
00075         Visitor method for all SS types in ss_builtin_type hierarchy.
00076         */
00077         void default_ss_builtin_type(ptr< ss_builtin_type > obj);
00078 
00079         virtual void visit_ss_const(ptr< ::lestes::lang::cplus::sem::ss_const > );
00080 
00081         virtual void visit_ss_volatile(ptr< ::lestes::lang::cplus::sem::ss_volatile > );
00082 
00083         virtual void visit_ss_const_volatile(ptr< ::lestes::lang::cplus::sem::ss_const_volatile > );
00084 
00085         virtual void visit_ss_reference(ptr< ::lestes::lang::cplus::sem::ss_reference > );
00086 
00087         virtual void visit_ss_pseudoreference(ptr< ::lestes::lang::cplus::sem::ss_pseudoreference > );
00088 
00089         virtual void visit_ss_pointer(ptr< ::lestes::lang::cplus::sem::ss_pointer > );
00090 
00091         virtual void visit_ss_enum(ptr< ::lestes::lang::cplus::sem::ss_enum > );
00092 
00093         virtual void visit_ss_array(ptr< ::lestes::lang::cplus::sem::ss_array > );
00094 
00095         virtual void visit_ss_member_pointer(ptr< ::lestes::lang::cplus::sem::ss_member_pointer > );
00096 
00097         virtual void visit_ss_function(ptr< ::lestes::lang::cplus::sem::ss_function > );
00098 
00099         virtual void visit_ss_member_function(ptr< ::lestes::lang::cplus::sem::ss_member_function > );
00100 
00101         
00102         //! First generated factory method for class ss_type2info.
00103         static ptr< ss_type2info > create (
00104                 info_type a__ss_type2info__info,
00105                 ptr< ss_const > a__ss_type2info__ss_const_object,
00106                 ptr< ss_volatile > a__ss_type2info__ss_volatile_object);
00107 
00108         //! Second generated factory method for class ss_type2info.
00109         static ptr< ss_type2info > create (
00110                 );
00111 
00112         
00113         //! "visit-return" method
00114         info_type process( const ptr< ::lestes::lang::cplus::sem::ss_type > & );
00115 
00116         //! for purposes of dumping
00117         virtual ptr<reflection_list> reflection_get() const;
00118         //! for purposes of dumping
00119         virtual ptr<field_list_list> field_values_get() const;
00120         
00121 protected:
00122         //! Generated constructor for class ss_type2info.
00123         ss_type2info (
00124                 info_type a__ss_type2info__info,
00125                 ptr< ss_const > a__ss_type2info__ss_const_object,
00126                 ptr< ss_volatile > a__ss_type2info__ss_volatile_object);
00127 
00128         //! Marking routine for class ss_type2info. 
00129         virtual void gc_mark();
00130 
00131 private:
00132         /*! \brief Type information.
00133 
00134         The visited object's type information.
00135         */
00136         info_type info;
00137         /*! \brief Const object.
00138 
00139         The visited object cast to appropriate type, if instance of class ss_const.
00140         */
00141         srp< ss_const > ss_const_object;
00142         /*! \brief Volatile object.
00143 
00144         The visited object cast to appropriate type, if instance of class ss_volatile.
00145         */
00146         srp< ss_volatile > ss_volatile_object;
00147         static ptr<reflection_list> reflection;
00148         
00149 }; // ss_type2info
00150 
00151 
00152 end_package(sem);
00153 end_package(cplus);
00154 end_package(lang);
00155 end_package(lestes);
00156 
00157 package(lestes);
00158 package(std);
00159 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_type2info::info_type );
00160 end_package(std);
00161 end_package(lestes);
00162 
00163 #endif // lestes__lang__cplus__sem__ss_type2info_g_hh__included

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