std::string expr2javat::convert_constant( const constant_exprt &src, unsigned &precedence) { if(src.type().id()==ID_bool) { // C++ has built-in Boolean constants, in contrast to C if(src.is_true()) return "true"; else if(src.is_false()) return "false"; } return expr2ct::convert_constant(src, precedence); }
std::string expr2javat::convert_constant( const constant_exprt &src, unsigned &precedence) { if(src.type().id()==ID_bool) { // Java has built-in Boolean constants, in contrast to C if(src.is_true()) return "true"; else if(src.is_false()) return "false"; } else if(src.type().id()==ID_pointer) { // Java writes 'null' for the null reference if(src.is_zero()) return "null"; } else if(src.type()==java_char_type()) { std::string dest; dest.reserve(10); mp_integer int_value; to_integer(src, int_value); dest+='\''; if(int_value>=' ' && int_value<127) dest+=(char)(int_value.to_long()); else { std::string hex=integer2string(int_value, 16); while(hex.size()<4) hex='0'+hex; dest+='\\'; dest+='u'; dest+=hex; } dest+='\''; return dest; } else if(src.type()==java_long_type()) { // long integer literals must have 'L' at the end mp_integer int_value; to_integer(src, int_value); std::string dest=integer2string(int_value); dest+='L'; return dest; } return expr2ct::convert_constant(src, precedence); }
void fixedbvt::from_expr(const constant_exprt &expr) { spec=to_fixedbv_type(expr.type()); v=binary2integer(id2string(expr.get_value()), true); }
void ieee_floatt::from_expr(const constant_exprt &expr) { spec=ieee_float_spect(to_floatbv_type(expr.type())); unpack(binary2integer(id2string(expr.get_value()), false)); }