OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/values.h" | 5 #include "base/values.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 Value::Value(StringPiece in_string) : Value(in_string.as_string()) {} | 160 Value::Value(StringPiece in_string) : Value(in_string.as_string()) {} |
161 | 161 |
162 Value::Value(const std::vector<char>& in_blob) : type_(Type::BINARY) { | 162 Value::Value(const std::vector<char>& in_blob) : type_(Type::BINARY) { |
163 binary_value_.Init(in_blob); | 163 binary_value_.Init(in_blob); |
164 } | 164 } |
165 | 165 |
166 Value::Value(std::vector<char>&& in_blob) noexcept : type_(Type::BINARY) { | 166 Value::Value(std::vector<char>&& in_blob) noexcept : type_(Type::BINARY) { |
167 binary_value_.Init(std::move(in_blob)); | 167 binary_value_.Init(std::move(in_blob)); |
168 } | 168 } |
169 | 169 |
170 Value::Value(DictStorage&& in_dict) noexcept : type_(Type::DICTIONARY) { | |
171 dict_ptr_.Init(MakeUnique<DictStorage>(std::move(in_dict))); | |
172 } | |
173 | |
174 Value& Value::operator=(const Value& that) { | 170 Value& Value::operator=(const Value& that) { |
175 if (type_ == that.type_) { | 171 if (type_ == that.type_) { |
176 InternalCopyAssignFromSameType(that); | 172 InternalCopyAssignFromSameType(that); |
177 } else { | 173 } else { |
178 // This is not a self assignment because the type_ doesn't match. | 174 // This is not a self assignment because the type_ doesn't match. |
179 InternalCleanup(); | 175 InternalCleanup(); |
180 InternalCopyConstructFrom(that); | 176 InternalCopyConstructFrom(that); |
181 } | 177 } |
182 | 178 |
183 return *this; | 179 return *this; |
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1341 } | 1337 } |
1342 | 1338 |
1343 std::ostream& operator<<(std::ostream& out, const Value::Type& type) { | 1339 std::ostream& operator<<(std::ostream& out, const Value::Type& type) { |
1344 if (static_cast<int>(type) < 0 || | 1340 if (static_cast<int>(type) < 0 || |
1345 static_cast<size_t>(type) >= arraysize(kTypeNames)) | 1341 static_cast<size_t>(type) >= arraysize(kTypeNames)) |
1346 return out << "Invalid Type (index = " << static_cast<int>(type) << ")"; | 1342 return out << "Invalid Type (index = " << static_cast<int>(type) << ")"; |
1347 return out << Value::GetTypeName(type); | 1343 return out << Value::GetTypeName(type); |
1348 } | 1344 } |
1349 | 1345 |
1350 } // namespace base | 1346 } // namespace base |
OLD | NEW |