00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef MYSQLPP_MANIP_H
00042 #define MYSQLPP_MANIP_H
00043
00044 #include "common.h"
00045
00046 #include "myset.h"
00047 #include "stadapter.h"
00048
00049 #include <iostream>
00050
00051 namespace mysqlpp {
00052
00053 class SQLQueryParms;
00054
00055
00069
00070 enum quote_type0
00071 {
00072 quote
00073 };
00074
00075
00076 #if !defined(DOXYGEN_IGNORE)
00077
00078
00079 struct quote_type1
00080 {
00081 std::ostream * ostr;
00082 quote_type1(std::ostream * o) :
00083 ostr(o)
00084 {
00085 }
00086 };
00087
00088
00089 inline quote_type1
00090 operator <<(std::ostream& o, quote_type0 )
00091 {
00092 return quote_type1(&o);
00093 }
00094
00095
00096 struct quote_type2
00097 {
00098 SQLQueryParms *qparms;
00099 quote_type2(SQLQueryParms* p) :
00100 qparms(p)
00101 {
00102 }
00103 };
00104
00105
00106 inline quote_type2
00107 operator <<(SQLQueryParms& p, quote_type0 )
00108 {
00109 return quote_type2(&p);
00110 }
00111
00112
00115
00116 MYSQLPP_EXPORT SQLQueryParms& operator <<(quote_type2 p,
00117 SQLTypeAdapter& in);
00118
00119
00122
00123 MYSQLPP_EXPORT std::ostream& operator <<(quote_type1 o,
00124 const SQLTypeAdapter& in);
00125
00126
00133
00134 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& o,
00135 const SQLTypeAdapter& in);
00136
00137
00138 template <class ST>
00139 inline std::ostream&
00140 operator <<(quote_type1 o, const Set<ST>& in)
00141 {
00142 return *o.ostr << '\'' << in << '\'';
00143 }
00144
00145 #endif // !defined(DOXYGEN_IGNORE)
00146
00147
00155
00156 enum quote_only_type0
00157 {
00158 quote_only
00159 };
00160
00161
00162 #if !defined(DOXYGEN_IGNORE)
00163
00164
00165 struct quote_only_type1
00166 {
00167 std::ostream* ostr;
00168 quote_only_type1(std::ostream* o) :
00169 ostr(o)
00170 {
00171 }
00172 };
00173
00174
00175 inline quote_only_type1
00176 operator <<(std::ostream& o, quote_only_type0 )
00177 {
00178 return quote_only_type1(&o);
00179 }
00180
00181
00182 struct quote_only_type2
00183 {
00184 SQLQueryParms* qparms;
00185 quote_only_type2(SQLQueryParms* p) :
00186 qparms(p)
00187 {
00188 }
00189 };
00190
00191
00192 inline quote_only_type2
00193 operator <<(SQLQueryParms& p, quote_only_type0 )
00194 {
00195 return quote_only_type2(&p);
00196 }
00197
00198
00205
00206 MYSQLPP_EXPORT SQLQueryParms&
00207 operator <<(quote_only_type2 p, SQLTypeAdapter& in);
00208
00209
00210 MYSQLPP_EXPORT std::ostream&
00211 operator <<(quote_only_type1 o, const SQLTypeAdapter& in);
00212
00213
00214 template <class ST>
00215 inline std::ostream&
00216 operator <<(quote_only_type1 o, const Set<ST>& in)
00217 {
00218 return *o.ostr << '\'' << in << '\'';
00219 }
00220
00221 #endif // !defined(DOXYGEN_IGNORE)
00222
00223
00236
00237 enum quote_double_only_type0
00238 {
00239 quote_double_only
00240 };
00241
00242
00243 #if !defined(DOXYGEN_IGNORE)
00244
00245
00246 struct quote_double_only_type1
00247 {
00248 std::ostream* ostr;
00249 quote_double_only_type1(std::ostream* o) :
00250 ostr(o)
00251 {
00252 }
00253 };
00254
00255
00256 inline quote_double_only_type1
00257 operator <<(std::ostream& o, quote_double_only_type0 )
00258 {
00259 return quote_double_only_type1(&o);
00260 }
00261
00262
00263 struct quote_double_only_type2
00264 {
00265 SQLQueryParms *qparms;
00266 quote_double_only_type2(SQLQueryParms* p) :
00267 qparms(p)
00268 {
00269 }
00270 };
00271
00272
00273 inline quote_double_only_type2
00274 operator <<(SQLQueryParms& p, quote_double_only_type0 )
00275 {
00276 return quote_double_only_type2(&p);
00277 }
00278
00279
00286
00287 MYSQLPP_EXPORT SQLQueryParms&
00288 operator <<(quote_double_only_type2 p, SQLTypeAdapter& in);
00289
00290
00291 MYSQLPP_EXPORT std::ostream&
00292 operator <<(quote_double_only_type1 o, const SQLTypeAdapter& in);
00293
00294
00295 template <class ST>
00296 inline std::ostream&
00297 operator <<(quote_double_only_type1 o, const Set<ST>& in)
00298 {
00299 return *o.ostr << '"' << in << '"';
00300 }
00301
00302 #endif // !defined(DOXYGEN_IGNORE)
00303
00304
00315
00316 enum escape_type0 { escape };
00317
00318
00319 #if !defined(DOXYGEN_IGNORE)
00320
00321
00322 struct escape_type1
00323 {
00324 std::ostream* ostr;
00325 escape_type1(std::ostream* o) :
00326 ostr(o)
00327 {
00328 }
00329 };
00330
00331
00332 inline escape_type1
00333 operator <<(std::ostream& o, escape_type0 )
00334 {
00335 return escape_type1(&o);
00336 }
00337
00338
00339 struct escape_type2
00340 {
00341 SQLQueryParms *qparms;
00342 escape_type2(SQLQueryParms* p) :
00343 qparms(p)
00344 {
00345 }
00346 };
00347
00348
00349 inline escape_type2
00350 operator <<(SQLQueryParms& p, escape_type0 )
00351 {
00352 return escape_type2(&p);
00353 }
00354
00355 #endif // !defined(DOXYGEN_IGNORE)
00356
00357
00364
00365 MYSQLPP_EXPORT SQLQueryParms&
00366 operator <<(escape_type2 p, SQLTypeAdapter& in);
00367
00368
00371
00372 MYSQLPP_EXPORT std::ostream&
00373 operator <<(escape_type1 o, const SQLTypeAdapter& in);
00374
00375
00386
00387 enum do_nothing_type0
00388 {
00389 do_nothing
00390 };
00391
00392
00393 #if !defined(DOXYGEN_IGNORE)
00394
00395
00396 struct do_nothing_type1
00397 {
00398 std::ostream* ostr;
00399 do_nothing_type1(std::ostream* o) :
00400 ostr(o)
00401 {
00402 }
00403 };
00404
00405
00406 inline do_nothing_type1
00407 operator <<(std::ostream& o, do_nothing_type0 )
00408 {
00409 return do_nothing_type1(&o);
00410 }
00411
00412
00413 MYSQLPP_EXPORT std::ostream&
00414 operator <<(do_nothing_type1 o, const SQLTypeAdapter& in);
00415
00416
00417 struct do_nothing_type2
00418 {
00419 SQLQueryParms *qparms;
00420 do_nothing_type2(SQLQueryParms* p) :
00421 qparms(p)
00422 {
00423 }
00424 };
00425
00426
00427 inline do_nothing_type2
00428 operator <<(SQLQueryParms& p, do_nothing_type0 )
00429 {
00430 return do_nothing_type2(&p);
00431 }
00432
00433
00436
00437 MYSQLPP_EXPORT SQLQueryParms&
00438 operator <<(do_nothing_type2 p, SQLTypeAdapter& in);
00439
00440 #endif // !defined(DOXYGEN_IGNORE)
00441
00442
00452
00453 enum ignore_type0
00454 {
00455 ignore
00456 };
00457
00458
00459 #if !defined(DOXYGEN_IGNORE)
00460
00461
00462 struct ignore_type2
00463 {
00464 SQLQueryParms* qparms;
00465 ignore_type2(SQLQueryParms* p) :
00466 qparms(p)
00467 {
00468 }
00469 };
00470
00471
00472 inline ignore_type2
00473 operator <<(SQLQueryParms& p, ignore_type0 )
00474 {
00475 return ignore_type2(&p);
00476 }
00477
00478
00481
00482 MYSQLPP_EXPORT SQLQueryParms&
00483 operator <<(ignore_type2 p, SQLTypeAdapter& in);
00484
00485 #endif // !defined(DOXYGEN_IGNORE)
00486
00487 }
00488
00489 #endif