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 #ifndef MYSQLPP_CONVERT_H
00032 #define MYSQLPP_CONVERT_H
00033
00034 #include "common.h"
00035
00036 #include <stdlib.h>
00037
00038 namespace mysqlpp {
00039
00040 #if !defined(DOXYGEN_IGNORE)
00041
00042
00043 template <class Type> class mysql_convert;
00044
00045 #define mysql__convert(TYPE, FUNC) \
00046 template <> \
00047 class mysql_convert<TYPE> {\
00048 public:\
00049 mysql_convert(const char* str, const char *& end) { \
00050 num_ = FUNC(str, const_cast<char **>(&end));}\
00051 operator TYPE () {return num_;}\
00052 private:\
00053 TYPE num_;\
00054 };\
00055
00056 #if defined(_MSC_VER)
00057 # pragma warning(disable: 4244)
00058 #endif
00059
00060 mysql__convert(float, strtod)
00061 mysql__convert(double, strtod)
00062
00063 #if defined(_MSC_VER)
00064 # pragma warning(default: 4244)
00065 #endif
00066
00067 #undef mysql__convert
00068 #define mysql__convert(TYPE, FUNC) \
00069 template <> \
00070 class mysql_convert<TYPE> {\
00071 public:\
00072 mysql_convert(const char* str, const char *& end) { \
00073 num_ = FUNC(str, const_cast<char **>(&end),10);}\
00074 operator TYPE () {return num_;}\
00075 private:\
00076 TYPE num_;\
00077 };\
00078
00079 #if defined(_MSC_VER)
00080 # pragma warning(disable: 4244)
00081 #endif
00082
00083 mysql__convert(char, strtol)
00084 mysql__convert(signed char, strtol)
00085 mysql__convert(int, strtol)
00086 mysql__convert(short int, strtol)
00087 mysql__convert(long int, strtol)
00088
00089 mysql__convert(unsigned char, strtoul)
00090 mysql__convert(unsigned int, strtoul)
00091 mysql__convert(unsigned short int, strtoul)
00092 mysql__convert(unsigned long int, strtoul)
00093
00094 #if defined(_MSC_VER)
00095 # pragma warning(default: 4244)
00096 #endif
00097
00098 #if !defined(NO_LONG_LONGS)
00099 #if defined(_MSC_VER)
00100
00101 mysql__convert(longlong, _strtoi64)
00102 mysql__convert(ulonglong, _strtoui64)
00103 #else
00104
00105
00106
00107 mysql__convert(longlong, strtoll)
00108 mysql__convert(ulonglong, strtoull)
00109 #endif
00110 #endif // !defined(NO_LONG_LONGS)
00111
00112 #endif // !defined(DOXYGEN_IGNORE)
00113
00114 }
00115
00116 #endif
00117