#pragma once #include "modeling/Room.h" #include "simulation/schedulers/Scheduler.h" #include "modeling/TypeIndex.h" #include namespace Modeling { /* The Datacenter class models a datacenter with rooms/entities. */ template class Datacenter { public: /* Returns a reference to the vector of rooms in this datacenter. */ template std::vector& getRoomsOfType() { return std::get::value>(rooms); } /* Adds a room to this datacenter. */ template void addRoomOfType(RoomType& room) { std::get::value>(rooms).push_back(std::move(room)); } private: // A vector of rooms that are part of this datacenter. std::tuple...> rooms; }; }