2009年2月26日木曜日

swig boost_random gcc の typeinfo

 えー、ubuntu 上でも動作するようになりました。プリプロセッサだけでなく、gcc の typeid にもやられてました。しょうがないので、こんな関数を作って、お茶を濁すことに…。

const char* gcc_primitive_type_name_hack( size_t primitive_size, bool is_signed, bool is_modulo ) {
// std::cout << typeid( int ).name();
// i
// ... to be haniwa. (O o O)
if( !is_modulo ) {
if( primitive_size == sizeof(double) ) return "double";
else if( primitive_size == sizeof(float) ) return "float";
else if( primitive_size == sizeof(long double) ) return "long double";
} else {
if( is_signed ) {
if( primitive_size == sizeof(char) ) return "char";
else if( primitive_size == sizeof(int) ) return "int";
else if( primitive_size == sizeof(short) ) return "short";
else if( primitive_size == sizeof(long) ) return "long";
else if( primitive_size == sizeof(long long) ) return "long long";
} else {
if( primitive_size == sizeof(char) ) return "unsigned char";
else if( primitive_size == sizeof(int) ) return "unsigned int";
else if( primitive_size == sizeof(short) ) return "unsigned short";
else if( primitive_size == sizeof(long) ) return "unsigned long";
else if( primitive_size == sizeof(long long) ) return "unsigned long long";
}
}
return "unknown";
}

0 件のコメント: