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 #if !defined(MYSQLPP_OPTIONS_H)
00035 #define MYSQLPP_OPTIONS_H
00036
00037 #include "common.h"
00038
00039 #include <deque>
00040 #include <string>
00041
00042
00043 namespace mysqlpp {
00044
00045 #if !defined(DOXYGEN_IGNORE)
00046 class DBDriver;
00047 #endif
00048
00049
00051
00052
00057 class MYSQLPP_EXPORT Option
00058 {
00059 public:
00061 enum Error {
00062 err_NONE,
00063 err_api_limit,
00064 err_api_reject,
00065 err_connected
00066 };
00067
00068 virtual ~Option() { }
00069 virtual Error set(DBDriver* dbd) = 0;
00070 };
00071
00072
00075 template <typename T>
00076 class MYSQLPP_EXPORT DataOption : public Option
00077 {
00078 public:
00079 typedef T ArgType;
00080
00081 protected:
00082 DataOption(const T& arg) : arg_(arg) { }
00083 T arg_;
00084 };
00085
00086 typedef DataOption<unsigned> IntegerOption;
00087 typedef DataOption<bool> BooleanOption;
00088 typedef DataOption<std::string> StringOption;
00089
00090
00092 class MYSQLPP_EXPORT CompressOption : public Option
00093 {
00094 #if !defined(DOXYGEN_IGNORE)
00095 public:
00096 CompressOption() : Option() { }
00097
00098 private:
00099 Error set(DBDriver* dbd);
00100 #endif
00101 };
00102
00103
00105 class MYSQLPP_EXPORT ConnectTimeoutOption : public IntegerOption
00106 {
00107 #if !defined(DOXYGEN_IGNORE)
00108 public:
00109 ConnectTimeoutOption(ArgType arg) : IntegerOption(arg) { }
00110
00111 private:
00112 Error set(DBDriver* dbd);
00113 #endif
00114 };
00115
00116
00120 class MYSQLPP_EXPORT FoundRowsOption : public BooleanOption
00121 {
00122 #if !defined(DOXYGEN_IGNORE)
00123 public:
00124 FoundRowsOption(ArgType arg) : BooleanOption(arg) { }
00125
00126 private:
00127 Error set(DBDriver* dbd);
00128 #endif
00129 };
00130
00131
00136 class MYSQLPP_EXPORT GuessConnectionOption : public Option
00137 {
00138 #if !defined(DOXYGEN_IGNORE)
00139 public:
00140 GuessConnectionOption() : Option() { }
00141
00142 private:
00143 Error set(DBDriver* dbd);
00144 #endif
00145 };
00146
00147
00149 class MYSQLPP_EXPORT IgnoreSpaceOption : public BooleanOption
00150 {
00151 #if !defined(DOXYGEN_IGNORE)
00152 public:
00153 IgnoreSpaceOption(ArgType arg) : BooleanOption(arg) { }
00154
00155 private:
00156 Error set(DBDriver* dbd);
00157 #endif
00158 };
00159
00160
00162 class MYSQLPP_EXPORT InitCommandOption : public StringOption
00163 {
00164 #if !defined(DOXYGEN_IGNORE)
00165 public:
00166 InitCommandOption(ArgType arg) : StringOption(arg) { }
00167
00168 private:
00169 Error set(DBDriver* dbd);
00170 #endif
00171 };
00172
00173
00177 class MYSQLPP_EXPORT InteractiveOption : public BooleanOption
00178 {
00179 #if !defined(DOXYGEN_IGNORE)
00180 public:
00181 InteractiveOption(ArgType arg) : BooleanOption(arg) { }
00182
00183 private:
00184 Error set(DBDriver* dbd);
00185 #endif
00186 };
00187
00188
00190 class MYSQLPP_EXPORT LocalFilesOption : public BooleanOption
00191 {
00192 #if !defined(DOXYGEN_IGNORE)
00193 public:
00194 LocalFilesOption(ArgType arg) : BooleanOption(arg) { }
00195
00196 private:
00197 Error set(DBDriver* dbd);
00198 #endif
00199 };
00200
00201
00203 class MYSQLPP_EXPORT LocalInfileOption : public IntegerOption
00204 {
00205 #if !defined(DOXYGEN_IGNORE)
00206 public:
00207 LocalInfileOption(ArgType arg) : IntegerOption(arg) { }
00208
00209 private:
00210 Error set(DBDriver* dbd);
00211 #endif
00212 };
00213
00214
00216 class MYSQLPP_EXPORT MultiResultsOption : public BooleanOption
00217 {
00218 #if !defined(DOXYGEN_IGNORE)
00219 public:
00220 MultiResultsOption(ArgType arg) : BooleanOption(arg) { }
00221
00222 private:
00223 Error set(DBDriver* dbd);
00224 #endif
00225 };
00226
00227
00229 class MYSQLPP_EXPORT MultiStatementsOption : public BooleanOption
00230 {
00231 #if !defined(DOXYGEN_IGNORE)
00232 public:
00233 MultiStatementsOption(ArgType arg) : BooleanOption(arg) { }
00234
00235 private:
00236 Error set(DBDriver* dbd);
00237 #endif
00238 };
00239
00240
00242 class MYSQLPP_EXPORT NamedPipeOption : public Option
00243 {
00244 #if !defined(DOXYGEN_IGNORE)
00245 public:
00246 NamedPipeOption() : Option() { }
00247
00248 private:
00249 Error set(DBDriver* dbd);
00250 #endif
00251 };
00252
00253
00255 class MYSQLPP_EXPORT NoSchemaOption : public BooleanOption
00256 {
00257 #if !defined(DOXYGEN_IGNORE)
00258 public:
00259 NoSchemaOption(ArgType arg) : BooleanOption(arg) { }
00260
00261 private:
00262 Error set(DBDriver* dbd);
00263 #endif
00264 };
00265
00266
00267 #if MYSQL_VERSION_ID > 40000 // only in 4.0 +
00269 class MYSQLPP_EXPORT ProtocolOption : public IntegerOption
00270 {
00271 #if !defined(DOXYGEN_IGNORE)
00272 public:
00273 ProtocolOption(ArgType arg) : IntegerOption(arg) { }
00274
00275 private:
00276 Error set(DBDriver* dbd);
00277 #endif
00278 };
00279 #endif
00280
00281
00283 class MYSQLPP_EXPORT ReadDefaultFileOption : public StringOption
00284 {
00285 #if !defined(DOXYGEN_IGNORE)
00286 public:
00287 ReadDefaultFileOption(ArgType arg) : StringOption(arg) { }
00288
00289 private:
00290 Error set(DBDriver* dbd);
00291 #endif
00292 };
00293
00294
00296 class MYSQLPP_EXPORT ReadDefaultGroupOption : public StringOption
00297 {
00298 #if !defined(DOXYGEN_IGNORE)
00299 public:
00300 ReadDefaultGroupOption(ArgType arg) : StringOption(arg) { }
00301
00302 private:
00303 Error set(DBDriver* dbd);
00304 #endif
00305 };
00306
00307
00309 class MYSQLPP_EXPORT ReadTimeoutOption : public IntegerOption
00310 {
00311 #if !defined(DOXYGEN_IGNORE)
00312 public:
00313 ReadTimeoutOption(ArgType arg) : IntegerOption(arg) { }
00314
00315 private:
00316 Error set(DBDriver* dbd);
00317 #endif
00318 };
00319
00320
00322 class MYSQLPP_EXPORT ReconnectOption : public BooleanOption
00323 {
00324 #if !defined(DOXYGEN_IGNORE)
00325 public:
00326 ReconnectOption(ArgType arg) : BooleanOption(arg) { }
00327
00328 private:
00329 Error set(DBDriver* dbd);
00330 #endif
00331 };
00332
00333
00335 class MYSQLPP_EXPORT ReportDataTruncationOption : public BooleanOption
00336 {
00337 #if !defined(DOXYGEN_IGNORE)
00338 public:
00339 ReportDataTruncationOption(ArgType arg) : BooleanOption(arg) { }
00340
00341 private:
00342 Error set(DBDriver* dbd);
00343 #endif
00344 };
00345
00346
00349 class MYSQLPP_EXPORT SecureAuthOption : public BooleanOption
00350 {
00351 #if !defined(DOXYGEN_IGNORE)
00352 public:
00353 SecureAuthOption(ArgType arg) : BooleanOption(arg) { }
00354
00355 private:
00356 Error set(DBDriver* dbd);
00357 #endif
00358 };
00359
00360
00362 class MYSQLPP_EXPORT SetCharsetDirOption : public StringOption
00363 {
00364 #if !defined(DOXYGEN_IGNORE)
00365 public:
00366 SetCharsetDirOption(ArgType arg) : StringOption(arg) { }
00367
00368 private:
00369 Error set(DBDriver* dbd);
00370 #endif
00371 };
00372
00373
00375 class MYSQLPP_EXPORT SetCharsetNameOption : public StringOption
00376 {
00377 #if !defined(DOXYGEN_IGNORE)
00378 public:
00379 SetCharsetNameOption(ArgType arg) : StringOption(arg) { }
00380
00381 private:
00382 Error set(DBDriver* dbd);
00383 #endif
00384 };
00385
00386
00388 class MYSQLPP_EXPORT SetClientIpOption : public StringOption
00389 {
00390 #if !defined(DOXYGEN_IGNORE)
00391 public:
00392 SetClientIpOption(ArgType arg) : StringOption(arg) { }
00393
00394 private:
00395 Error set(DBDriver* dbd);
00396 #endif
00397 };
00398
00399
00401 class MYSQLPP_EXPORT SharedMemoryBaseNameOption : public StringOption
00402 {
00403 #if !defined(DOXYGEN_IGNORE)
00404 public:
00405 SharedMemoryBaseNameOption(ArgType arg) : StringOption(arg) { }
00406
00407 private:
00408 Error set(DBDriver* dbd);
00409 #endif
00410 };
00411
00412
00414 class MYSQLPP_EXPORT SslOption : public Option
00415 {
00416 public:
00429 SslOption(const char* key = 0, const char* cert = 0,
00430 const char* ca = 0, const char* capath = 0,
00431 const char* cipher = 0)
00432 {
00433 if (key) key_.assign(key);
00434 if (cert) cert_.assign(cert);
00435 if (ca) ca_.assign(ca);
00436 if (capath) capath_.assign(capath);
00437 if (cipher) cipher_.assign(cipher);
00438 }
00439
00440 private:
00441 std::string key_, cert_, ca_, capath_, cipher_;
00442 Error set(DBDriver* dbd);
00443 };
00444
00445
00447 class MYSQLPP_EXPORT UseEmbeddedConnectionOption : public Option
00448 {
00449 #if !defined(DOXYGEN_IGNORE)
00450 public:
00451 UseEmbeddedConnectionOption() : Option() { }
00452
00453 private:
00454 Error set(DBDriver* dbd);
00455 #endif
00456 };
00457
00458
00460 class MYSQLPP_EXPORT UseRemoteConnectionOption : public Option
00461 {
00462 #if !defined(DOXYGEN_IGNORE)
00463 public:
00464 UseRemoteConnectionOption() : Option() { }
00465
00466 private:
00467 Error set(DBDriver* dbd);
00468 #endif
00469 };
00470
00471
00473 class MYSQLPP_EXPORT WriteTimeoutOption : public IntegerOption
00474 {
00475 #if !defined(DOXYGEN_IGNORE)
00476 public:
00477 WriteTimeoutOption(ArgType arg) : IntegerOption(arg) { }
00478
00479 private:
00480 Error set(DBDriver* dbd);
00481 #endif
00482 };
00483
00484
00486
00487
00489 typedef std::deque<Option*> OptionList;
00490
00492 typedef OptionList::const_iterator OptionListIt;
00493
00494 }
00495
00496 #endif // !defined(MYSQLPP_OPTIONS_H)