#include "config.h"
#include "FormData.h"
#include <wtf/Vector.h>
namespace WebCore {
FormData::FormData()
{
}
FormData::FormData(const DeprecatedCString &s)
{
appendData(s.data(), s.length());
}
void FormData::appendData(const void *data, size_t size)
{
if (m_elements.isEmpty() || m_elements.last().m_type != FormDataElement::data) {
m_elements.append(FormDataElement());
}
FormDataElement &e = m_elements.last();
size_t oldSize = e.m_data.size();
e.m_data.resize(oldSize + size);
memcpy(e.m_data.data() + oldSize, data, size);
}
void FormData::appendFile(const DeprecatedString &filename)
{
m_elements.append(filename);
}
Vector<char> FormData::flatten() const
{
Vector<char> a;
for (DeprecatedValueListConstIterator<FormDataElement> it = m_elements.begin(); it != m_elements.end(); ++it) {
const FormDataElement& e = *it;
if (e.m_type == FormDataElement::data) {
if (a.isEmpty())
a = e.m_data;
else {
size_t oldSize = a.size();
size_t delta = e.m_data.size();
a.resize(oldSize + delta);
memcpy(a.data() + oldSize, e.m_data.data(), delta);
}
}
}
return a;
}
DeprecatedString FormData::flattenToString() const
{
Vector<char> bytes = flatten();
return DeprecatedString::fromLatin1(bytes.data(), bytes.size());
}
}