KUDr@3900: /* $Id$ */ KUDr@3900: KUDr@3900: struct CData KUDr@3900: { KUDr@3900: int val; KUDr@3900: KUDr@3900: FORCEINLINE CData() : val(0) {NumInstances()++; /*DBG("DCata::ctor()\n");*/} KUDr@3900: FORCEINLINE CData(const CData& src) : val(src.val) {NumInstances()++; /*DBG("DCata::ctor(%d)\n", val);*/} KUDr@3900: FORCEINLINE ~CData() {NumInstances()--; /*DBG("DCata::dtor(%d)\n", val);*/} KUDr@3900: KUDr@3900: FORCEINLINE bool operator < (const CData& other) const {return (val < other.val);} KUDr@3900: KUDr@3900: FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; }; KUDr@3900: KUDr@3900: }; KUDr@3900: KUDr@3900: typedef CAutoCopyPtrT PData; KUDr@3900: KUDr@3900: static int TestAutoCopyPtr(bool silent) KUDr@3900: { KUDr@3900: int res = 0; KUDr@3900: { KUDr@3900: PData p1, p3; KUDr@3900: p1->val = 4; KUDr@3900: PData p2; p2 = p1; KUDr@3900: p2->val = 6; KUDr@3900: DBG("\n%d, %d", p1->val, p2->val); KUDr@3900: CHECK_INT(0, p1->val, 4); KUDr@3900: CHECK_INT(1, p2->val, 6); KUDr@3900: KUDr@3900: p2 = p1; KUDr@3900: p3 = p1; KUDr@3900: p2->val = 7; KUDr@3900: DBG("\n%d, %d", p1->val, p2->val); KUDr@3900: CHECK_INT(2, p3->val, 4); KUDr@3900: CHECK_INT(3, p2->val, 7); KUDr@3900: KUDr@3900: CHECK_INT(4, CData::NumInstances(), 3); KUDr@3900: } KUDr@3900: CHECK_INT(5, CData::NumInstances(), 0); KUDr@3900: return res; KUDr@3900: }