Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

qparms.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 /***********************************************************************
00009  Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by
00010  MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc.
00011  Others may also hold copyrights on code in this file.  See the CREDITS
00012  file in the top directory of the distribution for details.
00013 
00014  This file is part of MySQL++.
00015 
00016  MySQL++ is free software; you can redistribute it and/or modify it
00017  under the terms of the GNU Lesser General Public License as published
00018  by the Free Software Foundation; either version 2.1 of the License, or
00019  (at your option) any later version.
00020 
00021  MySQL++ is distributed in the hope that it will be useful, but WITHOUT
00022  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00023  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00024  License for more details.
00025 
00026  You should have received a copy of the GNU Lesser General Public
00027  License along with MySQL++; if not, write to the Free Software
00028  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
00029  USA
00030 ***********************************************************************/
00031 
00032 #ifndef MYSQLPP_QPARMS_H
00033 #define MYSQLPP_QPARMS_H
00034 
00035 #include "sql_string.h"
00036 
00037 #include <vector>
00038 
00039 namespace mysqlpp {
00040 
00041 class Query;
00042 
00043 
00046 class SQLQueryParms : public std::vector<SQLString>
00047 {
00048 public:
00051         typedef const SQLString& ss;
00052 
00054         SQLQueryParms() :
00055         parent_(0)
00056         {
00057         }
00058         
00063         SQLQueryParms(Query* p) :
00064         parent_(p)
00065         {
00066         }
00067         
00071         bool bound()
00072         {
00073                 return parent_ != 0;
00074         }
00075 
00077         void clear()
00078         {
00079                 erase(begin(), end());
00080         }
00081 
00083         SQLString& operator [](size_type n)
00084         {
00085                 if (n >= size())
00086                         insert(end(), (n + 1) - size(), "");
00087                 return std::vector<SQLString>::operator [](n);
00088         }
00089 
00091         const SQLString& operator [](size_type n) const
00092         {
00093                 return std::vector<SQLString>::operator [](n);
00094         }
00095         
00097         MYSQLPP_EXPORT SQLString& operator [](const char *str);
00098 
00100         MYSQLPP_EXPORT const SQLString& operator [](const char *str) const;
00101 
00103         SQLQueryParms& operator <<(const SQLString& str)
00104         {
00105                 push_back(str);
00106                 return *this;
00107         }
00108 
00110         SQLQueryParms& operator +=(const SQLString& str)
00111         {
00112                 push_back(str);
00113                 return *this;
00114         }
00115 
00125         MYSQLPP_EXPORT SQLQueryParms operator +(
00126                         const SQLQueryParms& other) const;
00127 
00128 #if !defined(DOXYGEN_IGNORE)
00129 // Doxygen will not generate documentation for this section.
00130         void set(ss a)
00131         {
00132                 clear();
00133                 *this << a;
00134         }
00135         void set(ss a, ss b)
00136         {
00137                 clear();
00138                 *this << a << b;
00139         }
00140         void set(ss a, ss b, ss c)
00141         {
00142                 clear();
00143                 *this << a << b << c;
00144         }
00145         void set(ss a, ss b, ss c, ss d)
00146         {
00147                 clear();
00148                 *this << a << b << c << d;
00149         }
00150         void set(ss a, ss b, ss c, ss d, ss e)
00151         {
00152                 clear();
00153                 *this << a << b << c << d << e;
00154         }
00155         void set(ss a, ss b, ss c, ss d, ss e, ss f)
00156         {
00157                 clear();
00158                 *this << a << b << c << d << e << f;
00159         }
00160         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g)
00161         {
00162                 clear();
00163                 *this << a << b << c << d << e << f << g;
00164         }
00165         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g, ss h)
00166         {
00167                 clear();
00168                 *this << a << b << c << d << e << f << g << h;
00169         }
00170         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g, ss h, ss i)
00171         {
00172                 clear();
00173                 *this << a << b << c << d << e << f << g << h << i;
00174         }
00175         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g, ss h, ss i, ss j)
00176         {
00177                 clear();
00178                 *this << a << b << c << d << e << f << g << h << i << j;
00179         }
00180         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g, ss h, ss i, ss j, ss k)
00181         {
00182                 clear();
00183                 *this << a << b << c << d << e << f << g << h << i << j << k;
00184         }
00185 #endif // !defined(DOXYGEN_IGNORE)
00186 
00192         void set(ss a, ss b, ss c, ss d, ss e, ss f, ss g,
00193                         ss h, ss i, ss j, ss k, ss l)
00194         {
00195                 clear();
00196                 *this << a << b << c << d << e << f << g << h << i << j << k << l;
00197         }
00198 
00199 private:
00200         friend class Query;
00201 
00202         Query* parent_;
00203 };
00204 
00205 
00227 
00228 struct SQLParseElement
00229 {
00235         SQLParseElement(std::string b, char o, char n) :
00236         before(b),
00237         option(o),
00238         num(n)
00239         {
00240         }
00241         
00242         std::string before;             
00243         char option;                    
00244         char num;                               
00245 };
00246 
00247 } // end namespace mysqlpp
00248 
00249 #endif // !defined(MYSQLPP_QPARMS_H)
00250 

Generated on Thu Aug 25 02:55:22 2005 for MySQL++ by doxygen1.2.18