38 std::string_view slotName);
41 std::string_view slotName, std::span<const TclObject> options);
57 [[nodiscard]]
const std::string&
getName()
const {
return name; }
58 [[nodiscard]]
const std::string&
getConfigName()
const {
return hwName; }
72 [[nodiscard]]
const auto&
getDevices()
const {
return devices; };
79 template<
typename Archive>
80 void serialize(Archive& ar,
unsigned version);
84 void load(std::string_view type);
87 const XMLElement* primary,
const XMLElement* secondary);
88 void createExternalSlot(
int ps);
89 void createExternalSlot(
int ps,
int ss);
90 void createExpandedSlot(
int ps);
91 [[nodiscard]]
int getAnyFreePrimarySlot();
92 [[nodiscard]]
int getSpecificFreePrimarySlot(
unsigned slot);
93 void addDevice(std::unique_ptr<MSXDevice> device);
94 void setName(std::string_view proposedName);
95 void setSlot(std::string_view slotName);
98 MSXMotherBoard& motherBoard;
101 std::string userName;
102 XMLDocument config{8192};
105 std::array<std::array<bool, 4>, 4> externalSlots;
106 std::array<bool, 4> externalPrimSlots;
107 std::array<bool, 4> expandedSlots;
108 std::array<bool, 4> allocatedPrimarySlots;
110 std::vector<std::unique_ptr<MSXDevice>> devices;