You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
654 B
21 lines
654 B
|
|
|
|
#include <string>
|
|
|
|
#include "pointer.h"
|
|
|
|
|
|
namespace exopt::ptr {
|
|
static_assert(address_bits_v == sizeof(address_t) * CHAR_BIT, "Bad CHAR_BIT: Must be 8");
|
|
|
|
std::runtime_error NullDerefException<>::as_runtime() &&noexcept { return std::runtime_error{std::string{message()} }; }
|
|
|
|
namespace details [[gnu::visibility("internal")]] {
|
|
[[gnu::const]]
|
|
address_t hash(const opaque_t* ptr) noexcept {
|
|
static_assert((address_bits_v & (64 | 32)) == address_bits_v, "Cannot hash pointer with address that is not 64 or 32 bits wide");
|
|
//TODO: Find good pointer hashing algorithm, or use crc64 (if constexpr(address_bits_v == 64), else crc32.)
|
|
}
|
|
}
|
|
}
|