#include "src/mc/mc_private.hpp"
#include "src/mc/remote/RemoteSimulation.hpp"
+#include <algorithm>
+#include <array>
#include <cinttypes>
#include <cstdint>
#include <cstdlib>
static bool MC_dwarf_attr_flag(Dwarf_Die* die, int attribute, bool integrate)
{
Dwarf_Attribute attr;
- if ((integrate ? dwarf_attr_integrate(die, attribute, &attr) : dwarf_attr(die, attribute, &attr)) == 0)
+ if ((integrate ? dwarf_attr_integrate(die, attribute, &attr) : dwarf_attr(die, attribute, &attr)) == nullptr)
return false;
bool result;
return upper_bound - lower_bound + 1;
}
-/** @brief Finds the number of elements in a array type (DW_TAG_array_type)
+/** @brief Finds the number of elements in an array type (DW_TAG_array_type)
*
* The compilation unit might be needed because the default lower
* bound depends on the language of the compilation unit.
return std::vector<char>();
}
-static char hexdigits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
-
/** Binary data to hexadecimal */
static inline std::array<char, 2> to_hex(std::uint8_t byte)
{
+ constexpr std::array<char, 16> hexdigits{
+ {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}};
// Horrid double braces!
// Apparently, this is needed in C++11 (not in C++14).
return {{hexdigits[byte >> 4], hexdigits[byte & 0xF]}};
{
std::string res;
res.resize(2 * count);
- for (std::size_t i = 0; i < count; i++) {
- std::array<char, 2> hex_byte = to_hex(data[i]);
- for (int j = 0; j < 2; ++j)
- res[2 * i + j] = hex_byte[j];
- }
+ for (std::size_t i = 0; i < count; i++)
+ std::copy_n(cbegin(to_hex(data[i])), 2, &res[2 * i]);
return res;
}
}
/** Base directories for external debug files */
-static const char* debug_paths[] = {
+static constexpr auto debug_paths = {
"/usr/lib/debug/",
"/usr/local/lib/debug/",
};
return filename;
}
}
- XBT_DEBUG("Not debuf info found for build ID %s\n", hex.data());
+ XBT_DEBUG("No debug info found for build ID %s\n", hex.data());
return std::string();
}