SI_Device: Provide proper insertion/extraction operators for SIDevices enum
Allows the enumeration to be safely used with our type parsing functions.
This commit is contained in:
parent
febd1c3dba
commit
cfbabd4c41
|
@ -500,7 +500,7 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
||||||
core->Get("BBA_MAC", &m_bba_mac);
|
core->Get("BBA_MAC", &m_bba_mac);
|
||||||
for (size_t i = 0; i < std::size(m_SIDevice); ++i)
|
for (size_t i = 0; i < std::size(m_SIDevice); ++i)
|
||||||
{
|
{
|
||||||
core->Get(fmt::format("SIDevice{}", i), (u32*)&m_SIDevice[i],
|
core->Get(fmt::format("SIDevice{}", i), &m_SIDevice[i],
|
||||||
(i == 0) ? SerialInterface::SIDEVICE_GC_CONTROLLER : SerialInterface::SIDEVICE_NONE);
|
(i == 0) ? SerialInterface::SIDEVICE_GC_CONTROLLER : SerialInterface::SIDEVICE_NONE);
|
||||||
core->Get(fmt::format("AdapterRumble{}", i), &m_AdapterRumble[i], true);
|
core->Get(fmt::format("AdapterRumble{}", i), &m_AdapterRumble[i], true);
|
||||||
core->Get(fmt::format("SimulateKonga{}", i), &m_AdapterKonga[i], false);
|
core->Get(fmt::format("SimulateKonga{}", i), &m_AdapterKonga[i], false);
|
||||||
|
|
|
@ -4,8 +4,11 @@
|
||||||
|
|
||||||
#include "Core/HW/SI/SI_Device.h"
|
#include "Core/HW/SI/SI_Device.h"
|
||||||
|
|
||||||
|
#include <istream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <ostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|
||||||
|
@ -21,6 +24,28 @@
|
||||||
|
|
||||||
namespace SerialInterface
|
namespace SerialInterface
|
||||||
{
|
{
|
||||||
|
std::ostream& operator<<(std::ostream& stream, SIDevices device)
|
||||||
|
{
|
||||||
|
stream << static_cast<std::underlying_type_t<SIDevices>>(device);
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::istream& operator>>(std::istream& stream, SIDevices& device)
|
||||||
|
{
|
||||||
|
std::underlying_type_t<SIDevices> value;
|
||||||
|
|
||||||
|
if (stream >> value)
|
||||||
|
{
|
||||||
|
device = static_cast<SIDevices>(value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
device = SIDevices::SIDEVICE_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
ISIDevice::ISIDevice(SIDevices device_type, int device_number)
|
ISIDevice::ISIDevice(SIDevices device_type, int device_number)
|
||||||
: m_device_number(device_number), m_device_type(device_type)
|
: m_device_number(device_number), m_device_type(device_type)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <iosfwd>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
|
||||||
|
@ -63,6 +64,9 @@ enum SIDevices : int
|
||||||
SIDEVICE_COUNT,
|
SIDEVICE_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::ostream& operator<<(std::ostream& stream, SIDevices device);
|
||||||
|
std::istream& operator>>(std::istream& stream, SIDevices& device);
|
||||||
|
|
||||||
class ISIDevice
|
class ISIDevice
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue