| 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 static_cast<const DictionaryValue&>(node)); | 69 static_cast<const DictionaryValue&>(node)); |
| 70 | 70 |
| 71 default: | 71 default: |
| 72 return MakeUnique<Value>(node); | 72 return MakeUnique<Value>(node); |
| 73 } | 73 } |
| 74 } | 74 } |
| 75 | 75 |
| 76 } // namespace | 76 } // namespace |
| 77 | 77 |
| 78 // static | 78 // static |
| 79 std::unique_ptr<BinaryValue> BinaryValue::CreateWithCopiedBuffer( | 79 std::unique_ptr<Value> Value::CreateWithCopiedBuffer(const char* buffer, |
| 80 const char* buffer, | 80 size_t size) { |
| 81 size_t size) { | 81 return MakeUnique<Value>(std::vector<char>(buffer, buffer + size)); |
| 82 return MakeUnique<BinaryValue>(std::vector<char>(buffer, buffer + size)); | |
| 83 } | 82 } |
| 84 | 83 |
| 85 Value::Value(const Value& that) { | 84 Value::Value(const Value& that) { |
| 86 InternalCopyConstructFrom(that); | 85 InternalCopyConstructFrom(that); |
| 87 } | 86 } |
| 88 | 87 |
| 89 Value::Value(Value&& that) noexcept { | 88 Value::Value(Value&& that) noexcept { |
| 90 InternalMoveConstructFrom(std::move(that)); | 89 InternalMoveConstructFrom(std::move(that)); |
| 91 } | 90 } |
| 92 | 91 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 } | 290 } |
| 292 | 291 |
| 293 bool Value::GetAsString(StringPiece* out_value) const { | 292 bool Value::GetAsString(StringPiece* out_value) const { |
| 294 if (out_value && is_string()) { | 293 if (out_value && is_string()) { |
| 295 *out_value = *string_value_; | 294 *out_value = *string_value_; |
| 296 return true; | 295 return true; |
| 297 } | 296 } |
| 298 return is_string(); | 297 return is_string(); |
| 299 } | 298 } |
| 300 | 299 |
| 301 bool Value::GetAsBinary(const BinaryValue** out_value) const { | 300 bool Value::GetAsBinary(const Value** out_value) const { |
| 302 if (out_value && is_blob()) { | 301 if (out_value && is_blob()) { |
| 303 *out_value = this; | 302 *out_value = this; |
| 304 return true; | 303 return true; |
| 305 } | 304 } |
| 306 return is_blob(); | 305 return is_blob(); |
| 307 } | 306 } |
| 308 | 307 |
| 309 bool Value::GetAsList(ListValue** out_value) { | 308 bool Value::GetAsList(ListValue** out_value) { |
| 310 if (out_value && is_list()) { | 309 if (out_value && is_list()) { |
| 311 *out_value = static_cast<ListValue*>(this); | 310 *out_value = static_cast<ListValue*>(this); |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 if (!IsStringASCII(out)) { | 787 if (!IsStringASCII(out)) { |
| 789 NOTREACHED(); | 788 NOTREACHED(); |
| 790 return false; | 789 return false; |
| 791 } | 790 } |
| 792 | 791 |
| 793 out_value->assign(out); | 792 out_value->assign(out); |
| 794 return true; | 793 return true; |
| 795 } | 794 } |
| 796 | 795 |
| 797 bool DictionaryValue::GetBinary(StringPiece path, | 796 bool DictionaryValue::GetBinary(StringPiece path, |
| 798 const BinaryValue** out_value) const { | 797 const Value** out_value) const { |
| 799 const Value* value; | 798 const Value* value; |
| 800 bool result = Get(path, &value); | 799 bool result = Get(path, &value); |
| 801 if (!result || !value->IsType(Type::BINARY)) | 800 if (!result || !value->IsType(Type::BINARY)) |
| 802 return false; | 801 return false; |
| 803 | 802 |
| 804 if (out_value) | 803 if (out_value) |
| 805 *out_value = value; | 804 *out_value = value; |
| 806 | 805 |
| 807 return true; | 806 return true; |
| 808 } | 807 } |
| 809 | 808 |
| 810 bool DictionaryValue::GetBinary(StringPiece path, BinaryValue** out_value) { | 809 bool DictionaryValue::GetBinary(StringPiece path, Value** out_value) { |
| 811 return static_cast<const DictionaryValue&>(*this).GetBinary( | 810 return static_cast<const DictionaryValue&>(*this).GetBinary( |
| 812 path, | 811 path, const_cast<const Value**>(out_value)); |
| 813 const_cast<const BinaryValue**>(out_value)); | |
| 814 } | 812 } |
| 815 | 813 |
| 816 bool DictionaryValue::GetDictionary(StringPiece path, | 814 bool DictionaryValue::GetDictionary(StringPiece path, |
| 817 const DictionaryValue** out_value) const { | 815 const DictionaryValue** out_value) const { |
| 818 const Value* value; | 816 const Value* value; |
| 819 bool result = Get(path, &value); | 817 bool result = Get(path, &value); |
| 820 if (!result || !value->IsType(Type::DICTIONARY)) | 818 if (!result || !value->IsType(Type::DICTIONARY)) |
| 821 return false; | 819 return false; |
| 822 | 820 |
| 823 if (out_value) | 821 if (out_value) |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 } | 1147 } |
| 1150 | 1148 |
| 1151 bool ListValue::GetString(size_t index, string16* out_value) const { | 1149 bool ListValue::GetString(size_t index, string16* out_value) const { |
| 1152 const Value* value; | 1150 const Value* value; |
| 1153 if (!Get(index, &value)) | 1151 if (!Get(index, &value)) |
| 1154 return false; | 1152 return false; |
| 1155 | 1153 |
| 1156 return value->GetAsString(out_value); | 1154 return value->GetAsString(out_value); |
| 1157 } | 1155 } |
| 1158 | 1156 |
| 1159 bool ListValue::GetBinary(size_t index, const BinaryValue** out_value) const { | 1157 bool ListValue::GetBinary(size_t index, const Value** out_value) const { |
| 1160 const Value* value; | 1158 const Value* value; |
| 1161 bool result = Get(index, &value); | 1159 bool result = Get(index, &value); |
| 1162 if (!result || !value->IsType(Type::BINARY)) | 1160 if (!result || !value->IsType(Type::BINARY)) |
| 1163 return false; | 1161 return false; |
| 1164 | 1162 |
| 1165 if (out_value) | 1163 if (out_value) |
| 1166 *out_value = value; | 1164 *out_value = value; |
| 1167 | 1165 |
| 1168 return true; | 1166 return true; |
| 1169 } | 1167 } |
| 1170 | 1168 |
| 1171 bool ListValue::GetBinary(size_t index, BinaryValue** out_value) { | 1169 bool ListValue::GetBinary(size_t index, Value** out_value) { |
| 1172 return static_cast<const ListValue&>(*this).GetBinary( | 1170 return static_cast<const ListValue&>(*this).GetBinary( |
| 1173 index, | 1171 index, const_cast<const Value**>(out_value)); |
| 1174 const_cast<const BinaryValue**>(out_value)); | |
| 1175 } | 1172 } |
| 1176 | 1173 |
| 1177 bool ListValue::GetDictionary(size_t index, | 1174 bool ListValue::GetDictionary(size_t index, |
| 1178 const DictionaryValue** out_value) const { | 1175 const DictionaryValue** out_value) const { |
| 1179 const Value* value; | 1176 const Value* value; |
| 1180 bool result = Get(index, &value); | 1177 bool result = Get(index, &value); |
| 1181 if (!result || !value->IsType(Type::DICTIONARY)) | 1178 if (!result || !value->IsType(Type::DICTIONARY)) |
| 1182 return false; | 1179 return false; |
| 1183 | 1180 |
| 1184 if (out_value) | 1181 if (out_value) |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 } | 1338 } |
| 1342 | 1339 |
| 1343 std::ostream& operator<<(std::ostream& out, const Value::Type& type) { | 1340 std::ostream& operator<<(std::ostream& out, const Value::Type& type) { |
| 1344 if (static_cast<int>(type) < 0 || | 1341 if (static_cast<int>(type) < 0 || |
| 1345 static_cast<size_t>(type) >= arraysize(kTypeNames)) | 1342 static_cast<size_t>(type) >= arraysize(kTypeNames)) |
| 1346 return out << "Invalid Type (index = " << static_cast<int>(type) << ")"; | 1343 return out << "Invalid Type (index = " << static_cast<int>(type) << ")"; |
| 1347 return out << Value::GetTypeName(type); | 1344 return out << Value::GetTypeName(type); |
| 1348 } | 1345 } |
| 1349 | 1346 |
| 1350 } // namespace base | 1347 } // namespace base |
| OLD | NEW |