22 #include <drizzled/field.h>
23 #include <drizzled/hybrid_type.h>
24 #include <drizzled/hybrid_type_traits.h>
25 #include <drizzled/item.h>
32 static const Hybrid_type_traits real_traits_instance;
34 Item_result Hybrid_type_traits::type()
const
40 void Hybrid_type_traits::fix_length_and_dec(Item *item, Item *arg)
const
42 item->decimals= NOT_FIXED_DEC;
43 item->max_length= item->float_length(arg->decimals);
48 void Hybrid_type_traits::set_zero(Hybrid_type *val)
const
54 void Hybrid_type_traits::add(Hybrid_type *val, Field *f)
const
56 val->real+= f->val_real();
60 void Hybrid_type_traits::div(Hybrid_type *val, uint64_t u)
const
62 val->real/= uint64_t2double(u);
66 int64_t Hybrid_type_traits::val_int(Hybrid_type *val,
69 return (int64_t) rint(val->real);
73 double Hybrid_type_traits::val_real(Hybrid_type *val)
const
80 Hybrid_type_traits::val_decimal(Hybrid_type *val, type::Decimal *)
const
82 double2_class_decimal(E_DEC_FATAL_ERROR, val->real, val->dec_buf);
88 Hybrid_type_traits::val_str(Hybrid_type *val, String *to,
89 uint8_t decimals)
const
91 to->set_real(val->real, decimals, &my_charset_bin);
96 const Hybrid_type_traits *Hybrid_type_traits::instance()
98 return &real_traits_instance;
102 Hybrid_type_traits::Hybrid_type_traits()
105 Hybrid_type_traits::~Hybrid_type_traits()