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

📄 ocicoll.h

📁 一个通用的oracle OCI开发程序包
💻 H
字号:
#ifndef _COCICollection
#define _COCICollection

#ifndef _COCIBase
#include "ocibase.h"
#endif

// forward declaration of COCICollection ITERATOR T

template<class T> class ITERATOR;


template<class T>
class COCICollection : public COCIBase
{
public:
  typedef ITERATOR<T> iterator;

  COCICollection(const COCISession& Sess, COCIType T);
  COCICollection(const COCISession& Sess, dvoid* instance, COCIType T);
  COCICollection(const COCICollection<T>& src);
  ~COCICollection();

public:
  void append(const T& src);
  void assign(const T& src, sb4 index);
  T get_elem(sb4 index);
  sb4 max_size(void);
  virtual sb4 size(void);
  void trim(sb4 trim_num);

  COCIObject& get_obj(){return m_CollObj;} // Returns collection object (NOT object contained in collection)
  COCIType&   get_type(){return m_Type;}
  virtual dvoid*& get_instance(){return get_obj().get_instance();}
  virtual dvoid* get_null_struct(){return get_obj().get_null_struct();}

  //virtual std::vector<T> get_elements();

  const COCISession& get_session(){return m_Session;}

  OCIType* get_element_type();

  COCICollection<T>& operator = (const COCICollection<T>& src);

  T operator[](size_t);
  const T operator[](size_t) const;
  bool empty() const;
  void resize(size_t new_size);


  iterator begin();
  iterator end();


private:
  const COCISession& m_Session;
  // The T of collection
  COCIType     m_Type;
  // The object to which this collection is associated
  COCIObject m_CollObj;

  OCITypeCode    m_typecode;

private:

    T subscript(size_t);

    T*     body;  // actual COCICollection elements
    size_t length; // number of actual COCICollection elements
    size_t limit;  // maximum possible length

};

template<class T>
class ITERATOR
{
public:

    // note that default copy construction, assignment and destruction are OK

    ITERATOR();

    T operator*() const;
    T* operator->() const;

    ITERATOR &operator++();
    ITERATOR operator++(int);

    ITERATOR &operator--();
    ITERATOR operator--(int);

    bool operator==(const ITERATOR &) const;
    bool operator!=(const ITERATOR &) const;

private:

    friend class COCICollection<T>;

    ITERATOR(COCICollection<T> *, size_t);

    COCICollection<T> *iterand;
    size_t      offset;

};


#include "ocicoll.inl"

#endif // _COCICollection

⌨️ 快捷键说明

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