#ifndef MEMORY_MEMORY_HH_ #define MEMORY_MEMORY_HH_ #include #include #include #include #include namespace memory { using buffer_t = std::vector; buffer_t read_buffer(const std::size_t num_bytes, const pid_t& pid, const void* const address); void write_buffer(const buffer_t& buffer, const pid_t& pid, const void* const address); template T read(const pid_t& pid, const void* const address) { static_assert(std::is_trivially_copyable::value); const buffer_t data = read_buffer(sizeof(T), pid, address); T ret; std::memcpy(&ret, std::data(data), sizeof(T)); return std::move(ret); } template void write(const T& data, const pid_t& pid, const void* const address) { static_assert(std::is_trivially_copyable::value); const buffer_t buffer = [&]() { buffer_t buffer{sizeof(T)}; std::memcpy(std::data(buffer), &data, sizeof(T)); return buffer; }(); write_buffer(buffer, pid, address); } } // namespace memory #endif