7 #ifndef litesql_expr_hpp 8 #define litesql_expr_hpp 27 virtual string asString()
const {
return True; }
30 Split getExtraTables()
const {
40 virtual string asString()
const {
return expr; }
50 : op(o), e1(e1_), e2(e2_) { }
55 virtual string asString()
const {
56 string res =
"(" + e1.asString() +
") " + op
57 +
" (" + e2.asString() +
")";
65 virtual string asString()
const {
66 if (e1.asString() == True)
68 else if (e2.asString() == True)
71 return Connective::asString();
79 virtual string asString()
const {
80 if ((e1.asString() == True)||(e2.asString() == True))
83 return Connective::asString();
91 Not(
const Expr & _exp) : exp(_exp) {}
92 virtual string asString()
const {
93 return "not ("+exp.asString()+
")";
105 Oper(
const FieldType & fld,
const string& o,
const string& d)
106 : field(fld), op(o), data(d), escape(
true) {
107 extraTables.push_back(fld.table());
110 : field(fld), op(o), data(f2.fullName()), escape(
false) {
111 extraTables.push_back(fld.table());
115 virtual string asString()
const {
117 res += field.fullName() +
" " + op +
" " + (escape ?
escapeSQL(data) : data);
125 :
Oper(fld,
"=", d) {}
127 :
Oper(fld,
"=", f2) {}
134 :
Oper(fld,
"<>", d) {}
136 :
Oper(fld,
"<>", f2) {
144 :
Oper(fld,
">", d) {}
146 :
Oper(fld,
">", d) {}
153 :
Oper(fld,
">=", d) {}
155 :
Oper(fld,
">=", d) {}
162 :
Oper(fld,
"<", d) {}
164 :
Oper(fld,
"<", d) {}
171 :
Oper(fld,
"<=", d) {}
173 :
Oper(fld,
"<=", d) {}
180 :
Oper(fld,
"like", d) {}
187 :
Oper(fld,
"in",
"("+
set+
")") {};
189 virtual string asString()
const {
190 return field.fullName() +
" " + op +
" " + data;
195 Or operator||(
const Expr& o1,
const Expr& o2);
200 Eq operator==(
const FieldType& fld,
const FieldType& f2);
201 Gt operator>(
const FieldType& fld,
const FieldType& o2);
202 GtEq operator>=(
const FieldType& fld,
const FieldType& o2);
203 Lt operator<(
const FieldType& fld,
const FieldType& o2);
204 LtEq operator<=(
const FieldType& fld,
const FieldType& o2);
205 NotEq operator!=(
const FieldType& fld,
const FieldType& f2);
232 Not operator!(
const Expr &exp);
Definition: backend.hpp:14
in operator
Definition: expr.hpp:184
greater or equal operator
Definition: expr.hpp:150
std::string escapeSQL(const std::string &str)
escapes ' characters so that they do not break SQL statements.
like operator
Definition: expr.hpp:177
connects two expression with or-operator.
Definition: expr.hpp:75
includes string.hpp and split.hpp
A base class for expression in WHERE - clause.
Definition: expr.hpp:19
contains FieldType- and Field-classes
a class that helps creating SELECT-SQL statements.
Definition: selectquery.hpp:18
splits and joins strings.
Definition: split.hpp:15
less than or equal operator
Definition: expr.hpp:168
base class of operators in expressions
Definition: expr.hpp:98
greater than operator
Definition: expr.hpp:141
used to inject custom expression into WHERE-clause
Definition: expr.hpp:36
static const char * True
constant for True expression
Definition: expr.hpp:25
equality operator
Definition: expr.hpp:122
connects two expressions with and-operator.
Definition: expr.hpp:62
negates expression
Definition: expr.hpp:87
used to connect two expressions
Definition: expr.hpp:43
less than operator
Definition: expr.hpp:159
inequality operator
Definition: expr.hpp:131