Serenity Operating System
at master 57 lines 1.6 kB view raw
1/* 2 * Copyright (c) 2020, Luke Wilde <lukew@serenityos.org> 3 * Copyright (c) 2022, the SerenityOS developers. 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <AK/Vector.h> 11#include <LibGUI/Model.h> 12#include <sys/arch/regs.h> 13 14namespace HackStudio { 15 16struct RegisterData { 17 DeprecatedString name; 18 FlatPtr value; 19 bool changed { false }; 20}; 21 22class RegistersModel final : public GUI::Model { 23public: 24 static RefPtr<RegistersModel> create(PtraceRegisters const& regs) 25 { 26 return adopt_ref(*new RegistersModel(regs)); 27 } 28 29 static RefPtr<RegistersModel> create(PtraceRegisters const& current_regs, PtraceRegisters const& previous_regs) 30 { 31 return adopt_ref(*new RegistersModel(current_regs, previous_regs)); 32 } 33 34 enum Column { 35 Register, 36 Value, 37 __Count 38 }; 39 40 virtual ~RegistersModel() override = default; 41 42 virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override; 43 virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return Column::__Count; } 44 virtual DeprecatedString column_name(int) const override; 45 virtual GUI::Variant data(const GUI::ModelIndex&, GUI::ModelRole) const override; 46 47 PtraceRegisters const& raw_registers() const { return m_raw_registers; } 48 49private: 50 explicit RegistersModel(PtraceRegisters const& regs); 51 RegistersModel(PtraceRegisters const& current_regs, PtraceRegisters const& previous_regs); 52 53 PtraceRegisters m_raw_registers; 54 Vector<RegisterData> m_registers; 55}; 56 57}