|
@@ -52,13 +52,21 @@ protected:
|
|
Weak
|
|
Weak
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ ValueHandleBase(const ValueHandleBase &RHS)
|
|
|
|
+ : ValueHandleBase(RHS.PrevPair.getInt(), RHS) {}
|
|
|
|
+
|
|
|
|
+ ValueHandleBase(HandleBaseKind Kind, const ValueHandleBase &RHS)
|
|
|
|
+ : PrevPair(nullptr, Kind), Next(nullptr), V(RHS.V) {
|
|
|
|
+ if (isValid(V))
|
|
|
|
+ AddToExistingUseList(RHS.getPrevPtr());
|
|
|
|
+ }
|
|
|
|
+
|
|
private:
|
|
private:
|
|
PointerIntPair<ValueHandleBase**, 2, HandleBaseKind> PrevPair;
|
|
PointerIntPair<ValueHandleBase**, 2, HandleBaseKind> PrevPair;
|
|
ValueHandleBase *Next;
|
|
ValueHandleBase *Next;
|
|
|
|
|
|
Value* V;
|
|
Value* V;
|
|
|
|
|
|
- ValueHandleBase(const ValueHandleBase&) = delete;
|
|
|
|
public:
|
|
public:
|
|
explicit ValueHandleBase(HandleBaseKind Kind)
|
|
explicit ValueHandleBase(HandleBaseKind Kind)
|
|
: PrevPair(nullptr, Kind), Next(nullptr), V(nullptr) {}
|
|
: PrevPair(nullptr, Kind), Next(nullptr), V(nullptr) {}
|
|
@@ -67,11 +75,7 @@ public:
|
|
if (isValid(V))
|
|
if (isValid(V))
|
|
AddToUseList();
|
|
AddToUseList();
|
|
}
|
|
}
|
|
- ValueHandleBase(HandleBaseKind Kind, const ValueHandleBase &RHS)
|
|
|
|
- : PrevPair(nullptr, Kind), Next(nullptr), V(RHS.V) {
|
|
|
|
- if (isValid(V))
|
|
|
|
- AddToExistingUseList(RHS.getPrevPtr());
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
~ValueHandleBase() {
|
|
~ValueHandleBase() {
|
|
if (isValid(V))
|
|
if (isValid(V))
|
|
RemoveFromUseList();
|
|
RemoveFromUseList();
|
|
@@ -145,6 +149,8 @@ public:
|
|
WeakVH(const WeakVH &RHS)
|
|
WeakVH(const WeakVH &RHS)
|
|
: ValueHandleBase(Weak, RHS) {}
|
|
: ValueHandleBase(Weak, RHS) {}
|
|
|
|
|
|
|
|
+ WeakVH &operator=(const WeakVH &RHS) = default;
|
|
|
|
+
|
|
Value *operator=(Value *RHS) {
|
|
Value *operator=(Value *RHS) {
|
|
return ValueHandleBase::operator=(RHS);
|
|
return ValueHandleBase::operator=(RHS);
|
|
}
|
|
}
|
|
@@ -314,7 +320,6 @@ class TrackingVH : public ValueHandleBase {
|
|
public:
|
|
public:
|
|
TrackingVH() : ValueHandleBase(Tracking) {}
|
|
TrackingVH() : ValueHandleBase(Tracking) {}
|
|
TrackingVH(ValueTy *P) : ValueHandleBase(Tracking, GetAsValue(P)) {}
|
|
TrackingVH(ValueTy *P) : ValueHandleBase(Tracking, GetAsValue(P)) {}
|
|
- TrackingVH(const TrackingVH &RHS) : ValueHandleBase(Tracking, RHS) {}
|
|
|
|
|
|
|
|
operator ValueTy*() const {
|
|
operator ValueTy*() const {
|
|
return getValPtr();
|
|
return getValPtr();
|
|
@@ -324,10 +329,6 @@ public:
|
|
setValPtr(RHS);
|
|
setValPtr(RHS);
|
|
return getValPtr();
|
|
return getValPtr();
|
|
}
|
|
}
|
|
- ValueTy *operator=(const TrackingVH<ValueTy> &RHS) {
|
|
|
|
- setValPtr(RHS.getValPtr());
|
|
|
|
- return getValPtr();
|
|
|
|
- }
|
|
|
|
|
|
|
|
ValueTy *operator->() const { return getValPtr(); }
|
|
ValueTy *operator->() const { return getValPtr(); }
|
|
ValueTy &operator*() const { return *getValPtr(); }
|
|
ValueTy &operator*() const { return *getValPtr(); }
|
|
@@ -344,10 +345,9 @@ public:
|
|
class CallbackVH : public ValueHandleBase {
|
|
class CallbackVH : public ValueHandleBase {
|
|
virtual void anchor();
|
|
virtual void anchor();
|
|
protected:
|
|
protected:
|
|
- CallbackVH(const CallbackVH &RHS)
|
|
|
|
- : ValueHandleBase(Callback, RHS) {}
|
|
|
|
-
|
|
|
|
- virtual ~CallbackVH() {}
|
|
|
|
|
|
+ ~CallbackVH() = default;
|
|
|
|
+ CallbackVH(const CallbackVH &) = default;
|
|
|
|
+ CallbackVH &operator=(const CallbackVH &) = default;
|
|
|
|
|
|
void setValPtr(Value *P) {
|
|
void setValPtr(Value *P) {
|
|
ValueHandleBase::operator=(P);
|
|
ValueHandleBase::operator=(P);
|