00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <lestes/common.hh>
00035 #include <lestes/lang/cplus/sem/ss_type2info.g.hh>
00036 #include <lestes/lang/cplus/sem/ss_type.g.hh>
00037 #include <lestes/lang/cplus/sem/ss_type_builtin.g.hh>
00038
00039 package(lestes);
00040 package(lang);
00041 package(cplus);
00042 package(sem);
00043
00044 using namespace ::std;
00045
00046
00047
00048
00049
00050
00051 void ss_type2info_test(void)
00052 {
00053 ptr<ss_type2info> ssti = ss_type2info::create();
00054 ptr<ss_type> sint = ss_type_sint::instance();
00055 ptr<ss_type> st;
00056
00057 st = sint;
00058 st->accept_ss_type_visitor(ssti);
00059 lassert(ssti->info_get() == ss_type2info::UNKNOWN);
00060
00061 st = ss_const::instance(sint);
00062 st->accept_ss_type_visitor(ssti);
00063 lassert(ssti->info_get() == ss_type2info::SS_CONST);
00064
00065 st = ss_volatile::instance(sint);
00066 st->accept_ss_type_visitor(ssti);
00067 lassert(ssti->info_get() == ss_type2info::SS_VOLATILE);
00068
00069 st = ss_const::instance(ss_volatile::instance(sint));
00070 st->accept_ss_type_visitor(ssti);
00071 lassert(ssti->info_get() == ss_type2info::SS_CONST_VOLATILE);
00072
00073 st = ss_pointer::instance(sint);
00074 st->accept_ss_type_visitor(ssti);
00075 lassert(ssti->info_get() == ss_type2info::SS_POINTER);
00076
00077 st = ss_member_pointer::instance(sint,sint);
00078 st->accept_ss_type_visitor(ssti);
00079 lassert(ssti->info_get() == ss_type2info::SS_MEMBER_POINTER);
00080
00081 st = ss_reference::instance(sint);
00082 st->accept_ss_type_visitor(ssti);
00083 lassert(ssti->info_get() == ss_type2info::SS_REFERENCE);
00084 }
00085
00086 end_package(sem);
00087 end_package(cplus);
00088 end_package(lang);
00089 end_package(lestes);
00090
00091
00092
00093
00094
00095
00096 int main(void)
00097 {
00098 ::lestes::lang::cplus::sem::ss_type2info_test();
00099 return 0;
00100 }
00101