From a5a86c2639b6c569578cdf8542a21f6636216465 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Fri, 4 Feb 2011 23:56:13 +0100 Subject: [PATCH 1/1] Use tr1/functional for sorting the hosts. --- hostdata.cpp | 22 ++++++++++------------ hostdata.h | 1 - 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/hostdata.cpp b/hostdata.cpp index 787b7ab..17d7a08 100644 --- a/hostdata.cpp +++ b/hostdata.cpp @@ -1,5 +1,6 @@ -#include #include +#include +#include #include #include #include @@ -13,23 +14,20 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(main); std::vector hostdata::hosts; -// used to compare m_host_t's by name -struct hostdata::m_host_less { - bool operator()(const m_host_t& a, const m_host_t& b) - { - const char* na = MSG_host_get_name(a); - const char* nb = MSG_host_get_name(b); - return strcmp(na, nb) < 0; - } -}; - void hostdata::create() { + using std::tr1::bind; + using std::tr1::placeholders::_1; + using std::tr1::placeholders::_2; + int nhosts = MSG_get_host_number(); m_host_t* host_list = MSG_get_host_table(); // only sort hosts for automatically created deployment if (opt::auto_depl::enabled) - std::sort(host_list, host_list + nhosts, m_host_less()); + std::sort(host_list, host_list + nhosts, + bind(std::less(), bind(strcmp, + bind(MSG_host_get_name, _1), + bind(MSG_host_get_name, _2)), 0)); hosts.assign(host_list, host_list + nhosts); xbt_free(host_list); diff --git a/hostdata.h b/hostdata.h index 703b7a1..722b2bc 100644 --- a/hostdata.h +++ b/hostdata.h @@ -25,7 +25,6 @@ public: private: // static list of hostdata's, used by create/destroy static std::vector hosts; - struct m_host_less; const char* name; std::string ctrl_mbox; -- 2.39.5