+ return this->pimpl_cpu_->get_core_count();
+}
+
+Host* Host::set_core_count(int core_count)
+{
+ kernel::actor::simcall_object_access(pimpl_, [this, core_count] { this->pimpl_cpu_->set_core_count(core_count); });
+ return this;
+}
+
+Host* Host::set_pstate_speed(const std::vector<double>& speed_per_state)
+{
+ kernel::actor::simcall_object_access(pimpl_,
+ [this, &speed_per_state] { pimpl_cpu_->set_pstate_speed(speed_per_state); });
+ return this;
+}
+
+std::vector<double> Host::convert_pstate_speed_vector(const std::vector<std::string>& speed_per_state)
+{
+ std::vector<double> speed_list;
+ speed_list.reserve(speed_per_state.size());
+ for (const auto& speed_str : speed_per_state) {
+ try {
+ double speed = xbt_parse_get_speed("", 0, speed_str, "");
+ speed_list.push_back(speed);
+ } catch (const simgrid::ParseError&) {
+ throw std::invalid_argument("Invalid speed value: " + speed_str);
+ }
+ }
+ return speed_list;
+}
+
+Host* Host::set_pstate_speed(const std::vector<std::string>& speed_per_state)
+{
+ set_pstate_speed(Host::convert_pstate_speed_vector(speed_per_state));
+ return this;