41 std::string_view slotName);
44 std::string_view slotName, std::span<const TclObject> options);
56 [[nodiscard]]
const std::string&
getName()
const {
return name; }
57 [[nodiscard]]
const std::string&
getConfigName()
const {
return hwName; }
71 [[nodiscard]]
const auto&
getDevices()
const {
return devices; };
78 template<
typename Archive>
79 void serialize(Archive& ar,
unsigned version);
83 void load(std::string_view type);
86 const XMLElement* primary,
const XMLElement* secondary);
87 void createExternalSlot(
int ps);
88 void createExternalSlot(
int ps,
int ss);
89 void createExpandedSlot(
int ps);
90 [[nodiscard]]
int getAnyFreePrimarySlot();
91 [[nodiscard]]
int getSpecificFreePrimarySlot(
unsigned slot);
92 void addDevice(std::unique_ptr<MSXDevice> device);
93 void setName(std::string_view proposedName);
94 void setSlot(std::string_view slotName);
97 MSXMotherBoard& motherBoard;
100 std::string userName;
104 std::array<std::array<bool, 4>, 4> externalSlots;
105 std::array<bool, 4> externalPrimSlots;
106 std::array<bool, 4> expandedSlots;
107 std::array<bool, 4> allocatedPrimarySlots;
109 std::vector<std::unique_ptr<MSXDevice>> devices;