core: Add missing const variants of getters for the System class

Many of the Current<Thing> getters (as well as a few others) were
missing const qualified variants, which makes it a pain to retrieve
certain things from const qualified references to System.
This commit is contained in:
Lioncash 2018-10-28 17:37:31 -04:00
parent b5f8a5f0a3
commit b77f571d20
2 changed files with 49 additions and 10 deletions

View file

@ -312,6 +312,10 @@ Cpu& System::CurrentCpuCore() {
return impl->CurrentCpuCore(); return impl->CurrentCpuCore();
} }
const Cpu& System::CurrentCpuCore() const {
return impl->CurrentCpuCore();
}
System::ResultStatus System::RunLoop(bool tight_loop) { System::ResultStatus System::RunLoop(bool tight_loop) {
return impl->RunLoop(tight_loop); return impl->RunLoop(tight_loop);
} }
@ -342,7 +346,11 @@ PerfStatsResults System::GetAndResetPerfStats() {
return impl->GetAndResetPerfStats(); return impl->GetAndResetPerfStats();
} }
Core::TelemetrySession& System::TelemetrySession() const { TelemetrySession& System::TelemetrySession() {
return *impl->telemetry_session;
}
const TelemetrySession& System::TelemetrySession() const {
return *impl->telemetry_session; return *impl->telemetry_session;
} }
@ -350,7 +358,11 @@ ARM_Interface& System::CurrentArmInterface() {
return CurrentCpuCore().ArmInterface(); return CurrentCpuCore().ArmInterface();
} }
std::size_t System::CurrentCoreIndex() { const ARM_Interface& System::CurrentArmInterface() const {
return CurrentCpuCore().ArmInterface();
}
std::size_t System::CurrentCoreIndex() const {
return CurrentCpuCore().CoreIndex(); return CurrentCpuCore().CoreIndex();
} }
@ -358,6 +370,10 @@ Kernel::Scheduler& System::CurrentScheduler() {
return CurrentCpuCore().Scheduler(); return CurrentCpuCore().Scheduler();
} }
const Kernel::Scheduler& System::CurrentScheduler() const {
return CurrentCpuCore().Scheduler();
}
Kernel::Scheduler& System::Scheduler(std::size_t core_index) { Kernel::Scheduler& System::Scheduler(std::size_t core_index) {
return CpuCore(core_index).Scheduler(); return CpuCore(core_index).Scheduler();
} }
@ -378,6 +394,10 @@ ARM_Interface& System::ArmInterface(std::size_t core_index) {
return CpuCore(core_index).ArmInterface(); return CpuCore(core_index).ArmInterface();
} }
const ARM_Interface& System::ArmInterface(std::size_t core_index) const {
return CpuCore(core_index).ArmInterface();
}
Cpu& System::CpuCore(std::size_t core_index) { Cpu& System::CpuCore(std::size_t core_index) {
ASSERT(core_index < NUM_CPU_CORES); ASSERT(core_index < NUM_CPU_CORES);
return *impl->cpu_cores[core_index]; return *impl->cpu_cores[core_index];
@ -392,6 +412,10 @@ ExclusiveMonitor& System::Monitor() {
return *impl->cpu_exclusive_monitor; return *impl->cpu_exclusive_monitor;
} }
const ExclusiveMonitor& System::Monitor() const {
return *impl->cpu_exclusive_monitor;
}
Tegra::GPU& System::GPU() { Tegra::GPU& System::GPU() {
return *impl->gpu_core; return *impl->gpu_core;
} }

View file

@ -129,11 +129,11 @@ public:
*/ */
bool IsPoweredOn() const; bool IsPoweredOn() const;
/** /// Gets a reference to the telemetry session for this emulation session.
* Returns a reference to the telemetry session for this emulation session. Core::TelemetrySession& TelemetrySession();
* @returns Reference to the telemetry session.
*/ /// Gets a reference to the telemetry session for this emulation session.
Core::TelemetrySession& TelemetrySession() const; const Core::TelemetrySession& TelemetrySession() const;
/// Prepare the core emulation for a reschedule /// Prepare the core emulation for a reschedule
void PrepareReschedule(); void PrepareReschedule();
@ -144,24 +144,36 @@ public:
/// Gets an ARM interface to the CPU core that is currently running /// Gets an ARM interface to the CPU core that is currently running
ARM_Interface& CurrentArmInterface(); ARM_Interface& CurrentArmInterface();
/// Gets an ARM interface to the CPU core that is currently running
const ARM_Interface& CurrentArmInterface() const;
/// Gets the index of the currently running CPU core /// Gets the index of the currently running CPU core
std::size_t CurrentCoreIndex(); std::size_t CurrentCoreIndex() const;
/// Gets the scheduler for the CPU core that is currently running /// Gets the scheduler for the CPU core that is currently running
Kernel::Scheduler& CurrentScheduler(); Kernel::Scheduler& CurrentScheduler();
/// Gets an ARM interface to the CPU core with the specified index /// Gets the scheduler for the CPU core that is currently running
const Kernel::Scheduler& CurrentScheduler() const;
/// Gets a reference to an ARM interface for the CPU core with the specified index
ARM_Interface& ArmInterface(std::size_t core_index); ARM_Interface& ArmInterface(std::size_t core_index);
/// Gets a const reference to an ARM interface from the CPU core with the specified index
const ARM_Interface& ArmInterface(std::size_t core_index) const;
/// Gets a CPU interface to the CPU core with the specified index /// Gets a CPU interface to the CPU core with the specified index
Cpu& CpuCore(std::size_t core_index); Cpu& CpuCore(std::size_t core_index);
/// Gets a CPU interface to the CPU core with the specified index /// Gets a CPU interface to the CPU core with the specified index
const Cpu& CpuCore(std::size_t core_index) const; const Cpu& CpuCore(std::size_t core_index) const;
/// Gets the exclusive monitor /// Gets a reference to the exclusive monitor
ExclusiveMonitor& Monitor(); ExclusiveMonitor& Monitor();
/// Gets a constant reference to the exclusive monitor
const ExclusiveMonitor& Monitor() const;
/// Gets a mutable reference to the GPU interface /// Gets a mutable reference to the GPU interface
Tegra::GPU& GPU(); Tegra::GPU& GPU();
@ -230,6 +242,9 @@ private:
/// Returns the currently running CPU core /// Returns the currently running CPU core
Cpu& CurrentCpuCore(); Cpu& CurrentCpuCore();
/// Returns the currently running CPU core
const Cpu& CurrentCpuCore() const;
/** /**
* Initialize the emulated system. * Initialize the emulated system.
* @param emu_window Reference to the host-system window used for video output and keyboard * @param emu_window Reference to the host-system window used for video output and keyboard