40 std::string_view slotName);
43 std::string_view slotName, std::span<const TclObject> options);
55 [[nodiscard]]
const std::string&
getName()
const {
return name; }
56 [[nodiscard]]
const std::string&
getConfigName()
const {
return hwName; }
70 [[nodiscard]]
const auto&
getDevices()
const {
return devices; };
77 template<
typename Archive>
78 void serialize(Archive& ar,
unsigned version);
82 void load(std::string_view type);
85 const XMLElement* primary,
const XMLElement* secondary);
86 void createExternalSlot(
int ps);
87 void createExternalSlot(
int ps,
int ss);
88 void createExpandedSlot(
int ps);
89 [[nodiscard]]
int getAnyFreePrimarySlot();
90 [[nodiscard]]
int getSpecificFreePrimarySlot(
unsigned slot);
91 void addDevice(std::unique_ptr<MSXDevice> device);
92 void setName(std::string_view proposedName);
93 void setSlot(std::string_view slotName);
96 MSXMotherBoard& motherBoard;
103 std::array<std::array<bool, 4>, 4> externalSlots;
104 std::array<bool, 4> externalPrimSlots;
105 std::array<bool, 4> expandedSlots;
106 std::array<bool, 4> allocatedPrimarySlots;
108 std::vector<std::unique_ptr<MSXDevice>> devices;