00001
00002
00003
00004
00005
00006
00007 #include <lestes/md/types/tm_data_type.g.hh>
00008 #include <lestes/md/types/num_range.g.hh>
00009 #include <lestes/md/types/num_range_getter.g.hh>
00010
00011 package(lestes);
00012 package(md);
00013 package(types);
00014
00015 using namespace ::lestes::md::types;
00016
00017 ptr<num_range_getter> num_range_getter::instance() {
00018 if ( !singleton_instance_get() ) {
00019 singleton_instance_set(num_range_getter::create());
00020 }
00021 return singleton_instance_get();
00022 }
00023
00024
00025
00026
00027
00028
00029
00030
00031 ptr<num_range> num_range_getter::get_range(ptr<tm_data_type_base> type) {
00032 ptr<num_range> range;
00033
00034 switch ( type->id_get() ) {
00035 case DT_INT_8P :
00036 range = num_range::create("255", false, 3, type->bitwidth_get(), NULL, NULL);
00037 break;
00038
00039 case DT_INT_8U :
00040 range = num_range::create("255", false, 3, type->bitwidth_get(), NULL, NULL);
00041 break;
00042
00043 case DT_INT_8S :
00044 range = num_range::create("127", true, 3, type->bitwidth_get(), NULL, NULL);
00045 break;
00046
00047 case DT_INT_16U :
00048 range = num_range::create("65535", false, 5, type->bitwidth_get(), NULL, NULL);
00049 break;
00050
00051 case DT_INT_16S :
00052 range = num_range::create("32767", true, 5, type->bitwidth_get(), NULL, NULL);
00053 break;
00054
00055 case DT_INT_32U :
00056 range = num_range::create("4294967295", false, 10, type->bitwidth_get(), NULL, NULL);
00057 break;
00058
00059 case DT_INT_32S :
00060 range = num_range::create("2147483647", true, 10, type->bitwidth_get(), NULL, NULL);
00061 break;
00062
00063 default:
00064 lassert(false);
00065 break;
00066 }
00067
00068 return range;
00069 }
00070
00071 end_package(types);
00072 end_package(md);
00073 end_package(lestes);
00074