MySQL++  3.3.0
manip.h
Go to the documentation of this file.
1 
17 /***********************************************************************
18  Copyright (c) 1998 by Kevin Atkinson, (c) 1999-2001 by MySQL AB, and
19  (c) 2004-2007 by Educational Technology Resources, Inc. Others may
20  also hold copyrights on code in this file. See the CREDITS.txt file
21  in the top directory of the distribution for details.
22 
23  This file is part of MySQL++.
24 
25  MySQL++ is free software; you can redistribute it and/or modify it
26  under the terms of the GNU Lesser General Public License as published
27  by the Free Software Foundation; either version 2.1 of the License, or
28  (at your option) any later version.
29 
30  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
31  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
32  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
33  License for more details.
34 
35  You should have received a copy of the GNU Lesser General Public
36  License along with MySQL++; if not, write to the Free Software
37  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
38  USA
39 ***********************************************************************/
40 
41 #ifndef MYSQLPP_MANIP_H
42 #define MYSQLPP_MANIP_H
43 
44 #include "common.h"
45 
46 #include "myset.h"
47 #include "stadapter.h"
48 
49 #include <iostream>
50 
51 namespace mysqlpp {
52 
53 class SQLQueryParms;
54 
55 
69 
71 {
72  quote
73 };
74 
75 
76 #if !defined(DOXYGEN_IGNORE)
77 // Doxygen will not generate documentation for this section.
78 
79 struct quote_type1
80 {
81  std::ostream * ostr;
82  quote_type1(std::ostream * o) :
83  ostr(o)
84  {
85  }
86 };
87 
88 
89 inline quote_type1
90 operator <<(std::ostream& o, quote_type0 /* esc */)
91 {
92  return quote_type1(&o);
93 }
94 
95 
96 struct quote_type2
97 {
98  SQLQueryParms *qparms;
99  quote_type2(SQLQueryParms* p) :
100  qparms(p)
101  {
102  }
103 };
104 
105 
106 inline quote_type2
107 operator <<(SQLQueryParms& p, quote_type0 /* esc */)
108 {
109  return quote_type2(&p);
110 }
111 
112 
115 
116 MYSQLPP_EXPORT SQLQueryParms& operator <<(quote_type2 p,
117  SQLTypeAdapter& in);
118 
119 
122 
123 MYSQLPP_EXPORT std::ostream& operator <<(quote_type1 o,
124  const SQLTypeAdapter& in);
125 
126 
133 
134 MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& o,
135  const SQLTypeAdapter& in);
136 
137 
138 template <class ST>
139 inline std::ostream&
140 operator <<(quote_type1 o, const Set<ST>& in)
141 {
142  return *o.ostr << '\'' << in << '\'';
143 }
144 
145 #endif // !defined(DOXYGEN_IGNORE)
146 
147 
155 
157 {
158  quote_only
159 };
160 
161 
162 #if !defined(DOXYGEN_IGNORE)
163 // Doxygen will not generate documentation for this section.
164 
165 struct quote_only_type1
166 {
167  std::ostream* ostr;
168  quote_only_type1(std::ostream* o) :
169  ostr(o)
170  {
171  }
172 };
173 
174 
175 inline quote_only_type1
176 operator <<(std::ostream& o, quote_only_type0 /* esc */)
177 {
178  return quote_only_type1(&o);
179 }
180 
181 
182 struct quote_only_type2
183 {
184  SQLQueryParms* qparms;
185  quote_only_type2(SQLQueryParms* p) :
186  qparms(p)
187  {
188  }
189 };
190 
191 
192 inline quote_only_type2
193 operator <<(SQLQueryParms& p, quote_only_type0 /* esc */)
194 {
195  return quote_only_type2(&p);
196 }
197 
198 
205 
206 MYSQLPP_EXPORT SQLQueryParms&
207 operator <<(quote_only_type2 p, SQLTypeAdapter& in);
208 
209 
210 MYSQLPP_EXPORT std::ostream&
211 operator <<(quote_only_type1 o, const SQLTypeAdapter& in);
212 
213 
214 template <class ST>
215 inline std::ostream&
216 operator <<(quote_only_type1 o, const Set<ST>& in)
217 {
218  return *o.ostr << '\'' << in << '\'';
219 }
220 
221 #endif // !defined(DOXYGEN_IGNORE)
222 
223 
236 
238 {
240 };
241 
242 
243 #if !defined(DOXYGEN_IGNORE)
244 // Doxygen will not generate documentation for this section.
245 
246 struct quote_double_only_type1
247 {
248  std::ostream* ostr;
249  quote_double_only_type1(std::ostream* o) :
250  ostr(o)
251  {
252  }
253 };
254 
255 
256 inline quote_double_only_type1
257 operator <<(std::ostream& o, quote_double_only_type0 /* esc */)
258 {
259  return quote_double_only_type1(&o);
260 }
261 
262 
263 struct quote_double_only_type2
264 {
265  SQLQueryParms *qparms;
266  quote_double_only_type2(SQLQueryParms* p) :
267  qparms(p)
268  {
269  }
270 };
271 
272 
273 inline quote_double_only_type2
274 operator <<(SQLQueryParms& p, quote_double_only_type0 /* esc */)
275 {
276  return quote_double_only_type2(&p);
277 }
278 
279 
286 
287 MYSQLPP_EXPORT SQLQueryParms&
288 operator <<(quote_double_only_type2 p, SQLTypeAdapter& in);
289 
290 
291 MYSQLPP_EXPORT std::ostream&
292 operator <<(quote_double_only_type1 o, const SQLTypeAdapter& in);
293 
294 
295 template <class ST>
296 inline std::ostream&
297 operator <<(quote_double_only_type1 o, const Set<ST>& in)
298 {
299  return *o.ostr << '"' << in << '"';
300 }
301 
302 #endif // !defined(DOXYGEN_IGNORE)
303 
304 
315 
316 enum escape_type0 { escape };
317 
318 
319 #if !defined(DOXYGEN_IGNORE)
320 // Doxygen will not generate documentation for this section.
321 
322 struct escape_type1
323 {
324  std::ostream* ostr;
325  escape_type1(std::ostream* o) :
326  ostr(o)
327  {
328  }
329 };
330 
331 
332 inline escape_type1
333 operator <<(std::ostream& o, escape_type0 /* esc */)
334 {
335  return escape_type1(&o);
336 }
337 
338 
339 struct escape_type2
340 {
341  SQLQueryParms *qparms;
342  escape_type2(SQLQueryParms* p) :
343  qparms(p)
344  {
345  }
346 };
347 
348 
349 inline escape_type2
350 operator <<(SQLQueryParms& p, escape_type0 /* esc */)
351 {
352  return escape_type2(&p);
353 }
354 
355 #endif // !defined(DOXYGEN_IGNORE)
356 
357 
364 
365 MYSQLPP_EXPORT SQLQueryParms&
366 operator <<(escape_type2 p, SQLTypeAdapter& in);
367 
368 
371 
372 MYSQLPP_EXPORT std::ostream&
373 operator <<(escape_type1 o, const SQLTypeAdapter& in);
374 
375 
386 
388 {
389  do_nothing
390 };
391 
392 
393 #if !defined(DOXYGEN_IGNORE)
394 // Doxygen will not generate documentation for this section.
395 
396 struct do_nothing_type1
397 {
398  std::ostream* ostr;
399  do_nothing_type1(std::ostream* o) :
400  ostr(o)
401  {
402  }
403 };
404 
405 
406 inline do_nothing_type1
407 operator <<(std::ostream& o, do_nothing_type0 /* esc */)
408 {
409  return do_nothing_type1(&o);
410 }
411 
412 
413 MYSQLPP_EXPORT std::ostream&
414 operator <<(do_nothing_type1 o, const SQLTypeAdapter& in);
415 
416 
417 struct do_nothing_type2
418 {
419  SQLQueryParms *qparms;
420  do_nothing_type2(SQLQueryParms* p) :
421  qparms(p)
422  {
423  }
424 };
425 
426 
427 inline do_nothing_type2
428 operator <<(SQLQueryParms& p, do_nothing_type0 /* esc */)
429 {
430  return do_nothing_type2(&p);
431 }
432 
433 
436 
437 MYSQLPP_EXPORT SQLQueryParms&
438 operator <<(do_nothing_type2 p, SQLTypeAdapter& in);
439 
440 #endif // !defined(DOXYGEN_IGNORE)
441 
442 
452 
454 {
455  ignore
456 };
457 
458 
459 #if !defined(DOXYGEN_IGNORE)
460 // Doxygen will not generate documentation for this section.
461 
462 struct ignore_type2
463 {
464  SQLQueryParms* qparms;
465  ignore_type2(SQLQueryParms* p) :
466  qparms(p)
467  {
468  }
469 };
470 
471 
472 inline ignore_type2
473 operator <<(SQLQueryParms& p, ignore_type0 /* esc */)
474 {
475  return ignore_type2(&p);
476 }
477 
478 
481 
482 MYSQLPP_EXPORT SQLQueryParms&
483 operator <<(ignore_type2 p, SQLTypeAdapter& in);
484 
485 #endif // !defined(DOXYGEN_IGNORE)
486 
487 } // end namespace mysqlpp
488 
489 #endif
This file includes top-level definitions for use both internal to the library, and outside it....
quote_double_only_type0
Definition: manip.h:238
@ quote_double_only
insert into a std::ostream to double-quote next item
Definition: manip.h:239
quote_only_type0
Definition: manip.h:157
@ quote_only
insert into a std::ostream to single-quote next item
Definition: manip.h:158
do_nothing_type0
Definition: manip.h:388
@ do_nothing
insert into a std::ostream to override manipulation of next item
Definition: manip.h:389
escape_type0
Definition: manip.h:316
quote_type0
Definition: manip.h:71
@ quote
insert into a Query stream to single-quote and escape next item
Definition: manip.h:72
ignore_type0
Definition: manip.h:454
@ ignore
insert into a std::ostream as a dummy manipulator
Definition: manip.h:455
Declares templates for generating custom containers used elsewhere in the library.
Declares the SQLTypeAdapter class.