#ifndef HeapTerminatedArray_h
#define HeapTerminatedArray_h
#include "platform/heap/Heap.h"
#include "wtf/TerminatedArray.h"
#include "wtf/TerminatedArrayBuilder.h"
namespace WebCore {
template<typename T>
class HeapTerminatedArray : public TerminatedArray<T> {
DISALLOW_ALLOCATION();
public:
using TerminatedArray<T>::begin;
using TerminatedArray<T>::end;
void trace(Visitor* visitor)
{
for (typename TerminatedArray<T>::iterator it = begin(); it != end(); ++it)
visitor->trace(*it);
}
private:
struct Allocator {
typedef HeapTerminatedArray* PassPtr;
typedef RawPtr<HeapTerminatedArray> Ptr;
static PassPtr create(size_t capacity)
{
return reinterpret_cast<HeapTerminatedArray*>(Heap::allocate<HeapTerminatedArray>(capacity * sizeof(T)));
}
static PassPtr resize(PassPtr ptr, size_t capacity)
{
return reinterpret_cast<HeapTerminatedArray*>(Heap::reallocate<HeapTerminatedArray>(ptr, capacity * sizeof(T)));
}
};
HeapTerminatedArray();
template<typename U, template <typename> class> friend class WTF::TerminatedArrayBuilder;
};
}
#endif