#ifndef SVGPathByteStream_h
#define SVGPathByteStream_h
#include "wtf/Noncopyable.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/Vector.h"
namespace WebCore {
template<typename DataType>
union ByteType {
DataType value;
unsigned char bytes[sizeof(DataType)];
};
class SVGPathByteStream {
WTF_MAKE_FAST_ALLOCATED;
public:
static PassOwnPtr<SVGPathByteStream> create()
{
return adoptPtr(new SVGPathByteStream);
}
PassOwnPtr<SVGPathByteStream> copy() const
{
return adoptPtr(new SVGPathByteStream(m_data));
}
typedef Vector<unsigned char> Data;
typedef Data::const_iterator DataIterator;
DataIterator begin() const { return m_data.begin(); }
DataIterator end() const { return m_data.end(); }
void append(unsigned char byte) { m_data.append(byte); }
void append(SVGPathByteStream* other) { m_data.appendVector(other->m_data); }
void clear() { m_data.clear(); }
void reserveInitialCapacity(size_t size) { m_data.reserveInitialCapacity(size); }
void shrinkToFit() { m_data.shrinkToFit(); }
bool isEmpty() const { return m_data.isEmpty(); }
unsigned size() const { return m_data.size(); }
private:
SVGPathByteStream() { }
SVGPathByteStream(const Data& data)
: m_data(data)
{
}
Data m_data;
};
}
#endif