00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00022 #include <drizzled/function/func.h>
00023 #include <drizzled/type/decimal.h>
00024
00025 namespace drizzled
00026 {
00027
00028 class Item_decimal_typecast :public Item_func
00029 {
00030 type::Decimal decimal_value;
00031 public:
00032 Item_decimal_typecast(Item *a, int len, int dec) :Item_func(a)
00033 {
00034 decimals= dec;
00035 max_length= class_decimal_precision_to_length(len, dec, unsigned_flag);
00036 }
00037 String *val_str(String *str);
00038 double val_real();
00039 int64_t val_int();
00040 type::Decimal *val_decimal(type::Decimal*);
00041 enum Item_result result_type () const { return DECIMAL_RESULT; }
00042 enum_field_types field_type() const { return DRIZZLE_TYPE_DECIMAL; }
00043 void fix_length_and_dec() {};
00044 const char *func_name() const { return "decimal_typecast"; }
00045 virtual void print(String *str);
00046 };
00047
00048 }
00049