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:
Corentin Wallez 2018-12-04 12:13:03 +00:00 committed by Commit Bot service account
parent f0b761f116
commit f48e6b74b7
2 changed files with 27 additions and 0 deletions

View File

@ -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;
} }

View File

@ -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);
}