Make sure types in ABI are standard layout

This commit is contained in:
2024-05-09 11:36:30 -07:00
parent f58409c21b
commit beabb8c690
2 changed files with 13 additions and 2 deletions

View File

@@ -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) {

View File

@@ -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;