ソースを参照

LibHTTP: Make HeaderMap movable and copyable

Ali Mohammad Pur 8 ヶ月 前
コミット
7f72c28e78
1 ファイル変更14 行追加4 行削除
  1. 14 4
      Libraries/LibHTTP/HeaderMap.h

+ 14 - 4
Libraries/LibHTTP/HeaderMap.h

@@ -15,6 +15,19 @@ public:
     HeaderMap() = default;
     ~HeaderMap() = default;
 
+    HeaderMap(Vector<Header> headers)
+        : m_headers(move(headers))
+    {
+        for (auto& header : m_headers)
+            m_map.set(header.name, header.value);
+    }
+
+    HeaderMap(HeaderMap const&) = default;
+    HeaderMap(HeaderMap&&) = default;
+
+    HeaderMap& operator=(HeaderMap const&) = default;
+    HeaderMap& operator=(HeaderMap&&) = default;
+
     void set(ByteString name, ByteString value)
     {
         m_map.set(name, value);
@@ -56,10 +69,7 @@ template<>
 inline ErrorOr<HTTP::HeaderMap> decode(Decoder& decoder)
 {
     auto headers = TRY(decoder.decode<Vector<HTTP::Header>>());
-    HTTP::HeaderMap header_map;
-    for (auto& header : headers)
-        header_map.set(move(header.name), move(header.value));
-    return header_map;
+    return HTTP::HeaderMap { move(headers) };
 }
 
 }