1 #ifndef ___HGL___REF_DELETE___
2 #define ___HGL___REF_DELETE___
7 0になったときに、保持してあるオブジェクトを破棄するための
9 smart_ptr中で、配列と非配列オブジェクトとを区別するために
12 class ref_delete_base {
15 virtual ~ref_delete_base() {}
20 これを実行したとき、参照カウントが0になったら、do_deleteを
23 @return bool true:削除済み false:未削除
51 int getRef() const {return m_nRef;}
60 void setRef(int i) {m_nRef = i;}
69 void setOwner(bool b) {m_bOwner = b;}
77 bool getOwner() {return m_bOwner;}
85 int getObjSize() const {return m_nObjSize;}
90 @param int i オブジェクトサイズ
94 void setObjSize(int i) {m_nObjSize = i;}
102 int getMaxNum() const {return m_nMaxNum;}
107 @param int i 最大インデックス
111 void setMaxNum(int i) {m_nMaxNum = i;}
115 参照カウントがゼロになった際に実行される。
116 主に、deleteとdelete[]の違いを埋めるために使う
120 virtual void do_delete() = 0;
126 int m_nMaxNum; //最大インデックス
127 int m_nObjSize; //オブジェクトのサイズ
137 class ref_noarray_object : public ref_delete_base {
140 ref_noarray_object(T* p) : m_pObj(p) {}
142 virtual void do_delete() {
143 if (m_pObj != NULL) {
160 class ref_array_object : public ref_delete_base {
163 ref_array_object(T* p) : m_pObj(p) {}
165 virtual void do_delete() {
167 if (m_pObj != NULL) {
184 class ref_null_object : public ref_delete_base{
187 ref_null_object(T* p) : m_pObj(p) {}
189 virtual void do_delete() {