Make sure types in ABI are standard layout
This commit is contained in:
@@ -22,7 +22,13 @@
|
||||
bool debugVerboseEnabled = true;
|
||||
#endif
|
||||
|
||||
static_assert(std::is_standard_layout_v<weaselab::VersionedMap::MutationType>);
|
||||
static_assert(std::is_standard_layout_v<weaselab::VersionedMap::Key>);
|
||||
static_assert(std::is_standard_layout_v<weaselab::VersionedMap::Mutation>);
|
||||
static_assert(std::is_standard_layout_v<weaselab::VersionedMap::Iterator>);
|
||||
static_assert(std::bidirectional_iterator<weaselab::VersionedMap::Iterator>);
|
||||
static_assert(std::is_standard_layout_v<
|
||||
weaselab::VersionedMap::Iterator::VersionedMutation>);
|
||||
|
||||
void *mmapSafe(void *addr, size_t len, int prot, int flags, int fd,
|
||||
off_t offset) {
|
||||
|
@@ -104,7 +104,12 @@ struct VersionedMap {
|
||||
Iterator(Iterator &&) noexcept;
|
||||
Iterator &operator=(Iterator &&) noexcept;
|
||||
|
||||
struct VersionedMutation : Mutation {
|
||||
struct VersionedMutation {
|
||||
const uint8_t *param1;
|
||||
const uint8_t *param2;
|
||||
int param1Len;
|
||||
int param2Len;
|
||||
MutationType type;
|
||||
int64_t version;
|
||||
};
|
||||
|
||||
@@ -122,7 +127,7 @@ struct VersionedMap {
|
||||
Iterator operator--(int);
|
||||
|
||||
using difference_type = ptrdiff_t;
|
||||
using value_type = Mutation;
|
||||
using value_type = VersionedMutation;
|
||||
|
||||
bool operator==(const Iterator &) const;
|
||||
bool operator!=(const Iterator &) const;
|
||||
|
Reference in New Issue
Block a user