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

📄 ocinum.cpp

📁 一个通用的oracle OCI开发程序包
💻 CPP
📖 第 1 页 / 共 4 页
字号:
#ifndef _COCINumber
#include "ocinum.h"
#endif

#ifndef _COCISession
#include "ocisess.h"
#endif

#ifndef _INC_MEMORY
#include <memory.h>
#endif

#ifndef _INC_MALLOC
#include <malloc.h>
#endif

COCINumber::COCINumber(const COCISession& Sess)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NULL;
  // Initialise number to null
  set_null();

  // Keep a null number for comparison
  memset(&m_Null_Number, '\0', OCI_NUMBER_SIZE);
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}

COCINumber::~COCINumber()
{
}

COCINumber::COCINumber(const COCISession& Sess, dvoid* instance)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;

  memcpy(&m_Number, instance, OCI_NUMBER_SIZE);
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}

COCINumber::COCINumber(const COCISession& Sess, int num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(int),
                              OCI_NUMBER_SIGNED,
                              (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}  

COCINumber::COCINumber(const COCISession& Sess, unsigned int num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(unsigned int),
                              OCI_NUMBER_UNSIGNED,
                              (OCINumber *)&m_Number))

  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}  

COCINumber::COCINumber(const COCISession& Sess, short num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(short),
                              OCI_NUMBER_SIGNED,
                              (OCINumber *)&m_Number))

  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);

}  

COCINumber::COCINumber(const COCISession& Sess, unsigned short num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(unsigned short),
                              OCI_NUMBER_UNSIGNED,
                              (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);

}  

COCINumber::COCINumber(const COCISession& Sess, long num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(long),
                              OCI_NUMBER_SIGNED,
                              (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);

}  

COCINumber::COCINumber(const COCISession& Sess, unsigned long num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromInt(m_Session.get_error(),
                              &num, sizeof(unsigned long),
                              OCI_NUMBER_UNSIGNED,
                              (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}  

COCINumber::COCINumber(const COCISession& Sess, float num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromReal(m_Session.get_error(),
                               &num, sizeof(float),
                               (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);
}  

COCINumber::COCINumber(const COCISession& Sess, double num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromReal(m_Session.get_error(),
                               &num, sizeof(double),
                               (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);

}  

COCINumber::COCINumber(const COCISession& Sess, long double num)
: m_Session(Sess)
{
  m_Indicator = OCI_IND_NOTNULL;
  CHECK(m_Session.get_error(),
             OCINumberFromReal(m_Session.get_error(),
                               &num, sizeof(long double),
                               (OCINumber *)&m_Number))
  set_instance((dvoid*&)(m_pNumber = &m_Number));
  set_null_struct(&m_Null_Number);

}  

COCINumber::operator int () const
{
  int            temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(int), 
                            OCI_NUMBER_SIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator unsigned int () const
{

  unsigned int   temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(unsigned int), 
                            OCI_NUMBER_UNSIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator short () const
{
  short          temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(short), 
                            OCI_NUMBER_SIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator unsigned short () const
{

  unsigned short temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(unsigned short), 
                            OCI_NUMBER_UNSIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator long () const
{
  long           temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(long), 
                            OCI_NUMBER_SIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator unsigned long () const
{
  unsigned long  temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)&m_Number,
                            sizeof(unsigned long), 
                            OCI_NUMBER_UNSIGNED,
                            &temp))
  return temp;
}  

COCINumber::operator float () const
{
  float          temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)&m_Number,
                             sizeof(float), 
                             &temp))
  return temp;
}  

COCINumber::operator double () const
{
  double         temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)&m_Number,
                             sizeof(double), 
                             &temp))
  return temp;
}  

COCINumber::operator long double () const
{
  long double    temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)&m_Number,
                             sizeof(long double), 
                             &temp))
  return temp;
}

COCINumber & COCINumber::operator = (const COCINumber & Number)
{
  if(!((COCINumber&)Number).is_null())
  {
    CHECK(m_Session.get_error(),
                 OCINumberAssign(m_Session.get_error(),
                                 (OCINumber *)((COCINumber&)Number).get_oci_number(),
                                 (OCINumber *)get_oci_number()) )

    void* temp = &m_Number;
    set_instance(temp);
    set_null_struct(&m_Null_Number);
    m_Indicator = OCI_IND_NOTNULL;

  }
  else
  {
    set_null();
  }
  return *this;
}  


COCINumber & COCINumber::operator = (int num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (unsigned int num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (short num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (unsigned short num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (long num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (unsigned long num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (float num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (double num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

COCINumber & COCINumber::operator = (long double num)
{
  COCINumber RhsNumber(m_Session, num);
  *this = RhsNumber;
  return *this;
}  

bool COCINumber::operator == (const COCINumber & Number) const
{
  sword result = compare(*this, Number);
  return result ? false : true;
}  

bool operator == (const COCINumber& lhs, int rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, unsigned int rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, short rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, unsigned short rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, long rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, unsigned long rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, float rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, double rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (const COCINumber& lhs, long double rhs)
{
  return (lhs.operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == true);
}  

bool operator == (int lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (unsigned int lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (short lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (unsigned short lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (long lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (unsigned long lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (float lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (double lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator == (long double lhs, const COCINumber& rhs)
{
  return (rhs.operator==(COCINumber(((COCINumber&)rhs).get_session(),lhs)) == true);
}  

bool operator != (const COCINumber& lhs, int rhs)
{
  return (((COCINumber&)lhs).operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == false);
}  

bool operator != (const COCINumber& lhs, unsigned int rhs)
{
  return (((COCINumber&)lhs).operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == false);
}  

bool operator != (const COCINumber& lhs, short rhs)
{
  return (((COCINumber&)lhs).operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == false);
}  

bool operator != (const COCINumber& lhs, unsigned short rhs)
{
  return (((COCINumber&)lhs).operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == false);
}  

bool operator != (const COCINumber& lhs, long rhs)
{
  return (((COCINumber&)lhs).operator==(COCINumber(((COCINumber&)lhs).get_session(),rhs)) == false);

⌨️ 快捷键说明

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