⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvariant.h

📁 很好用的数据库连接组件
💻 H
字号:
#ifndef CVARIANT_H#define CVARIANT_H#include <string>#include <string.h>#include <stdio.h>#include <stdlib.h>#include "CDate.h"#include "CSqlShared.h"# if defined(_REENTRANT)#include "mymutex.h"#include "mymutexpool_p.h"# endifusing namespace std;class CVariant{public:  enum Type//定义支持的数据类型  {    Invalid = 0,//无效类型    Bool = 1,//bool类型    UShort = 2,//无符号短整数    Short = 3,//短整数    UInt = 4,//无符号整数    Int = 5,//整数    ULong = 6,//无符号长整数    Long = 7,//长整数    Float = 8,//单精度浮点数    Double = 9,//双精度浮点数    Pchar = 10 ,//字符串指针    mydate = 11 //时间类  };    CVariant ();//构造空的CVariant类型    CVariant (const CVariant &);//拷贝构造CVariant类型    CVariant (bool val);//以布尔型构造CVariant类型    CVariant (unsigned short val);//以无符号短整数构造CVariant类型    CVariant (short val);//以短整数构造CVariant类型    CVariant (unsigned int val);//以无符号整数构造CVariant类型    CVariant (int val);//以整数构造CVariant类型    CVariant (unsigned long val);//以无符号长整数构造CVariant类型    CVariant (long val);//以长整数构造CVariant类型    CVariant (float val);//以单精度浮点数构造CVariant类型    CVariant (double val);//以双精度浮点数构造CVariant类型    CVariant (const char *val);//以字符串构造CVariant类型    CVariant (const CDate_T& val);//以CDate_T类构造CVariant类型   ~CVariant ();//析构CVariant类型  CVariant & operator = (const CVariant &);//支持=运算符  bool operator == (const CVariant &) const  ;//支持==运算符  bool operator != (const CVariant &) const ;//支持!=运算符  operator bool(void) {  	return this->toBool();  }  operator unsigned short(void) {  	return this->toUShort();  }  operator short(void) {  	return this->toShort();  }  operator unsigned int(void) {  	return this->toUInt();  }  operator int(void) {  	return this->toInt();  }  operator unsigned long(void) {  	return this->toULong();  }  operator long(void) {  	return this->toLong();  }  operator float(void) {  	return this->toFloat();  }  operator double(void) {  	return this->toDouble();  }  operator const char*(void) {  	return this->toPchar();  }  operator CDate_T(void) {  	return this->toMyDate();  }  inline Type type () const;//返回当前类型  const char *typeName () const;//返回当前类型名  bool canCast (Type) const;//当前类型能否转化为参数中类型  bool cast (Type);//将当前类型转化为参数中类型  inline bool isValid () const;//是否是无效类型  bool isNull () const;//是否是空值  void clear ();//清除数据  bool toBool () const;//将当前值转化为bool型返回,但不改变当前类型  unsigned short toUShort (bool * ok = NULL) const;//将当前值转化为unsigned short型返回,但不改变当前类型,结果放入ok  short toShort (bool * ok = NULL) const;//将当前值转化为short型返回,但不改变当前类型,结果放入ok  unsigned int toUInt (bool * ok = NULL) const;//将当前值转化为unsigned int型返回,但不改变当前类型,结果放入ok  int toInt (bool * ok = NULL) const;//将当前值转化为int型返回,但不改变当前类型,结果放入ok  unsigned long  toULong (bool * ok = NULL) const;//将当前值转化为unsigned long型返回,但不改变当前类型,结果放入ok  long  toLong (bool * ok = NULL) const;//将当前值转化为int型返回,但不改变当前类型,结果放入ok  float toFloat (bool * ok = NULL) const;//将当前值转化为double型返回,但不改变当前类型,结果放入ok  double toDouble (bool * ok = NULL) const;//将当前值转化为double型返回,但不改变当前类型,结果放入ok  const char *toPchar (bool * ok = NULL) const ;//将当前值转化为const char*型返回,但不改变当前类型,结果放入ok  CDate_T toMyDate (bool * ok = NULL) const;//将当前值转化为CDate_T型返回,但不改变当前类型,结果放入ok  bool asBool ();//将CVariant中的内部类型及值转化为bool  unsigned short asUShort ();//将CVariant中的内部类型及值转化为unsigned short  short asShort ();//将CVariant中的内部类型及值转化为short  unsigned int asUInt ();//将CVariant中的内部类型及值转化为unsigned int  int asInt ();//将CVariant中的内部类型及值转化为int  unsigned long asULong ();//将CVariant中的内部类型及值转化为unsigned long  long asLong ();//将CVariant中的内部类型及值转化为long  float asFloat ();//将CVariant中的内部类型及值转化为double  double asDouble ();//将CVariant中的内部类型及值转化为float   const char *asPchar ();//将CVariant中的内部类型及值转化为const char*  CDate_T asMyDate ();////将CVariant中的内部类型及值转化为CDate_T  static const char *typeToName (Type typ);//返回类型对应的名字  static Type nameToType (const char *name);//返回名字对应的类型private:  void detach ();//脱离对当前值的依赖,建立自己的值拷贝  bool str_can_double (const char *pszStr) const;//字符串能否转化为double  bool str_can_long (const char *pszStr) const;//字符串能否转化为long  class Private:public CShared//继承自CShared的私有类  {  public:    Private ();    Private (Private *);    ~Private ();    void clear ();//清除数据    Type typ;//当前值的类型    union     {      bool b;      unsigned short us;      short s;      unsigned int ui;      int i;      unsigned long ul;      long l;      float f;      double d;      char *ptr;      CDate_T* date;    }    value;//当前值  };// static  std::string i_temp;  Private *d;//私有类指针};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -