📄 ocicoll.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 + -