#ifndef DeprecatedArray_h
#define DeprecatedArray_h
#include "ArrayImpl.h"
#include <wtf/Platform.h>
namespace WebCore {
template <class T> class DeprecatedArray {
public:
DeprecatedArray() : impl(sizeof(T)) { }
DeprecatedArray(int i) : impl(sizeof(T), i) { }
bool isEmpty() { return impl.size() == 0; }
T &at(unsigned u) { return *(T *)impl.at(u); }
const T &at(unsigned u) const { return *(T *)impl.at(u); }
T *data() { return (T *)impl.data(); }
const T *data() const { return (T *)impl.data(); }
unsigned size() const { return impl.size(); }
unsigned count() const { return impl.size(); }
bool resize(unsigned size) { return impl.resize(size); }
DeprecatedArray<T>& duplicate(const DeprecatedArray<T> &a) { impl.duplicate(a.data(), a.size()); return *this; }
DeprecatedArray<T>& duplicate(const T *data, int size) { impl.duplicate(data, size); return *this; }
void detach() { impl.detach(); }
bool fill(const T &item, int size=-1) { return impl.fill(&item, size); }
DeprecatedArray<T>& assign(const DeprecatedArray<T> &a) { return *this = a; }
T &operator[](int i) { return *(T *)impl.at(i); }
const T &operator[](int i) const { return *(T *)impl.at(i); }
#if PLATFORM(WIN_OS)
T &operator[](unsigned i) { return *(T *)impl.at(i); }
const T &operator[](unsigned i) const { return *(T *)impl.at(i); }
#endif
bool operator==(const DeprecatedArray<T> &a) const { return impl == a.impl; }
bool operator!=(const DeprecatedArray<T> &a) const { return !(*this == a); }
operator const T*() const { return data(); }
private:
ArrayImpl impl;
};
typedef DeprecatedArray<char> DeprecatedByteArray;
}
#endif // DeprecatedArray_h