manip.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 /***********************************************************************
00018  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
00019  (c) 2004-2007 by Educational Technology Resources, Inc.  Others may
00020  also hold copyrights on code in this file.  See the CREDITS file in
00021  the top directory of the distribution for details.
00022 
00023  This file is part of MySQL++.
00024 
00025  MySQL++ is free software; you can redistribute it and/or modify it
00026  under the terms of the GNU Lesser General Public License as published
00027  by the Free Software Foundation; either version 2.1 of the License, or
00028  (at your option) any later version.
00029 
00030  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
00031  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00032  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00033  License for more details.
00034 
00035  You should have received a copy of the GNU Lesser General Public
00036  License along with MySQL++; if not, write to the Free Software
00037  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
00038  USA
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 // Doxygen will not generate documentation for this section.
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 /* esc */)
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 /* esc */)
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 // Doxygen will not generate documentation for this section.
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 /* esc */)
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 /* esc */)
00194 {
00195         return quote_only_type2(&p);
00196 }
00197 
00198 
00205 
00206 MYSQLPP_EXPORT SQLQueryParms& operator <<(quote_only_type2 p,
00207                 SQLTypeAdapter& in);
00208 
00209 
00210 std::ostream& operator <<(quote_only_type1 o, const SQLTypeAdapter& in);
00211 
00212 
00213 template <class ST>
00214 inline std::ostream& 
00215 operator <<(quote_only_type1 o, const Set<ST>& in)
00216 {
00217         return *o.ostr << '\'' << in << '\'';
00218 }
00219 
00220 #endif // !defined(DOXYGEN_IGNORE)
00221 
00222 
00235 
00236 enum quote_double_only_type0
00237 {
00238         quote_double_only 
00239 };
00240 
00241 
00242 #if !defined(DOXYGEN_IGNORE)
00243 // Doxygen will not generate documentation for this section.
00244 
00245 struct quote_double_only_type1
00246 {
00247         std::ostream* ostr;
00248         quote_double_only_type1(std::ostream* o) :
00249         ostr(o)
00250         {
00251         }
00252 };
00253 
00254 
00255 inline quote_double_only_type1
00256 operator <<(std::ostream& o, quote_double_only_type0 /* esc */)
00257 {
00258         return quote_double_only_type1(&o);
00259 }
00260 
00261 
00262 struct quote_double_only_type2
00263 {
00264         SQLQueryParms *qparms;
00265         quote_double_only_type2(SQLQueryParms* p) :
00266         qparms(p)
00267         {
00268         }
00269 };
00270 
00271 
00272 inline quote_double_only_type2
00273 operator <<(SQLQueryParms& p, quote_double_only_type0 /* esc */)
00274 {
00275         return quote_double_only_type2(&p);
00276 }
00277 
00278 
00285 
00286 MYSQLPP_EXPORT SQLQueryParms&
00287 operator <<(quote_double_only_type2 p, SQLTypeAdapter& in);
00288 
00289 
00290 std::ostream&
00291 operator <<(quote_double_only_type1 o, const SQLTypeAdapter& in);
00292 
00293 
00294 template <class ST>
00295 inline std::ostream&
00296 operator <<(quote_double_only_type1 o, const Set<ST>& in)
00297 {
00298         return *o.ostr << '"' << in << '"';
00299 }
00300 
00301 #endif // !defined(DOXYGEN_IGNORE)
00302 
00303 
00314 
00315 enum escape_type0 { escape };
00316 
00317 
00318 #if !defined(DOXYGEN_IGNORE)
00319 // Doxygen will not generate documentation for this section.
00320 
00321 struct escape_type1
00322 {
00323         std::ostream* ostr;
00324         escape_type1(std::ostream* o) :
00325         ostr(o)
00326         {
00327         }
00328 };
00329 
00330 
00331 inline escape_type1
00332 operator <<(std::ostream& o, escape_type0 /* esc */)
00333 {
00334         return escape_type1(&o);
00335 }
00336 
00337 
00338 struct escape_type2
00339 {
00340         SQLQueryParms *qparms;
00341         escape_type2(SQLQueryParms* p) :
00342         qparms(p)
00343         {
00344         }
00345 };
00346 
00347 
00348 inline escape_type2
00349 operator <<(SQLQueryParms& p, escape_type0 /* esc */)
00350 {
00351         return escape_type2(&p);
00352 }
00353 
00354 #endif // !defined(DOXYGEN_IGNORE)
00355 
00356 
00363 
00364 MYSQLPP_EXPORT SQLQueryParms& operator <<(escape_type2 p,
00365                 SQLTypeAdapter& in);
00366 
00367 
00370 
00371 MYSQLPP_EXPORT std::ostream& operator <<(escape_type1 o,
00372                 const SQLTypeAdapter& in);
00373 
00374 
00385 
00386 enum do_nothing_type0
00387 {
00388         do_nothing                              
00389 };
00390 
00391 
00392 #if !defined(DOXYGEN_IGNORE)
00393 // Doxygen will not generate documentation for this section.
00394 
00395 struct do_nothing_type1
00396 {
00397         std::ostream* ostr;
00398         do_nothing_type1(std::ostream* o) :
00399         ostr(o)
00400         {
00401         }
00402 };
00403 
00404 
00405 inline do_nothing_type1
00406 operator <<(std::ostream& o, do_nothing_type0 /* esc */)
00407 {
00408         return do_nothing_type1(&o);
00409 }
00410 
00411 
00412 MYSQLPP_EXPORT std::ostream&
00413 operator <<(do_nothing_type1 o, const SQLTypeAdapter& in);
00414 
00415 
00416 struct do_nothing_type2
00417 {
00418         SQLQueryParms *qparms;
00419         do_nothing_type2(SQLQueryParms* p) :
00420         qparms(p)
00421         {
00422         }
00423 };
00424 
00425 
00426 inline do_nothing_type2
00427 operator <<(SQLQueryParms& p, do_nothing_type0 /* esc */)
00428 {
00429         return do_nothing_type2(&p);
00430 }
00431 
00432 
00435 
00436 MYSQLPP_EXPORT SQLQueryParms& operator <<(do_nothing_type2 p,
00437                 SQLTypeAdapter& in);
00438 
00439 #endif // !defined(DOXYGEN_IGNORE)
00440 
00441 
00451 
00452 enum ignore_type0
00453 {
00454         ignore                                  
00455 };
00456 
00457 
00458 #if !defined(DOXYGEN_IGNORE)
00459 // Doxygen will not generate documentation for this section.
00460 
00461 struct ignore_type2
00462 {
00463         SQLQueryParms* qparms;
00464         ignore_type2(SQLQueryParms* p) :
00465         qparms(p)
00466         {
00467         }
00468 };
00469 
00470 
00471 inline ignore_type2
00472 operator <<(SQLQueryParms& p, ignore_type0 /* esc */)
00473 {
00474         return ignore_type2(&p);
00475 }
00476 
00477 
00480 
00481 MYSQLPP_EXPORT SQLQueryParms& operator <<(ignore_type2 p,
00482                 SQLTypeAdapter& in);
00483 
00484 #endif // !defined(DOXYGEN_IGNORE)
00485 
00486 } // end namespace mysqlpp
00487 
00488 #endif

Generated on Fri Feb 29 16:26:00 2008 for MySQL++ by  doxygen 1.4.7