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 #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
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 }
00248
00249 #endif // !defined(MYSQLPP_QPARMS_H)
00250