-/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
namespace simgrid {
namespace jedule {
Subset::Subset(int start_idx, int end_idx, Container* parent)
-: start_idx(start_idx), parent(parent)
+ : start_idx(start_idx), nres(end_idx - start_idx + 1), parent(parent)
{
- nres=end_idx-start_idx+1;
}
Container::Container(const std::string& name) : name(name)
container_name2container.insert({this->name, this});
}
-Container::~Container()
-{
- for (auto const& child : this->children)
- delete child;
-}
-
void Container::add_child(jed_container_t child)
{
xbt_assert(child != nullptr);
- this->children.push_back(child);
+ this->children.emplace_back(child);
child->parent = this;
}
void Container::add_resources(std::vector<sg_host_t> hosts)
{
- this->is_lowest_ = 1;
this->children.clear();
this->last_id_ = 0;
}
}
-void Container::create_hierarchy(sg_netzone_t from_as)
+void Container::create_hierarchy(const_sg_netzone_t from_as)
{
-
if (from_as->get_children().empty()) {
// I am no AS
// add hosts to jedule platform
std::vector<int> Container::get_hierarchy()
{
if(this->parent != nullptr ) {
-
if (not this->parent->children.empty()) {
// we are in the last level
return this->parent->get_hierarchy();
int child_nb = -1;
for (auto const& child : this->parent->children) {
- if( child == this) {
+ if (child.get() == this) {
child_nb = i;
break;
}
fprintf(jed_file, " </res>\n");
}
-}
-}
+} // namespace jedule
+} // namespace simgrid
static void add_subsets_to(std::vector<simgrid::jedule::Subset>& subset_list, std::vector<const char*> hostgroup,
jed_container_t parent)
pos = i;
}
}
-
}
void get_resource_selection_by_hosts(std::vector<simgrid::jedule::Subset>& subset_list,
std::unordered_map<const char*, std::vector<const char*>> parent2hostgroup;
for (auto const& host : host_list) {
const char *host_name = sg_host_get_name(host);
- jed_container_t parent = host2_simgrid_parent_container.at(host_name);
+ const simgrid::jedule::Container* parent = host2_simgrid_parent_container.at(host_name);
xbt_assert( parent != nullptr );
auto host_group = parent2hostgroup.find(parent->name.c_str());