dawncpp.h: Add nullptr ObjectBase constructor and assignment
BUG=dawn:3 Change-Id: I9f7ec0ae1c7885809888a603ed056c6565751bec Reviewed-on: https://dawn-review.googlesource.com/c/2840 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Stephen White <senorblanco@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
parent
f0b761f116
commit
f48e6b74b7
|
@ -97,6 +97,15 @@ namespace dawn {
|
||||||
return static_cast<Derived&>(*this);
|
return static_cast<Derived&>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ObjectBase(nullptr_t) {}
|
||||||
|
Derived& operator=(nullptr_t) {
|
||||||
|
if (mHandle != nullptr) {
|
||||||
|
Derived::DawnRelease(mHandle);
|
||||||
|
mHandle = nullptr;
|
||||||
|
}
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
explicit operator bool() const {
|
explicit operator bool() const {
|
||||||
return mHandle != nullptr;
|
return mHandle != nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,3 +177,21 @@ TEST(ObjectBase, MoveAssignmentSelf) {
|
||||||
ASSERT_EQ(obj.Get(), &refcount);
|
ASSERT_EQ(obj.Get(), &refcount);
|
||||||
ASSERT_EQ(refcount, 2);
|
ASSERT_EQ(refcount, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test the constructor using nullptr
|
||||||
|
TEST(ObjectBase, NullptrConstructor) {
|
||||||
|
Object obj(nullptr);
|
||||||
|
ASSERT_EQ(obj.Get(), nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test assigning nullptr to the object
|
||||||
|
TEST(ObjectBase, AssignNullptr) {
|
||||||
|
int refcount = 1;
|
||||||
|
|
||||||
|
Object obj(&refcount);
|
||||||
|
ASSERT_EQ(refcount, 2);
|
||||||
|
|
||||||
|
obj = nullptr;
|
||||||
|
ASSERT_EQ(refcount, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue