From: Frederic Suter Date: Thu, 27 Jul 2017 12:31:44 +0000 (+0200) Subject: Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid X-Git-Tag: v3_17~316^2~4 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/48eb2f1b9262fc74f527816c348ed2aa6efa9f65 Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid --- 48eb2f1b9262fc74f527816c348ed2aa6efa9f65 diff --cc examples/msg/cloud-masterworker/cloud-masterworker.c index 17242ba56d,8d31f14b12..86449a44ee --- a/examples/msg/cloud-masterworker/cloud-masterworker.c +++ b/examples/msg/cloud-masterworker/cloud-masterworker.c @@@ -122,8 -122,8 +122,8 @@@ static int master_fun(int argc, char *a XBT_INFO("# Add one more process on each VM"); xbt_dynar_foreach(vms, i, vm) { unsigned int index = i + xbt_dynar_length(vms); - char *vm_name = bprintf("VM%02d", i); - char *pr_name = bprintf("WRK%02d", index); - char *vm_name = bprintf("VM%02u", i); - char *pr_name = bprintf("WRK%02u", index); ++ char* vm_name = bprintf("VM%02u", i); ++ char* pr_name = bprintf("WRK%02u", index); XBT_INFO("put a process (%s) on %s", pr_name, vm_name); MSG_process_create(pr_name, worker_fun, NULL, (msg_host_t)vm); diff --cc examples/msg/dht-pastry/dht-pastry.c index 517797e6d8,e9fc5d470a..1c029d2aca --- a/examples/msg/dht-pastry/dht-pastry.c +++ b/examples/msg/dht-pastry/dht-pastry.c @@@ -32,12 -32,12 +32,12 @@@ static int timeout = 50 static int max_simulation_time = 1000; typedef struct s_node { - int id; //128bits generated random(2^128 -1) - int known_id; - unsigned id; //128bits generated random(2^128 -1) ++ unsigned id; // 128bits generated random(2^128 -1) + unsigned known_id; char mailbox[MAILBOX_NAME_SIZE]; // my mailbox name (string representation of the id) - int namespace_set[NAMESPACE_SIZE]; - int neighborhood_set[NEIGHBORHOOD_SIZE]; - int routing_table[LEVELS_COUNT][LEVEL_SIZE]; + unsigned namespace_set[NAMESPACE_SIZE]; + unsigned neighborhood_set[NEIGHBORHOOD_SIZE]; + unsigned routing_table[LEVELS_COUNT][LEVEL_SIZE]; int ready; msg_comm_t comm_receive; // current communication to receive xbt_dynar_t pending_tasks; @@@ -62,9 -62,9 +62,9 @@@ typedef enum typedef struct s_task_data { e_task_type_t type; // type of task - int sender_id; // id parameter (used by some types of tasks) - //int request_finger; // finger parameter (used by some types of tasks) - int answer_id; // answer (used by some types of tasks) + unsigned sender_id; // id parameter (used by some types of tasks) - //int request_finger; // finger parameter (used by some types of tasks) ++ // int request_finger; // finger parameter (used by some types of tasks) + unsigned answer_id; // answer (used by some types of tasks) char answer_to[MAILBOX_NAME_SIZE]; // mailbox to send an answer to (if any) //const char* issuer_host_name; // used for logging int steps; diff --cc include/xbt/sysdep.h index fac49a749f,10b3ff38d5..f29739eae8 --- a/include/xbt/sysdep.h +++ b/include/xbt/sysdep.h @@@ -76,13 -76,7 +76,7 @@@ XBT_PUBLIC(void) xbt_backtrace_display_ /** @brief Like malloc, but xbt_die() on error @hideinitializer */ static XBT_ALWAYS_INLINE void *xbt_malloc(size_t n) { - void *res; - /* if (n==0) { - xbt_backtrace_display_current(); - xbt_die("malloc(0) is not portable"); - }*/ - - res = malloc(n); - void *res = malloc(n); ++ void* res = malloc(n); if (!res) xbt_die("Memory allocation of %lu bytes failed", (unsigned long)n); return res; @@@ -91,9 -85,7 +85,7 @@@ /** @brief like malloc, but xbt_die() on error and memset data to 0 @hideinitializer */ static XBT_ALWAYS_INLINE void *xbt_malloc0(size_t n) { - void *res; - //if (n==0) xbt_die("calloc(0) is not portable"); - res = calloc(n, 1); - void *res = calloc(n, 1); ++ void* res = calloc(n, 1); if (!res) xbt_die("Memory callocation of %lu bytes failed", (unsigned long)n); return res; diff --cc src/xbt/config.cpp index 37c41b2076,7fbfdf0823..977bad1502 --- a/src/xbt/config.cpp +++ b/src/xbt/config.cpp @@@ -11,11 -11,10 +11,11 @@@ #include #include ++#include #include #include -#include #include +#include - #include #include #include @@@ -260,12 -262,13 +260,13 @@@ const char* TypedConfigurationElement ConfigElement: - std::unordered_map options; - xbt_dict_t options; ++ std::map options; // alias -> xbt_dict_elm_t from options: - std::unordered_map aliases; - xbt_dict_t aliases; - bool warn_for_aliases; ++ std::map aliases; ++ bool warn_for_aliases = true; public: - Config(); + Config() = default; ~Config(); // No copy: @@@ -302,28 -309,44 +303,29 @@@ protected Config::~Config() { XBT_DEBUG("Frees cfg set %p", this); - xbt_dict_free(&this->options); - xbt_dict_free(&this->aliases); + for (auto elm : options) + delete elm.second; } -inline -xbt_dictelm_t Config::getDictElement(const char* name) +inline ConfigurationElement* Config::getDictElement(const char* name) { - // We are interested in the options dictelm: - xbt_dictelm_t res = xbt_dict_get_elm_or_null(options, name); - if (res) - return res; - // The aliases dict stores pointers to the options dictelm: - res = (xbt_dictelm_t) xbt_dict_get_or_null(aliases, name); - if (res && warn_for_aliases) - XBT_INFO("Option %s has been renamed to %s. Consider switching.", name, res->key); - return res; + try { + return options.at(name); + } catch (std::out_of_range& unfound) { + try { + ConfigurationElement* res = aliases.at(name); - XBT_INFO("Option %s has been renamed to %s. Consider switching.", name, res->getKey().c_str()); ++ if (warn_for_aliases) ++ XBT_INFO("Option %s has been renamed to %s. Consider switching.", name, res->getKey().c_str()); + return res; + } catch (std::out_of_range& missing_key) { + throw simgrid::config::missing_key_error(std::string("Bad config key: ") + name); + } + } } -inline -ConfigurationElement& Config::operator[](const char* name) +inline ConfigurationElement& Config::operator[](const char* name) { - xbt_dictelm_t elm = getDictElement(name); - if (elm == nullptr) - throw simgrid::config::missing_key_error(std::string("Bad config key, ") + name); - return *(ConfigurationElement*)elm->content; + return *(getDictElement(name)); } void Config::alias(const char* realname, const char* aliasname) @@@ -356,28 -387,37 +358,19 @@@ void Config::dump(const char *name, con /** @brief Displays the declared aliases and their description */ void Config::showAliases() { - std::vector names; - xbt_dict_cursor_t dict_cursor; - xbt_dictelm_t dictel; - char *name; - std::vector names; - - xbt_dict_foreach(this->aliases, dict_cursor, name, dictel) - names.push_back(name); - std::sort(begin(names), end(names), [](char* a, char* b) { return strcmp(a, b) < 0; }); -- + bool old_warn_for_aliases = false; + std::swap(warn_for_aliases, old_warn_for_aliases); - for (auto name : names) - printf(" %s: %s\n", name, (*this)[name].getDescription().c_str()); + for (auto elm : aliases) - names.push_back(elm.first); - std::sort(names.begin(), names.end()); - - for (auto name : names) - printf(" %s: %s\n", name.c_str(), (*this)[name.c_str()].getDescription().c_str()); ++ printf(" %s: %s\n", elm.first.c_str(), (*this)[elm.first.c_str()].getDescription().c_str()); + std::swap(warn_for_aliases, old_warn_for_aliases); } /** @brief Displays the declared options and their description */ void Config::help() { - std::vector names; - xbt_dict_cursor_t dict_cursor; - simgrid::config::ConfigurationElement* variable; - char *name; - std::vector names; -- - for (auto elm : options) - names.push_back(elm.first); - std::sort(names.begin(), names.end()); - xbt_dict_foreach(this->options, dict_cursor, name, variable) - names.push_back(name); - std::sort(begin(names), end(names), [](char* a, char* b) { return strcmp(a, b) < 0; }); -- -- for (auto name : names) { - simgrid::config::ConfigurationElement* variable = this->options.at(name); - printf(" %s: %s\n", name.c_str(), variable->getDescription().c_str()); - variable = (simgrid::config::ConfigurationElement*) xbt_dict_get(this->options, name); - printf(" %s: %s\n", name, variable->getDescription().c_str()); ++ for (auto elm : options) { ++ simgrid::config::ConfigurationElement* variable = this->options.at(elm.first); ++ printf(" %s: %s\n", elm.first.c_str(), variable->getDescription().c_str()); printf(" Type: %s; ", variable->getTypeName()); printf("Current value: %s\n", variable->getStringValue().c_str()); } diff --cc teshsuite/smpi/coll-alltoallv/coll-alltoallv.c index 780ee6354f,30d5a88d16..fced26e395 --- a/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c +++ b/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c @@@ -46,10 -46,9 +46,9 @@@ static void print_buffer_int(void *buf, int len, char *msg, int rank) { - int* v; printf("[%d] %s (#%d): ", rank, msg, len); for (int tmp = 0; tmp < len; tmp++) { - v = buf; - int *v = buf; ++ int* v = buf; printf("[%d]", v[tmp]); } printf("\n"); diff --cc teshsuite/smpi/mpich3-test/coll/allgatherv4.c index 39ad8560ee,89d2e057f9..4c4cde6ded --- a/teshsuite/smpi/mpich3-test/coll/allgatherv4.c +++ b/teshsuite/smpi/mpich3-test/coll/allgatherv4.c @@@ -60,9 -60,9 +60,9 @@@ int main(int argc, char **argv if (!rbuf) fprintf(stderr, "\trbuf of %d bytes\n", MAX_BUF); if (!recvcounts) - fprintf(stderr, "\trecvcounts of %zd bytes\n", comm_size * sizeof(int)); - fprintf(stderr, "\trecvcounts of %zu bytes\n", comm_size * sizeof(int)); ++ fprintf(stderr, "\trecvcounts of %zu bytes\n", comm_size * sizeof(int)); if (!displs) - fprintf(stderr, "\tdispls of %zd bytes\n", comm_size * sizeof(int)); - fprintf(stderr, "\tdispls of %zu bytes\n", comm_size * sizeof(int)); ++ fprintf(stderr, "\tdispls of %zu bytes\n", comm_size * sizeof(int)); fflush(stderr); MPI_Abort(MPI_COMM_WORLD, -1); } diff --cc teshsuite/smpi/mpich3-test/datatype/dataalign.c index 9539b952ec,8dc30efaab..1754cd9fed --- a/teshsuite/smpi/mpich3-test/datatype/dataalign.c +++ b/teshsuite/smpi/mpich3-test/datatype/dataalign.c @@@ -85,12 -85,10 +85,10 @@@ int main(int argc, char *argv[] * this can generate a file that diff, for example, * believes is a binary file */ if (isprint((int) (s1[j].c))) { - fprintf(stderr, "Got s[%d].c = %c; expected %c\n", - j, s1[j].c, j + status.MPI_SOURCE + 'a'); - fprintf(stderr, "Got s[%d].c = %c; expected %c\n", j, s1[j].c, j + status.MPI_SOURCE + 'a'); ++ fprintf(stderr, "Got s[%d].c = %c; expected %c\n", j, s1[j].c, j + status.MPI_SOURCE + 'a'); } else { - fprintf(stderr, "Got s[%d].c = %x; expected %c\n", - j, (int) s1[j].c, j + status.MPI_SOURCE + 'a'); - fprintf(stderr, "Got s[%d].c = %hhx; expected %c\n", j, s1[j].c, j + status.MPI_SOURCE + 'a'); ++ fprintf(stderr, "Got s[%d].c = %hhx; expected %c\n", j, s1[j].c, j + status.MPI_SOURCE + 'a'); } } } diff --cc teshsuite/smpi/mpich3-test/datatype/longdouble.c index 9275ef1707,40fed30cd9..d9f9ca55c1 --- a/teshsuite/smpi/mpich3-test/datatype/longdouble.c +++ b/teshsuite/smpi/mpich3-test/datatype/longdouble.c @@@ -35,9 -35,8 +35,8 @@@ int main(int argc, char *argv[] if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_LONG_DOUBLE, &type_size); if (type_size != sizeof(long double)) { - printf("type_size != sizeof(long double) : (%d != %zd)\n", - type_size, sizeof(long double)); - printf("type_size != sizeof(long double) : (%d != %zu)\n", type_size, sizeof(long double)); -- ++errs; ++ printf("type_size != sizeof(long double) : (%d != %zu)\n", type_size, sizeof(long double)); ++ ++errs; } } #endif @@@ -45,9 -44,9 +44,9 @@@ if (MPI_C_LONG_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_C_LONG_DOUBLE_COMPLEX, &type_size); if (type_size != sizeof(long double _Complex)) { - printf("type_size != sizeof(long double _Complex) : (%d != %zd)\n", - type_size, sizeof(long double _Complex)); - printf("type_size != sizeof(long double _Complex) : (%d != %zu)\n", type_size, - sizeof(long double _Complex)); -- ++errs; ++ printf("type_size != sizeof(long double _Complex) : (%d != %zu)\n", type_size, ++ sizeof(long double _Complex)); ++ ++errs; } } #endif