That's enough for tonight....
auto pos = std::find_if(table.begin(), table.end(),
[&name](const surf_model_description_t& item) { return item.name == name; });
if (pos != table.end())
- return std::distance(table.begin(), pos);
+ return static_cast<int>(std::distance(table.begin(), pos));
if (table.empty())
xbt_die("No model is valid! This is a bug.");
void parse_platform_file(const std::string& file)
{
const char* cfile = file.c_str();
- int len = strlen(cfile);
+ size_t len = strlen(cfile);
bool is_lua = len > 3 && file[len - 3] == 'l' && file[len - 2] == 'u' && file[len - 1] == 'a';
sg_platf_init();
storage_type.content = A_surfxml_storage___type_content;
storage_type.id = A_surfxml_storage___type_id;
storage_type.model = A_surfxml_storage___type_model;
- storage_type.size = surf_parse_get_size(surf_parsed_filename, surf_parse_lineno, A_surfxml_storage___type_size,
- "size of storage type", storage_type.id.c_str());
+ storage_type.size =
+ static_cast<sg_size_t>(surf_parse_get_size(surf_parsed_filename, surf_parse_lineno, A_surfxml_storage___type_size,
+ "size of storage type", storage_type.id.c_str()));
sg_platf_new_storage_type(&storage_type);
}
static constexpr const char* type_name = "int";
static inline int parse(const char* value)
{
- return parse_long(value);
+ long val = parse_long(value);
+ if (val < INT_MIN)
+ throw std::range_error("underflow");
+ if (val > INT_MAX)
+ throw std::range_error("overflow");
+ return static_cast<int>(val);
}
};
template <> class ConfigType<double> {
do {
value = mt19937_gen();
} while (value >= decltype(mt19937_gen)::max() - decltype(mt19937_gen)::max() % range);
- return value % range + min;
+ return static_cast<int>(value % range + min);
}
double XbtRandom::uniform_real(double min, double max)
do {
numerator = mt19937_gen() - decltype(mt19937_gen)::min();
} while (numerator == divisor);
- return min + (max - min) * numerator / divisor;
+ return min + (max - min) * static_cast<double>(numerator) / divisor;
}
double XbtRandom::exponential(double lambda)
check_overflow(1);
break;
case '.': /* precision specifier */
- precision = strtol(q + 1, &q, 10);
+ precision = static_cast<int>(strtol(q + 1, &q, 10));
continue; /* conversion specifier still not found, continue reading */
case '0':
case '1':
case '7':
case '8':
case '9': /* length modifier */
- length = strtol(q, &q, 10);
+ length = static_cast<int>(strtol(q, &q, 10));
continue; /* conversion specifier still not found, continue reading */
case 'c': /* category name; LOG4J compliant
should accept a precision postfix to show the hierarchy */
GetSystemInfo(&si);
xbt_pagesize = si.dwPageSize;
#elif HAVE_SYSCONF
- xbt_pagesize = sysconf(_SC_PAGESIZE);
+ xbt_pagesize = static_cast<int>(sysconf(_SC_PAGESIZE));
#else
# error Cannot get page size.
#endif
- xbt_pagebits = log2(xbt_pagesize);
+ xbt_pagebits = static_cast<int>(log2(xbt_pagesize));
#ifdef _TWO_DIGIT_EXPONENT
/* Even printf behaves differently on Windows... */
int xbt_getpid()
{
const simgrid::kernel::actor::ActorImpl* self = SIMIX_process_self();
- return self == nullptr ? 0 : self->get_pid();
+ return self == nullptr ? 0 : static_cast<int>(self->get_pid());
}
const char* xbt_procname(void)