diff options
author | bell@sanja.is.com.ua <> | 2003-11-03 12:28:36 +0200 |
---|---|---|
committer | bell@sanja.is.com.ua <> | 2003-11-03 12:28:36 +0200 |
commit | c56e75e2c1d47bdb53d38c232a120b08517ac59a (patch) | |
tree | 9fcd3368f411e3ebf81bd5b0e3aa64c0f430970f /sql/item_cmpfunc.h | |
parent | e025adb403eb9847ee224fac036503a08da7712a (diff) | |
download | mariadb-git-c56e75e2c1d47bdb53d38c232a120b08517ac59a.tar.gz |
after review fix
Diffstat (limited to 'sql/item_cmpfunc.h')
-rw-r--r-- | sql/item_cmpfunc.h | 70 |
1 files changed, 63 insertions, 7 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 3f73c7736da..081374345d8 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -109,6 +109,69 @@ public: Item_cache **get_cache() { return &cache; } }; +class Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const = 0; + virtual const char* symbol(bool invert) const = 0; + virtual bool eqne_op() const = 0; + virtual bool l_op() const = 0; +}; + +class Eq_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? "<>" : "="; } + virtual bool eqne_op() const { return 1; } + virtual bool l_op() const { return 0; } +}; + +class Ne_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? "=" : "<>"; } + virtual bool eqne_op() const { return 1; } + virtual bool l_op() const { return 0; } +}; + +class Gt_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? "<=" : ">"; } + virtual bool eqne_op() const { return 0; } + virtual bool l_op() const { return 0; } +}; + +class Lt_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? ">=" : "<"; } + virtual bool eqne_op() const { return 0; } + virtual bool l_op() const { return 1; } +}; + +class Ge_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? "<" : ">="; } + virtual bool eqne_op() const { return 0; } + virtual bool l_op() const { return 0; } +}; + +class Le_creator :public Comp_creator +{ +public: + virtual Item_bool_func2* create(Item *a, Item *b) const; + virtual const char* symbol(bool invert) const { return invert? ">" : "<="; } + virtual bool eqne_op() const { return 0; } + virtual bool l_op() const { return 1; } +}; + class Item_bool_func2 :public Item_int_func { /* Bool with 2 string args */ protected: @@ -129,13 +192,6 @@ public: void print(String *str) { Item_func::print_op(str); } bool is_null() { return test(args[0]->is_null() || args[1]->is_null()); } - static Item_bool_func2* eq_creator(Item *a, Item *b); - static Item_bool_func2* ne_creator(Item *a, Item *b); - static Item_bool_func2* gt_creator(Item *a, Item *b); - static Item_bool_func2* lt_creator(Item *a, Item *b); - static Item_bool_func2* ge_creator(Item *a, Item *b); - static Item_bool_func2* le_creator(Item *a, Item *b); - friend class Arg_comparator; }; |