#ifndef SQLPP_EXPRESSIONS_COMPARAISON_EXPRESSION_HPP
#define SQLPP_EXPRESSIONS_COMPARAISON_EXPRESSION_HPP
#include <sqlpp/config.hpp>
#include <sqlpp/utils.hpp>
#include <sqlpp/predefs.hpp>
#include <sqlpp/expressions/enums.hpp>
#include <sqlpp/expressions/boolean_expression.hpp>
namespace sqlpp{
namespace expressions{
class comparaison_expression :
public boolean_expression
{
public:
comparaison_expression(
expression_shared_ptr left_,
expression_shared_ptr right_,
ComparaisonOperator op_
);
virtual std::ostream& get_expression(std::ostream& out_, adaptors::database_adaptor_shared_ptr adaptor_) const;
private:
expression_shared_ptr m_left;
expression_shared_ptr m_right;
ComparaisonOperator m_op;
};
typedef boost::shared_ptr< comparaison_expression > comparaison_expression_shared_ptr;
comparaison_expression_shared_ptr operator < (
expression_shared_ptr left_,
expression_shared_ptr right_
);
comparaison_expression_shared_ptr operator > (
expression_shared_ptr left_,
expression_shared_ptr right_
);
comparaison_expression_shared_ptr operator <= (
expression_shared_ptr left_,
expression_shared_ptr right_
);
comparaison_expression_shared_ptr operator >= (
expression_shared_ptr left_,
expression_shared_ptr right_
);
comparaison_expression_shared_ptr equal(
expression_shared_ptr left_,
expression_shared_ptr right_
);
comparaison_expression_shared_ptr not_equal(
expression_shared_ptr left_,
expression_shared_ptr right_
);
#define SQLPP_DEFINE_COMPARAISON_OP( type, op ) \
comparaison_expression_shared_ptr operator op (\
type left_,\
expression_shared_ptr right_\
);\
comparaison_expression_shared_ptr operator op (\
expression_shared_ptr left_,\
type right_\
);
#define SQLPP_DEFINE_COMPARAISON( type )\
SQLPP_DEFINE_COMPARAISON_OP(type, < )\
SQLPP_DEFINE_COMPARAISON_OP(type, > )\
SQLPP_DEFINE_COMPARAISON_OP(type, <= )\
SQLPP_DEFINE_COMPARAISON_OP(type, >= )\
SQLPP_DEFINE_COMPARAISON_OP(type, == )\
SQLPP_DEFINE_COMPARAISON_OP(type, != )
SQLPP_DEFINE_COMPARAISON(int)
SQLPP_DEFINE_COMPARAISON(double)
SQLPP_DEFINE_COMPARAISON(string_const_reference)
#undef SQLPP_DEFINE_COMPARAISON
#undef SQLPP_DEFINE_COMPARAISON_OP
}; // expressions
};//sqlpp
#endif