00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef lestes__md__types__type_info_base_g_hh__included
00010 #define lestes__md__types__type_info_base_g_hh__included
00011
00012 #include <lestes/md/common.hh>
00013
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020
00021 package(lestes);
00022 package(lang);
00023 package(cplus);
00024 package(sem);
00025 class ss_type;
00026 end_package(sem);
00027 end_package(cplus);
00028 end_package(lang);
00029 end_package(lestes);
00030
00031 package(lestes);
00032 package(md);
00033 package(types);
00034 class num_range;
00035 end_package(types);
00036 end_package(md);
00037 end_package(lestes);
00038
00039 package(lestes);
00040 package(md);
00041 package(types);
00042 class tm_data_type_base;
00043 end_package(types);
00044 end_package(md);
00045 end_package(lestes);
00046
00047 package(lestes);
00048 package(md);
00049 package(types);
00050
00051
00052 class type_info_base;
00053
00054
00055
00056
00057
00058
00059
00060 class type_info_base : public ::lestes::std::object {
00061 public:
00062
00063
00064
00065
00066
00067
00068
00069 ptr< ::lestes::md::types::num_range > get_range_for_numeric_type(ptr< ::lestes::lang::cplus::sem::ss_type > type);
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 virtual bool does_value_match_type(ucn_string value, ptr< ::lestes::lang::cplus::sem::ss_type > type) abstract;
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 lstring get_decimal_representation(ucn_string value, ptr< ::lestes::md::types::tm_data_type_base > type);
00092
00093
00094 virtual ptr< ::lestes::lang::cplus::sem::ss_type > get_ptrdiff_t_type() abstract;
00095
00096
00097 virtual ptr< ::lestes::lang::cplus::sem::ss_type > get_size_t_type() abstract;
00098
00099
00100
00101
00102 virtual ptr<reflection_list> reflection_get() const;
00103
00104 virtual ptr<field_list_list> field_values_get() const;
00105
00106 protected:
00107
00108 type_info_base (
00109 );
00110
00111
00112 virtual void gc_mark();
00113
00114 private:
00115 static ptr<reflection_list> reflection;
00116
00117 };
00118
00119
00120 end_package(types);
00121 end_package(md);
00122 end_package(lestes);
00123
00124 #endif // lestes__md__types__type_info_base_g_hh__included