예제 #1
0
    WeakPtr(const WeakPtr& src)
        : ptr(src.getRawPtr())
#ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS
        , heapObjectCounters(HeapObjectRefManipulator::getHeapObjectCounters(ptr))
#endif
    {
        ASSERT(this != &src);
        HeapObjectRefManipulator::incWeakCounter(getHeapObjectCounters());
    }
예제 #2
0
    WeakPtr(const WeakPtr<S>& src)
    {
        if (src.isValid()) {
            ptr = src.getRawPtr();
#ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS
            heapObjectCounters = HeapObjectRefManipulator::getHeapObjectCounters(ptr);
#endif
            HeapObjectRefManipulator::incWeakCounter(getHeapObjectCounters());
        } else {
            ptr = NULL;
#ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS
            heapObjectCounters = NULL;
#endif
        }
    }