Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(593)

Side by Side Diff: base/json/json_parser.cc

Issue 614103004: replace 'virtual ... OVERRIDE' with '... override' (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: process base/ Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/json/json_parser.h" 5 #include "base/json/json_parser.h"
6 6
7 #include "base/float_util.h" 7 #include "base/float_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 19 matching lines...) Expand all
30 // optimization avoids about 2/3rds of string memory copies. The constructor 30 // optimization avoids about 2/3rds of string memory copies. The constructor
31 // takes ownership of the input string. The real root value is Swap()ed into 31 // takes ownership of the input string. The real root value is Swap()ed into
32 // the new instance. 32 // the new instance.
33 class DictionaryHiddenRootValue : public base::DictionaryValue { 33 class DictionaryHiddenRootValue : public base::DictionaryValue {
34 public: 34 public:
35 DictionaryHiddenRootValue(std::string* json, Value* root) : json_(json) { 35 DictionaryHiddenRootValue(std::string* json, Value* root) : json_(json) {
36 DCHECK(root->IsType(Value::TYPE_DICTIONARY)); 36 DCHECK(root->IsType(Value::TYPE_DICTIONARY));
37 DictionaryValue::Swap(static_cast<DictionaryValue*>(root)); 37 DictionaryValue::Swap(static_cast<DictionaryValue*>(root));
38 } 38 }
39 39
40 virtual void Swap(DictionaryValue* other) OVERRIDE { 40 void Swap(DictionaryValue* other) override {
41 DVLOG(1) << "Swap()ing a DictionaryValue inefficiently."; 41 DVLOG(1) << "Swap()ing a DictionaryValue inefficiently.";
42 42
43 // First deep copy to convert JSONStringValue to std::string and swap that 43 // First deep copy to convert JSONStringValue to std::string and swap that
44 // copy with |other|, which contains the new contents of |this|. 44 // copy with |other|, which contains the new contents of |this|.
45 scoped_ptr<base::DictionaryValue> copy(DeepCopy()); 45 scoped_ptr<base::DictionaryValue> copy(DeepCopy());
46 copy->Swap(other); 46 copy->Swap(other);
47 47
48 // Then erase the contents of the current dictionary and swap in the 48 // Then erase the contents of the current dictionary and swap in the
49 // new contents, originally from |other|. 49 // new contents, originally from |other|.
50 Clear(); 50 Clear();
51 json_.reset(); 51 json_.reset();
52 DictionaryValue::Swap(copy.get()); 52 DictionaryValue::Swap(copy.get());
53 } 53 }
54 54
55 // Not overriding DictionaryValue::Remove because it just calls through to 55 // Not overriding DictionaryValue::Remove because it just calls through to
56 // the method below. 56 // the method below.
57 57
58 virtual bool RemoveWithoutPathExpansion(const std::string& key, 58 bool RemoveWithoutPathExpansion(const std::string& key,
59 scoped_ptr<Value>* out) OVERRIDE { 59 scoped_ptr<Value>* out) override {
60 // If the caller won't take ownership of the removed value, just call up. 60 // If the caller won't take ownership of the removed value, just call up.
61 if (!out) 61 if (!out)
62 return DictionaryValue::RemoveWithoutPathExpansion(key, out); 62 return DictionaryValue::RemoveWithoutPathExpansion(key, out);
63 63
64 DVLOG(1) << "Remove()ing from a DictionaryValue inefficiently."; 64 DVLOG(1) << "Remove()ing from a DictionaryValue inefficiently.";
65 65
66 // Otherwise, remove the value while its still "owned" by this and copy it 66 // Otherwise, remove the value while its still "owned" by this and copy it
67 // to convert any JSONStringValues to std::string. 67 // to convert any JSONStringValues to std::string.
68 scoped_ptr<Value> out_owned; 68 scoped_ptr<Value> out_owned;
69 if (!DictionaryValue::RemoveWithoutPathExpansion(key, &out_owned)) 69 if (!DictionaryValue::RemoveWithoutPathExpansion(key, &out_owned))
(...skipping 10 matching lines...) Expand all
80 DISALLOW_COPY_AND_ASSIGN(DictionaryHiddenRootValue); 80 DISALLOW_COPY_AND_ASSIGN(DictionaryHiddenRootValue);
81 }; 81 };
82 82
83 class ListHiddenRootValue : public base::ListValue { 83 class ListHiddenRootValue : public base::ListValue {
84 public: 84 public:
85 ListHiddenRootValue(std::string* json, Value* root) : json_(json) { 85 ListHiddenRootValue(std::string* json, Value* root) : json_(json) {
86 DCHECK(root->IsType(Value::TYPE_LIST)); 86 DCHECK(root->IsType(Value::TYPE_LIST));
87 ListValue::Swap(static_cast<ListValue*>(root)); 87 ListValue::Swap(static_cast<ListValue*>(root));
88 } 88 }
89 89
90 virtual void Swap(ListValue* other) OVERRIDE { 90 void Swap(ListValue* other) override {
91 DVLOG(1) << "Swap()ing a ListValue inefficiently."; 91 DVLOG(1) << "Swap()ing a ListValue inefficiently.";
92 92
93 // First deep copy to convert JSONStringValue to std::string and swap that 93 // First deep copy to convert JSONStringValue to std::string and swap that
94 // copy with |other|, which contains the new contents of |this|. 94 // copy with |other|, which contains the new contents of |this|.
95 scoped_ptr<base::ListValue> copy(DeepCopy()); 95 scoped_ptr<base::ListValue> copy(DeepCopy());
96 copy->Swap(other); 96 copy->Swap(other);
97 97
98 // Then erase the contents of the current list and swap in the new contents, 98 // Then erase the contents of the current list and swap in the new contents,
99 // originally from |other|. 99 // originally from |other|.
100 Clear(); 100 Clear();
101 json_.reset(); 101 json_.reset();
102 ListValue::Swap(copy.get()); 102 ListValue::Swap(copy.get());
103 } 103 }
104 104
105 virtual bool Remove(size_t index, scoped_ptr<Value>* out) OVERRIDE { 105 bool Remove(size_t index, scoped_ptr<Value>* out) override {
106 // If the caller won't take ownership of the removed value, just call up. 106 // If the caller won't take ownership of the removed value, just call up.
107 if (!out) 107 if (!out)
108 return ListValue::Remove(index, out); 108 return ListValue::Remove(index, out);
109 109
110 DVLOG(1) << "Remove()ing from a ListValue inefficiently."; 110 DVLOG(1) << "Remove()ing from a ListValue inefficiently.";
111 111
112 // Otherwise, remove the value while its still "owned" by this and copy it 112 // Otherwise, remove the value while its still "owned" by this and copy it
113 // to convert any JSONStringValues to std::string. 113 // to convert any JSONStringValues to std::string.
114 scoped_ptr<Value> out_owned; 114 scoped_ptr<Value> out_owned;
115 if (!ListValue::Remove(index, &out_owned)) 115 if (!ListValue::Remove(index, &out_owned))
(...skipping 14 matching lines...) Expand all
130 // into the Value. This can only be stored in a child of hidden root (above), 130 // into the Value. This can only be stored in a child of hidden root (above),
131 // otherwise the referenced string will not be guaranteed to outlive it. 131 // otherwise the referenced string will not be guaranteed to outlive it.
132 class JSONStringValue : public base::Value { 132 class JSONStringValue : public base::Value {
133 public: 133 public:
134 explicit JSONStringValue(const base::StringPiece& piece) 134 explicit JSONStringValue(const base::StringPiece& piece)
135 : Value(TYPE_STRING), 135 : Value(TYPE_STRING),
136 string_piece_(piece) { 136 string_piece_(piece) {
137 } 137 }
138 138
139 // Overridden from base::Value: 139 // Overridden from base::Value:
140 virtual bool GetAsString(std::string* out_value) const OVERRIDE { 140 bool GetAsString(std::string* out_value) const override {
141 string_piece_.CopyToString(out_value); 141 string_piece_.CopyToString(out_value);
142 return true; 142 return true;
143 } 143 }
144 virtual bool GetAsString(string16* out_value) const OVERRIDE { 144 bool GetAsString(string16* out_value) const override {
145 *out_value = UTF8ToUTF16(string_piece_); 145 *out_value = UTF8ToUTF16(string_piece_);
146 return true; 146 return true;
147 } 147 }
148 virtual Value* DeepCopy() const OVERRIDE { 148 Value* DeepCopy() const override {
149 return new StringValue(string_piece_.as_string()); 149 return new StringValue(string_piece_.as_string());
150 } 150 }
151 virtual bool Equals(const Value* other) const OVERRIDE { 151 bool Equals(const Value* other) const override {
152 std::string other_string; 152 std::string other_string;
153 return other->IsType(TYPE_STRING) && other->GetAsString(&other_string) && 153 return other->IsType(TYPE_STRING) && other->GetAsString(&other_string) &&
154 StringPiece(other_string) == string_piece_; 154 StringPiece(other_string) == string_piece_;
155 } 155 }
156 156
157 private: 157 private:
158 // The location in the original input stream. 158 // The location in the original input stream.
159 base::StringPiece string_piece_; 159 base::StringPiece string_piece_;
160 160
161 DISALLOW_COPY_AND_ASSIGN(JSONStringValue); 161 DISALLOW_COPY_AND_ASSIGN(JSONStringValue);
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 const std::string& description) { 956 const std::string& description) {
957 if (line || column) { 957 if (line || column) {
958 return StringPrintf("Line: %i, column: %i, %s", 958 return StringPrintf("Line: %i, column: %i, %s",
959 line, column, description.c_str()); 959 line, column, description.c_str());
960 } 960 }
961 return description; 961 return description;
962 } 962 }
963 963
964 } // namespace internal 964 } // namespace internal
965 } // namespace base 965 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698