| 386 | } |
| 387 | |
| 388 | std::optional<QString> SymbolTreeModel::typeFromModelIndexToString(QModelIndex index) |
| 389 | { |
| 390 | SymbolTreeNode* node = nodeFromIndex(index); |
| 391 | if (!node || node->tag != SymbolTreeNode::OBJECT) |
| 392 | return std::nullopt; |
| 393 | |
| 394 | QString result; |
| 395 | m_cpu.GetSymbolGuardian().Read([&](const ccc::SymbolDatabase& database) -> void { |
| 396 | const ccc::ast::Node* type = node->type.lookup_node(database); |
| 397 | if (!type) |
| 398 | return; |
| 399 | |
| 400 | result = typeToString(type, database); |
| 401 | }); |
| 402 | |
| 403 | return result; |
| 404 | } |
| 405 | |
| 406 | std::vector<std::unique_ptr<SymbolTreeNode>> SymbolTreeModel::populateChildren( |
| 407 | const QString& name, |
no test coverage detected