00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__lang__cplus__sem__ss_decl2ulint_base_g_hh__included
00010 #define lestes__lang__cplus__sem__ss_decl2ulint_base_g_hh__included
00011
00012 #include <lestes/common.hh>
00013 #include <lestes/lang/cplus/sem/ss_declaration_visitor.v.g.hh>
00014
00015 #include <lestes/std/objectize_macros.hh>
00016 package(lestes);
00017 package(lang);
00018 package(cplus);
00019 package(sem);
00020
00021
00022 class ss_decl2id;
00023
00024
00025
00026 class ss_decl2id : public ss_decl2ulint_base {
00027 public:
00028 enum id_type {
00029 DECLARATION,
00030 NAMESPACE,
00031 OBJECT,
00032 BITFIELD,
00033 PARAMETER,
00034 TYPE,
00035 ENUM,
00036 TYPEDEF,
00037 FUNCTION,
00038 ENUMERATOR,
00039 USING,
00040 BUILTIN_OPERATOR,
00041 COMPOUND_STATEMENT,
00042 METHOD
00043 };
00044
00045
00046 static ptr< ss_decl2id > singleton_instance_get();
00047
00048
00049 static void singleton_instance_set(const ptr< ss_decl2id > &);
00050
00051 static ptr< ss_decl2id > instance();
00052
00053 virtual ulint visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00054
00055 virtual ulint visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00056
00057 virtual ulint visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00058
00059 virtual ulint visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00060
00061 virtual ulint visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00062
00063 virtual ulint visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00064
00065 virtual ulint visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00066
00067 virtual ulint visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00068
00069 virtual ulint visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00070
00071 virtual ulint visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00072
00073 virtual ulint visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00074
00075 virtual ulint visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00076
00077 virtual ulint visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00078
00079 virtual ulint visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00080
00081 virtual ulint visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00082
00083
00084
00085 static ptr< ss_decl2id > create (
00086 );
00087
00088
00089
00090
00091 virtual ptr<reflection_list> reflection_get() const;
00092
00093 virtual ptr<field_list_list> field_values_get() const;
00094
00095 protected:
00096
00097 ss_decl2id (
00098 );
00099
00100
00101 virtual void gc_mark();
00102
00103 private:
00104 static ptr< ss_decl2id > singleton_instance;
00105 static ptr<reflection_list> reflection;
00106
00107 };
00108
00109
00110 end_package(sem);
00111 end_package(cplus);
00112 end_package(lang);
00113 end_package(lestes);
00114
00115 package(lestes);
00116 package(std);
00117 specialize_objectize_for_enum( ::lestes::lang::cplus::sem::ss_decl2id::id_type );
00118 end_package(std);
00119 end_package(lestes);
00120
00121 #endif // lestes__lang__cplus__sem__ss_decl2ulint_base_g_hh__included