AK: Simplify NonnullPtrVector template a bit.

Add an "ElementType" typedef to NonnullOwnPtr and NonnullRefPtr to allow
clients to easily find the pointee type. Then use this to remove a template
argument from NonnullPtrVector. :^)
This commit is contained in:
Andreas Kling 2019-07-25 11:10:28 +02:00
parent 10d120dc85
commit 6a5446d6dd
Notes: sideshowbarker 2024-07-19 13:04:05 +09:00
5 changed files with 9 additions and 6 deletions

View file

@ -18,6 +18,8 @@ class WeakPtr;
template<typename T>
class CONSUMABLE(unconsumed) NonnullOwnPtr {
public:
typedef T ElementType;
enum AdoptTag { Adopt };
RETURN_TYPESTATE(unconsumed)

View file

@ -6,7 +6,7 @@
namespace AK {
template<typename T, int inline_capacity = 0>
class NonnullOwnPtrVector : public NonnullPtrVector<NonnullOwnPtr<T>, T, inline_capacity>
class NonnullOwnPtrVector : public NonnullPtrVector<NonnullOwnPtr<T>, inline_capacity>
{
};

View file

@ -4,8 +4,9 @@
namespace AK {
template<typename PtrType, typename T, int inline_capacity = 0>
template<typename PtrType, int inline_capacity = 0>
class NonnullPtrVector : public Vector<PtrType, inline_capacity> {
typedef typename PtrType::ElementType T;
typedef Vector<PtrType, inline_capacity> Base;
public:

View file

@ -26,9 +26,9 @@ inline void deref_if_not_null(T* ptr)
template<typename T>
class CONSUMABLE(unconsumed) NonnullRefPtr {
public:
enum AdoptTag {
Adopt
};
typedef T ElementType;
enum AdoptTag { Adopt };
RETURN_TYPESTATE(unconsumed)
NonnullRefPtr(const T& object)

View file

@ -6,7 +6,7 @@
namespace AK {
template<typename T, int inline_capacity = 0>
class NonnullRefPtrVector : public NonnullPtrVector<NonnullRefPtr<T>, T, inline_capacity>
class NonnullRefPtrVector : public NonnullPtrVector<NonnullRefPtr<T>, inline_capacity>
{
};