38 typedef std::vector<std::string> container_t;
39 typedef container_t::iterator iterator;
40 typedef container_t::const_iterator const_iterator;
45 m_values.emplace_back(std::string());
48 explicit WSHeader(
const std::string& name)
51 m_values.emplace_back(std::string());
54 WSHeader(
const std::string& name,
const std::string& value)
57 m_values.emplace_back(value);
60 explicit WSHeader(
const WSHeader& o)
61 : m_name(o.m_name), m_values(o.m_values)
64 virtual ~WSHeader() { }
66 void SetName(
const std::string& name) { m_name.assign(name); }
67 void SetName(
const char * buf,
size_t n) { m_name.assign(buf, n); }
69 std::string Key()
const
71 std::string key(m_name);
72 std::transform(key.begin(), key.end(), key.begin(), ::toupper);
76 const std::string& Name()
const {
return m_name; }
77 const std::string& Last()
const {
return m_values.back(); }
78 std::string& Back() {
return m_values.back(); }
80 iterator begin() {
return m_values.begin(); }
81 iterator end() {
return m_values.end(); }
82 const_iterator cbegin() {
return m_values.cbegin(); }
83 const_iterator cend() {
return m_values.cend(); }
85 void AddValue(
const std::string& value)
87 if (m_values.back().empty())
88 m_values.back().assign(value);
90 m_values.emplace_back(value);
93 void SetValue(
const std::string& value)
96 m_values.emplace_back(value);
99 void MergeValue(
const std::string& value)
101 if (m_values.back().empty())
102 m_values.back().assign(value);
104 m_values.back().append(
",").append(value);
109 container_t m_values;