00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __MySQLaux_TypedField_h__
00025 #define __MySQLaux_TypedField_h__
00026
00027 #include "Exception.h"
00028 #include "Field.h"
00029 #include <sstream>
00030
00031 namespace MySQLaux
00032 {
00038 template<class T>
00039 class TypedField
00040 : public Field
00041 {
00042 private:
00043 T _value;
00044 public:
00045 #if 0
00046
00052 TypedField (std::string const & name,
00053 T const & value)
00054 : Field (name),
00055 _value (value)
00056 {
00057 }
00058 #endif
00059
00065 TypedField (std::string const & name,
00066 std::string const & data)
00067 : Field (name)
00068 {
00069 std::istringstream is (data);
00070 is >> _value;
00071 }
00072
00077 TypedField (string const & name)
00078 : Field (name, true)
00079 {
00080 }
00081
00085 T const & value() const
00086 throw (NullFieldIndicator)
00087 {
00088 if (_is_null)
00089 throw NullFieldIndicator ();
00090 return _value;
00091 }
00092
00096 std::string to_string () const
00097 throw (NullFieldIndicator)
00098 {
00099 if (_is_null)
00100 throw NullFieldIndicator ();
00101
00102 std::ostringstream os;
00103 os << _value;
00104 return os.str();
00105 }
00106
00110 std::size_t size () const { return sizeof(_value); }
00111 };
00112 }
00113
00114 #endif // __MySQLaux_TypedField_h__
00115
00116
00117
00118
00119
00120
00121
00122
00123