OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 DCHECK_EQ(state(), kStateWritable); | 84 DCHECK_EQ(state(), kStateWritable); |
85 | 85 |
86 // This object doesn’t directly write anything itself. Its | 86 // This object doesn’t directly write anything itself. Its |
87 // MinidumpSimpleStringDictionaryEntry is written by its parent as part of a | 87 // MinidumpSimpleStringDictionaryEntry is written by its parent as part of a |
88 // MinidumpSimpleStringDictionary, and its children are responsible for | 88 // MinidumpSimpleStringDictionary, and its children are responsible for |
89 // writing themselves. | 89 // writing themselves. |
90 return true; | 90 return true; |
91 } | 91 } |
92 | 92 |
93 MinidumpSimpleStringDictionaryWriter::MinidumpSimpleStringDictionaryWriter() | 93 MinidumpSimpleStringDictionaryWriter::MinidumpSimpleStringDictionaryWriter() |
94 : MinidumpWritable(), entries_(), simple_string_dictionary_base_() { | 94 : MinidumpWritable(), |
| 95 entries_(), |
| 96 simple_string_dictionary_base_(new MinidumpSimpleStringDictionary()) { |
95 } | 97 } |
96 | 98 |
97 MinidumpSimpleStringDictionaryWriter::~MinidumpSimpleStringDictionaryWriter() { | 99 MinidumpSimpleStringDictionaryWriter::~MinidumpSimpleStringDictionaryWriter() { |
98 STLDeleteContainerPairSecondPointers(entries_.begin(), entries_.end()); | 100 STLDeleteContainerPairSecondPointers(entries_.begin(), entries_.end()); |
99 } | 101 } |
100 | 102 |
101 void MinidumpSimpleStringDictionaryWriter::InitializeFromMap( | 103 void MinidumpSimpleStringDictionaryWriter::InitializeFromMap( |
102 const std::map<std::string, std::string>& map) { | 104 const std::map<std::string, std::string>& map) { |
103 DCHECK_EQ(state(), kStateMutable); | 105 DCHECK_EQ(state(), kStateMutable); |
104 DCHECK(entries_.empty()); | 106 DCHECK(entries_.empty()); |
(...skipping 25 matching lines...) Expand all Loading... |
130 } | 132 } |
131 | 133 |
132 bool MinidumpSimpleStringDictionaryWriter::Freeze() { | 134 bool MinidumpSimpleStringDictionaryWriter::Freeze() { |
133 DCHECK_EQ(state(), kStateMutable); | 135 DCHECK_EQ(state(), kStateMutable); |
134 | 136 |
135 if (!MinidumpWritable::Freeze()) { | 137 if (!MinidumpWritable::Freeze()) { |
136 return false; | 138 return false; |
137 } | 139 } |
138 | 140 |
139 size_t entry_count = entries_.size(); | 141 size_t entry_count = entries_.size(); |
140 if (!AssignIfInRange(&simple_string_dictionary_base_.count, entry_count)) { | 142 if (!AssignIfInRange(&simple_string_dictionary_base_->count, entry_count)) { |
141 LOG(ERROR) << "entry_count " << entry_count << " out of range"; | 143 LOG(ERROR) << "entry_count " << entry_count << " out of range"; |
142 return false; | 144 return false; |
143 } | 145 } |
144 | 146 |
145 return true; | 147 return true; |
146 } | 148 } |
147 | 149 |
148 size_t MinidumpSimpleStringDictionaryWriter::SizeOfObject() { | 150 size_t MinidumpSimpleStringDictionaryWriter::SizeOfObject() { |
149 DCHECK_GE(state(), kStateFrozen); | 151 DCHECK_GE(state(), kStateFrozen); |
150 | 152 |
151 return sizeof(simple_string_dictionary_base_) + | 153 return sizeof(*simple_string_dictionary_base_) + |
152 entries_.size() * sizeof(MinidumpSimpleStringDictionaryEntry); | 154 entries_.size() * sizeof(MinidumpSimpleStringDictionaryEntry); |
153 } | 155 } |
154 | 156 |
155 std::vector<internal::MinidumpWritable*> | 157 std::vector<internal::MinidumpWritable*> |
156 MinidumpSimpleStringDictionaryWriter::Children() { | 158 MinidumpSimpleStringDictionaryWriter::Children() { |
157 DCHECK_GE(state(), kStateMutable); | 159 DCHECK_GE(state(), kStateMutable); |
158 | 160 |
159 std::vector<MinidumpWritable*> children; | 161 std::vector<MinidumpWritable*> children; |
160 for (const auto& key_entry : entries_) { | 162 for (const auto& key_entry : entries_) { |
161 children.push_back(key_entry.second); | 163 children.push_back(key_entry.second); |
162 } | 164 } |
163 | 165 |
164 return children; | 166 return children; |
165 } | 167 } |
166 | 168 |
167 bool MinidumpSimpleStringDictionaryWriter::WriteObject( | 169 bool MinidumpSimpleStringDictionaryWriter::WriteObject( |
168 FileWriterInterface* file_writer) { | 170 FileWriterInterface* file_writer) { |
169 DCHECK_GE(state(), kStateWritable); | 171 DCHECK_GE(state(), kStateWritable); |
170 | 172 |
171 WritableIoVec iov; | 173 WritableIoVec iov; |
172 iov.iov_base = &simple_string_dictionary_base_; | 174 iov.iov_base = simple_string_dictionary_base_.get(); |
173 iov.iov_len = sizeof(simple_string_dictionary_base_); | 175 iov.iov_len = sizeof(*simple_string_dictionary_base_); |
174 std::vector<WritableIoVec> iovecs(1, iov); | 176 std::vector<WritableIoVec> iovecs(1, iov); |
175 | 177 |
176 for (const auto& key_entry : entries_) { | 178 for (const auto& key_entry : entries_) { |
177 iov.iov_base = key_entry.second->MinidumpSimpleStringDictionaryEntry(); | 179 iov.iov_base = key_entry.second->MinidumpSimpleStringDictionaryEntry(); |
178 iov.iov_len = sizeof(MinidumpSimpleStringDictionaryEntry); | 180 iov.iov_len = sizeof(MinidumpSimpleStringDictionaryEntry); |
179 iovecs.push_back(iov); | 181 iovecs.push_back(iov); |
180 } | 182 } |
181 | 183 |
182 return file_writer->WriteIoVec(&iovecs); | 184 return file_writer->WriteIoVec(&iovecs); |
183 } | 185 } |
184 | 186 |
185 } // namespace crashpad | 187 } // namespace crashpad |
OLD | NEW |