5 #ifndef ODB_QUERY_DYNAMIC_HXX
6 #define ODB_QUERY_DYNAMIC_HXX
17 #include <odb/details/export.hxx>
18 #include <odb/details/shared-ptr.hxx>
22 struct native_column_info;
38 template <
typename T, std::
size_t N>
55 template <
typename T, std::
size_t N>
167 append (v ? clause_part::kind_true : clause_part::kind_false, 0);
202 template <
typename T>
209 template <
typename T>
224 template <
typename T, std::
size_t N>
236 operator+= (
const std::string& native);
242 return clause_.empty ();
248 return clause_.size () == 1 &&
249 clause_.front ().kind == clause_part::kind_true;
264 append (
const std::string&);
277 clause_.back ().kind = k;
278 clause_.back ().data = data;
287 clause_.back ().kind = clause_part::kind_column;
288 clause_.back ().native_info = c;
296 template <
typename T>
321 strings_type strings_;
348 LIBODB_EXPORT query_base
349 operator&& (
const query_base&,
const query_base&);
351 LIBODB_EXPORT query_base
352 operator|| (
const query_base&,
const query_base&);
354 LIBODB_EXPORT query_base
365 template <
typename T>
373 template <
typename T>
405 in (
const T&,
const T&)
const;
408 in (
const T&,
const T&,
const T&)
const;
411 in (
const T&,
const T&,
const T&,
const T&)
const;
414 in (
const T&,
const T&,
const T&,
const T&,
const T&)
const;
416 template <
typename I>
432 template <
typename T2>
443 like (
const T& pattern,
const T& escape)
const
451 template <
typename T2>
506 template <
typename T2>
513 template <
typename T2>
577 template <
typename T2>
584 template <
typename T2>
637 operator< (const query_column& c, val_bind<T> v)
648 template <
typename T2>
650 operator< (const query_column& c, val_bind<T2> v)
655 template <
typename T2>
663 operator< (const query_column& c, ref_bind<T> r)
719 template <
typename T2>
726 template <
typename T2>
779 operator<= (const query_column& c, val_bind<T> v)
781 return c.less_equal (v);
790 template <
typename T2>
792 operator<= (const query_column& c, val_bind<T2> v)
797 template <
typename T2>
805 operator<= (const query_column& c, ref_bind<T> r)
807 return c.less_equal (r);
861 template <
typename T2>
868 template <
typename T2>
890 template <
typename T2>
896 (void) (
sizeof (type_instance<T> () == type_instance<T2> ()));
904 template <
typename T2>
910 (void) (
sizeof (type_instance<T> () != type_instance<T2> ()));
918 template <
typename T2>
920 operator< (const query_column<T2>& c)
const
924 (void) (
sizeof (type_instance<T> () < type_instance<T2> ()));
932 template <
typename T2>
938 (void) (
sizeof (type_instance<T> () > type_instance<T2> ()));
946 template <
typename T2>
948 operator<= (const query_column<T2>& c)
const
952 (void) (
sizeof (type_instance<T> () <= type_instance<T2> ()));
960 template <
typename T2>
966 (void) (
sizeof (type_instance<T> () >= type_instance<T2> ()));
978 template <
typename T>
988 template <
typename T>
998 template <
typename T>
1008 template <
typename T>
1020 template <
typename T>
1063 #include <odb/query-dynamic.ixx>
1064 #include <odb/query-dynamic.txx>
1068 #endif // ODB_QUERY_DYNAMIC_HXX
Definition: query-dynamic.hxx:138
Definition: query-dynamic.hxx:118
LIBODB_EXPORT query_base operator||(const query_base &, const query_base &)
void append_ref(const void *ref, const native_column_info *)
friend query_base operator!=(const query_column &c, const T &v)
Definition: query-dynamic.hxx:554
ref_bind(type r)
Definition: query-dynamic.hxx:61
Definition: forward.hxx:148
Definition: query-dynamic.hxx:107
void append(const native_column_info *c)
Definition: query-dynamic.hxx:284
friend query_base operator<(const query_column &c, const T &v)
Definition: query-dynamic.hxx:625
query_base is_not_null() const
Definition: query-dynamic.hxx:394
query_base(const char *native)
Definition: query-dynamic.hxx:171
Definition: query-dynamic.hxx:146
query_base like(const T &pattern) const
Definition: query-dynamic.hxx:424
Definition: query-dynamic.hxx:144
std::vector< std::string > strings_type
Definition: query-dynamic.hxx:305
query_base less(val_bind< T > v) const
Definition: query-dynamic.hxx:607
query_base equal(ref_bind< T > r) const
Definition: query-dynamic.hxx:474
query_base unequal(val_bind< T > v) const
Definition: query-dynamic.hxx:536
query_base greater(ref_bind< T > r) const
Definition: query-dynamic.hxx:687
query(const query_column< bool > &qc)
Definition: query-dynamic.hxx:1056
Definition: query-dynamic.hxx:120
Definition: query-dynamic.hxx:116
const strings_type & strings() const
Definition: query-dynamic.hxx:314
native_column_info native_info[database_count]
Definition: query-dynamic.hxx:380
LIBODB_EXPORT query_base operator&&(const query_base &, const query_base &)
query_base less(ref_bind< T > r) const
Definition: query-dynamic.hxx:616
query_base less_equal(val_bind< T > v) const
Definition: query-dynamic.hxx:749
static ref_bind< T[N]> _ref(const T(&x)[N])
Definition: query-dynamic.hxx:226
Definition: query-dynamic.hxx:76
Definition: query-dynamic.hxx:143
const std::size_t database_count
Definition: forward.hxx:87
query(const query_base &q)
Definition: query-dynamic.hxx:1051
bool const_true() const
Definition: query-dynamic.hxx:246
query_base equal(val_bind< T > v) const
Definition: query-dynamic.hxx:465
void * param_factory
Definition: query-dynamic.hxx:362
T copy
Definition: query-dynamic.hxx:92
friend query_base operator>=(const query_column &c, const T &v)
Definition: query-dynamic.hxx:838
Definition: query-dynamic.hxx:135
const native_column_info * native_info
Definition: query-dynamic.hxx:151
const T & type
Definition: query-dynamic.hxx:27
query(const std::string &q)
Definition: query-dynamic.hxx:1046
query_base is_null() const
Definition: query-dynamic.hxx:386
void append_val(const T &val, const native_column_info *)
ref_bind(ref_bind< const T * > r)
Definition: query-dynamic.hxx:66
query_base(const query_base &x)
Definition: query-dynamic.hxx:184
Definition: query.hxx:110
kind_type
Definition: query-dynamic.hxx:111
const T * type
Definition: query-dynamic.hxx:58
query_base(const std::string &native)
Definition: query-dynamic.hxx:177
query(bool v)
Definition: query-dynamic.hxx:1034
Definition: query-dynamic.hxx:97
Definition: query-dynamic.hxx:42
kind_type kind
Definition: query-dynamic.hxx:149
query_base like(const T &pattern, const T &escape) const
Definition: query-dynamic.hxx:443
query_base less_equal(ref_bind< T > r) const
Definition: query-dynamic.hxx:758
query_base greater(val_bind< T > v) const
Definition: query-dynamic.hxx:678
ref_bind(type r)
Definition: query-dynamic.hxx:47
const void * value
Definition: query-dynamic.hxx:81
LIBODB_EXPORT query_base operator!(const query_base &)
static ref_bind< T > _ref(const T &x)
Definition: query-dynamic.hxx:211
Definition: query-dynamic.hxx:121
Definition: query-dynamic.hxx:88
const T & type_instance()
Definition: query-dynamic.hxx:134
friend query_base operator>(const query_column &c, const T &v)
Definition: query-dynamic.hxx:696
Definition: query-dynamic.hxx:130
Definition: query-dynamic.hxx:128
Definition: query-dynamic.hxx:141
const void * column
Definition: query-dynamic.hxx:361
query_base greater_equal(val_bind< T > v) const
Definition: query-dynamic.hxx:820
Definition: query-dynamic.hxx:139
static val_bind< T > _val(const T &x)
Definition: query-dynamic.hxx:204
query()
Definition: query-dynamic.hxx:1029
void append(const std::string &)
Definition: query-dynamic.hxx:113
query_base unequal(ref_bind< T > r) const
Definition: query-dynamic.hxx:545
ref_bind(ref_bind< T * > r)
Definition: query-dynamic.hxx:65
query_base operator+(const query_base &x, const query_base &y)
Definition: query-dynamic.hxx:325
Definition: query.hxx:104
Definition: query-dynamic.hxx:137
Definition: query-dynamic.hxx:131
Definition: query-dynamic.hxx:115
type ref
Definition: query-dynamic.hxx:52
Definition: query-dynamic.hxx:25
query_base(const native_column_info *c)
Definition: query-dynamic.hxx:256
friend query_base operator==(const query_column &c, const T &v)
Definition: query-dynamic.hxx:483
friend query_base operator<=(const query_column &c, const T &v)
Definition: query-dynamic.hxx:767
const void * ptr() const
Definition: query-dynamic.hxx:50
Definition: query-dynamic.hxx:56
Definition: query-dynamic.hxx:359
Definition: query-dynamic.hxx:132
const T & type
Definition: query-dynamic.hxx:44
query_base greater_equal(ref_bind< T > r) const
Definition: query-dynamic.hxx:829
query_base(bool v)
Definition: query-dynamic.hxx:165
query_base like(val_bind< T2 > pattern) const
Definition: query-dynamic.hxx:434
std::size_t data
Definition: query-dynamic.hxx:150
query_base in(const T &, const T &) const
query_param(const void *v)
Definition: query-dynamic.hxx:79
val_bind(type v)
Definition: query-dynamic.hxx:30
type val
Definition: query-dynamic.hxx:32
query(const char *q)
Definition: query-dynamic.hxx:1040
query_base like(val_bind< T2 > pattern, const T &escape) const
Definition: query-dynamic.hxx:453
val_query_param(const T &v)
Definition: query-dynamic.hxx:90
const clause_type & clause() const
Definition: query-dynamic.hxx:308
Definition: query-dynamic.hxx:142
~query_base()
Definition: query-dynamic.hxx:155
bool empty() const
Definition: query-dynamic.hxx:240
query_base in_range(I begin, I end) const
const void * ptr() const
Definition: query-dynamic.hxx:69
query_base()
Definition: query-dynamic.hxx:160
std::vector< clause_part > clause_type
Definition: query-dynamic.hxx:304
Definition: query-dynamic.hxx:145
void append(clause_part::kind_type k, std::size_t data)
Definition: query-dynamic.hxx:274
type ref
Definition: query-dynamic.hxx:71