OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 | 10 |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 | 811 |
812 if (out_value) | 812 if (out_value) |
813 *out_value = list_[index]; | 813 *out_value = list_[index]; |
814 else | 814 else |
815 delete list_[index]; | 815 delete list_[index]; |
816 | 816 |
817 list_.erase(list_.begin() + index); | 817 list_.erase(list_.begin() + index); |
818 return true; | 818 return true; |
819 } | 819 } |
820 | 820 |
821 int ListValue::Remove(const Value& value) { | 821 bool ListValue::Remove(const Value& value, size_t* index) { |
822 for (ValueVector::iterator i(list_.begin()); i != list_.end(); ++i) { | 822 for (ValueVector::iterator i(list_.begin()); i != list_.end(); ++i) { |
823 if ((*i)->Equals(&value)) { | 823 if ((*i)->Equals(&value)) { |
824 size_t index = i - list_.begin(); | 824 size_t previous_index = i - list_.begin(); |
825 delete *i; | 825 delete *i; |
826 list_.erase(i); | 826 list_.erase(i); |
827 | 827 |
828 // TODO(anyone): Returning a signed int type here is just wrong. | 828 if (index) |
829 // Change this interface to return a size_t. | 829 *index = previous_index; |
830 DCHECK(index <= INT_MAX); | 830 return true; |
831 int return_index = static_cast<int>(index); | |
832 return return_index; | |
833 } | 831 } |
834 } | 832 } |
835 return -1; | 833 return false; |
836 } | 834 } |
837 | 835 |
838 void ListValue::Append(Value* in_value) { | 836 void ListValue::Append(Value* in_value) { |
839 DCHECK(in_value); | 837 DCHECK(in_value); |
840 list_.push_back(in_value); | 838 list_.push_back(in_value); |
841 } | 839 } |
842 | 840 |
843 bool ListValue::AppendIfNotPresent(Value* in_value) { | 841 bool ListValue::AppendIfNotPresent(Value* in_value) { |
844 DCHECK(in_value); | 842 DCHECK(in_value); |
845 for (ValueVector::const_iterator i(list_.begin()); i != list_.end(); ++i) { | 843 for (ValueVector::const_iterator i(list_.begin()); i != list_.end(); ++i) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 if (lhs_it != end() || rhs_it != other_list->end()) | 896 if (lhs_it != end() || rhs_it != other_list->end()) |
899 return false; | 897 return false; |
900 | 898 |
901 return true; | 899 return true; |
902 } | 900 } |
903 | 901 |
904 ValueSerializer::~ValueSerializer() { | 902 ValueSerializer::~ValueSerializer() { |
905 } | 903 } |
906 | 904 |
907 } // namespace base | 905 } // namespace base |
OLD | NEW |