MCPcopy Create free account
hub / github.com/Vector35/debugger / setData

Method setData

ui/stackwidget.cpp:253–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

251
252
253bool DebugStackListModel::setData(const QModelIndex& index, const QVariant& value, int role)
254{
255 if ((flags(index) & Qt::ItemIsEditable) != Qt::ItemIsEditable)
256 return false;
257
258 QString valueStr = value.toString();
259 if (valueStr.size() == 0)
260 return false;
261
262 if (index.column() >= columnCount() || (size_t)index.row() >= m_items.size())
263 return false;
264
265 DebugStackItem* item = static_cast<DebugStackItem*>(index.internalPointer());
266 if (!item)
267 return false;
268
269 bool ok = false;
270 uint64_t newValue = valueStr.toULongLong(&ok, 16);
271 if (!ok)
272 return false;
273
274 if (newValue == item->value())
275 return false;
276
277 size_t addressSize = m_controller->GetRemoteArchitecture()->GetAddressSize();
278 BinaryWriter* writer = new BinaryWriter(m_controller->GetLiveView());
279 ok = false;
280 writer->Seek(item->address());
281 switch (addressSize)
282 {
283 case 1:
284 ok = writer->TryWrite8(newValue);
285 break;
286 case 2:
287 ok = writer->TryWrite16(newValue);
288 break;
289 case 4:
290 ok = writer->TryWrite32(newValue);
291 break;
292 case 8:
293 ok = writer->TryWrite64(newValue);
294 break;
295 default:
296 break;
297 }
298 if (!ok)
299 return false;
300
301 item->setValue(newValue);
302 item->setValueStatus(DebugStackValueModified);
303 return true;
304}
305
306
307DebugStackItemDelegate::DebugStackItemDelegate(QWidget* parent) : QStyledItemDelegate(parent)

Callers

nothing calls this directly

Calls 8

sizeMethod · 0.80
rowMethod · 0.80
valueMethod · 0.45
GetRemoteArchitectureMethod · 0.45
GetLiveViewMethod · 0.45
addressMethod · 0.45
setValueMethod · 0.45
setValueStatusMethod · 0.45

Tested by

no test coverage detected