#ifndef PROCESS_H
#define PROCESS_H
-#define USE_UNORDERED_MAP 1
-//#undef USE_UNORDERED_MAP
-
#include <algorithm>
-#include <functional>
-#ifdef USE_UNORDERED_MAP
-# include <unordered_map>
-# define MAP_TEMPLATE std::unordered_map
-#else
-# include <map>
-# define MAP_TEMPLATE std::map
-#endif
+#include <atomic>
+#include <unordered_map>
#include <vector>
-#include <msg/msg.h>
+#include <simgrid/msg.h>
#include <xbt/log.h>
-#include "atomic_compat.h"
#include "communicator.h"
#include "misc.h"
#include "msg_thread.h"
static std::atomic<int> convergence_counter;
- typedef MAP_TEMPLATE<msg_host_t, neighbor*> rev_neigh_type;
+ typedef std::unordered_map<msg_host_t, neighbor*> rev_neigh_type;
neigh_type neigh; // list of neighbors (do not alter
// after construction!)
rev_neigh_type rev_neigh; // map msg_host_t -> neighbor
template <typename Compare>
void process::pneigh_sort_by_load(const Compare& comp)
{
- using std::placeholders::_1;
- using std::placeholders::_2;
std::sort(pneigh.begin(), pneigh.end(),
- std::bind(comp,
- std::bind(&neighbor::get_load, _1),
- std::bind(&neighbor::get_load, _2)));
+ [&comp](const neighbor* a, const neighbor* b) {
+ return comp(a->get_load(), b->get_load());
+ });
}
#endif // !PROCESS_H