Bug 1195154 - Replace operator overloads for comparing nsRefPtr to 0 with those for comparing to nullptr. r=froydnj

--HG--
extra : source : 3303e551336985eca8b501dcc12cf6f2dddbdec3
This commit is contained in:
Xidorn Quan 2015-08-19 09:09:08 +10:00
Родитель 1c281c3c56
Коммит aedc156767
2 изменённых файлов: 20 добавлений и 28 удалений

Просмотреть файл

@ -549,42 +549,34 @@ operator!=(U* aLhs, const nsRefPtr<T>& aRhs)
return const_cast<const U*>(aLhs) != static_cast<const T*>(aRhs.get());
}
namespace detail {
class nsRefPtrZero;
} // namespace detail
// Comparing an |nsRefPtr| to |0|
// Comparing an |nsRefPtr| to |nullptr|
template <class T>
inline bool
operator==(const nsRefPtr<T>& aLhs, ::detail::nsRefPtrZero* aRhs)
// specifically to allow |smartPtr == 0|
operator==(const nsRefPtr<T>& aLhs, decltype(nullptr))
{
return static_cast<const void*>(aLhs.get()) == reinterpret_cast<const void*>(aRhs);
return aLhs.get() == nullptr;
}
template <class T>
inline bool
operator==(::detail::nsRefPtrZero* aLhs, const nsRefPtr<T>& aRhs)
// specifically to allow |0 == smartPtr|
operator==(decltype(nullptr), const nsRefPtr<T>& aRhs)
{
return reinterpret_cast<const void*>(aLhs) == static_cast<const void*>(aRhs.get());
return nullptr == aRhs.get();
}
template <class T>
inline bool
operator!=(const nsRefPtr<T>& aLhs, ::detail::nsRefPtrZero* aRhs)
// specifically to allow |smartPtr != 0|
operator!=(const nsRefPtr<T>& aLhs, decltype(nullptr))
{
return static_cast<const void*>(aLhs.get()) != reinterpret_cast<const void*>(aRhs);
return aLhs.get() != nullptr;
}
template <class T>
inline bool
operator!=(::detail::nsRefPtrZero* aLhs, const nsRefPtr<T>& aRhs)
// specifically to allow |0 != smartPtr|
operator!=(decltype(nullptr), const nsRefPtr<T>& aRhs)
{
return reinterpret_cast<const void*>(aLhs) != static_cast<const void*>(aRhs.get());
return nullptr != aRhs.get();
}
/*****************************************************************************/

Просмотреть файл

@ -451,15 +451,15 @@ main()
else
printf("foo1p == foo2p\n");
printf("\n### Test 7.5: can you compare a |nsCOMPtr| with NULL, 0, nullptr [!=]?\n");
if ( foo1p != 0 )
printf("foo1p != 0\n");
if ( 0 != foo1p )
printf("0 != foo1p\n");
if ( foo1p == 0 )
printf("foo1p == 0\n");
if ( 0 == foo1p )
printf("0 == foo1p\n");
printf("\n### Test 7.5: can you compare a |nsCOMPtr| with nullptr [!=]?\n");
if ( foo1p != nullptr )
printf("foo1p != nullptr\n");
if ( nullptr != foo1p )
printf("nullptr != foo1p\n");
if ( foo1p == nullptr )
printf("foo1p == nullptr\n");
if ( nullptr == foo1p )
printf("nullptr == foo1p\n");
Foo* raw_foo2p = foo2p.get();
@ -500,8 +500,8 @@ main()
else
printf("foo1p is NULL\n");
printf("\n### Test 13: numeric pointer test?\n");
if ( foo1p == 0 )
printf("\n### Test 13: null pointer test?\n");
if ( foo1p == nullptr )
printf("foo1p is NULL\n");
else
printf("foo1p is not NULL\n");