convert1.hh
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef __convert1_hh__
  2. #define __convert1_hh__
  3. using namespace std ;
  4. #include <stdlib.h>
  5. #include "defs.h"
  6. template <class Type> class mysql_convert;
  7. #define mysql__convert(TYPE, FUNC) 
  8.   template <> 
  9.   class mysql_convert<TYPE> { 
  10.   private:
  11.     TYPE num;
  12.   public:
  13.     mysql_convert(const char* str, const char *& end) { 
  14.       num = FUNC(str, const_cast<char **>(&end));}
  15.     operator TYPE () {return num;}
  16.   } 
  17. //extern double strtod (const char *, char **);
  18. mysql__convert(float, strtod);
  19. mysql__convert(double, strtod);
  20. //-----------------------------------------------------------------
  21. #undef mysql__convert
  22. #define mysql__convert(TYPE, FUNC) 
  23.   template <> 
  24.   class mysql_convert<TYPE> {
  25.   private:
  26.     TYPE num;
  27.   public:
  28.     mysql_convert(const char* str, const char *& end) { 
  29.       num = FUNC(str, const_cast<char **>(&end),10);}
  30.     operator TYPE () {return num;}
  31.   }
  32. extern long strtol(const char *str, char **ptr, int base);
  33. extern unsigned long strtoul(const char *str, char **ptr, int base);
  34. mysql__convert(char, strtol);
  35. mysql__convert(signed char, strtol);
  36. mysql__convert(int, strtol);
  37. mysql__convert(short int, strtol);
  38. mysql__convert(long int, strtol);
  39. mysql__convert(unsigned char, strtoul);
  40. mysql__convert(unsigned int, strtoul);
  41. mysql__convert(unsigned short int, strtoul);
  42. mysql__convert(unsigned long int, strtoul);
  43. #ifndef NO_LONG_LONGS
  44. #ifdef strtoull
  45. #undef strtoull
  46. #endif
  47. #ifdef strtoll
  48. #undef strtoll
  49. #endif
  50. extern "C" {
  51. extern char *longlong2str(longlong val,char *dst,int radix);
  52. extern char *longlong10_to_str(longlong val,char *dst,int radix);
  53. extern longlong strtoll(const char *nptr,char **endptr,int base);
  54. extern ulonglong strtoull(const char *nptr,char **endptr,int base);
  55. }
  56. mysql__convert(longlong, strtoll);
  57. mysql__convert(ulonglong, strtoull);
  58. #endif
  59. #endif