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 #ifndef MYSQLPP_FIELD_NAMES_H
00029 #define MYSQLPP_FIELD_NAMES_H
00030
00031 #include <string>
00032 #include <vector>
00033
00034 #include <ctype.h>
00035
00036 namespace mysqlpp {
00037
00038 #if !defined(DOXYGEN_IGNORE)
00039
00040 class MYSQLPP_EXPORT ResultBase;
00041 #endif
00042
00044 class FieldNames : public std::vector<std::string>
00045 {
00046 public:
00048 FieldNames() { }
00049
00051 FieldNames(const FieldNames& other) :
00052 std::vector<std::string>()
00053 {
00054 assign(other.begin(), other.end());
00055 }
00056
00058 FieldNames(const ResultBase* res) :
00059 std::vector<std::string>()
00060 {
00061 init(res);
00062 }
00063
00066 FieldNames(int i) :
00067 std::vector<std::string>(i)
00068 {
00069 }
00070
00072 FieldNames& operator =(const ResultBase* res)
00073 {
00074 init(res);
00075 return *this;
00076 }
00077
00079 FieldNames& operator =(int i)
00080 {
00081 insert(begin(), i, "");
00082 return *this;
00083 }
00084
00086 std::string& operator [](int i)
00087 {
00088 return at(i);
00089 }
00090
00093 const std::string& operator [](int i) const
00094 {
00095 return at(i);
00096 }
00097
00099 unsigned int operator [](const std::string& s) const;
00100
00101 private:
00102 void init(const ResultBase* res);
00103 void str_to_lwr(std::string& s) const
00104 {
00105 std::string::iterator it;
00106 for (it = s.begin(); it != s.end(); ++it) {
00107 *it = tolower(*it);
00108 }
00109 }
00110 };
00111
00112 }
00113
00114 #endif