Serenity Operating System
at master 45 lines 1.7 kB view raw
1/* 2 * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "Debugger.h" 10#include <AK/NonnullOwnPtr.h> 11#include <LibGUI/Model.h> 12#include <LibGUI/TreeView.h> 13#include <sys/arch/regs.h> 14 15namespace HackStudio { 16 17class VariablesModel final : public GUI::Model { 18public: 19 static RefPtr<VariablesModel> create(Debug::ProcessInspector&, PtraceRegisters const& regs); 20 21 void set_variable_value(const GUI::ModelIndex&, StringView, GUI::Window*); 22 23 virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override; 24 virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return 1; } 25 virtual GUI::Variant data(const GUI::ModelIndex& index, GUI::ModelRole role) const override; 26 virtual GUI::ModelIndex parent_index(const GUI::ModelIndex&) const override; 27 virtual GUI::ModelIndex index(int row, int column = 0, const GUI::ModelIndex& = GUI::ModelIndex()) const override; 28 Debug::ProcessInspector& inspector() { return m_inspector; } 29 30private: 31 explicit VariablesModel(Debug::ProcessInspector& inspector, Vector<NonnullOwnPtr<Debug::DebugInfo::VariableInfo>>&& variables, PtraceRegisters const& regs) 32 : m_variables(move(variables)) 33 , m_regs(regs) 34 , m_inspector(inspector) 35 { 36 m_variable_icon.set_bitmap_for_size(16, Gfx::Bitmap::load_from_file("/res/icons/16x16/inspector-object.png"sv).release_value_but_fixme_should_propagate_errors()); 37 } 38 Vector<NonnullOwnPtr<Debug::DebugInfo::VariableInfo>> m_variables; 39 PtraceRegisters m_regs; 40 41 GUI::Icon m_variable_icon; 42 Debug::ProcessInspector& m_inspector; 43}; 44 45}