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/function/num1.h>
00024
00025 namespace drizzled
00026 {
00027
00028 class Item_func_neg :public Item_func_num1
00029 {
00030 bool _is_negative;
00031
00032 public:
00033 Item_func_neg(Item *a) :
00034 Item_func_num1(a),
00035 _is_negative(true)
00036 {}
00037
00038 double real_op();
00039 int64_t int_op();
00040 type::Decimal *decimal_op(type::Decimal *);
00041 const char *func_name() const { return "-"; }
00042 enum Functype functype() const { return NEG_FUNC; }
00043 void fix_length_and_dec();
00044 void fix_num_length_and_dec();
00045 uint32_t decimal_precision() const { return args[0]->decimal_precision(); }
00046
00047 bool negative() const
00048 {
00049 return _is_negative;
00050 }
00051 };
00052
00053 }
00054