orbis: initial physical memory emulation support (not used)

avoid unconditional linux specific types/api usage
This commit is contained in:
DH 2025-11-09 21:38:23 +03:00
parent 07b1f422ef
commit 9fc036d9a5
23 changed files with 831 additions and 67 deletions

View file

@ -505,6 +505,16 @@ public:
return *this;
}
iterator &operator--() {
--it;
if (it->second.isClose()) {
--it;
}
return *this;
}
bool operator==(iterator other) const { return it == other.it; }
bool operator!=(iterator other) const { return it != other.it; }

View file

@ -113,7 +113,8 @@ namespace detail {
template <typename ClassT> struct SerializableFieldTest {
template <typename FieldT>
requires(std::is_default_constructible_v<FieldT> &&
!std::is_same_v<FieldT, ClassT> && detail::IsSerializable<FieldT>)
!std::is_same_v<std::remove_cvref_t<FieldT>, ClassT> &&
detail::IsSerializable<FieldT>)
constexpr operator FieldT();
};
@ -121,20 +122,6 @@ struct SerializableAnyFieldTest {
template <typename FieldT> constexpr operator FieldT();
};
template <typename T, std::size_t I> constexpr bool isSerializableField() {
auto impl = []<std::size_t... Before, std::size_t... After>(
std::index_sequence<Before...>,
std::index_sequence<After...>) {
return requires {
T{(Before, SerializableAnyFieldTest{})..., SerializableFieldTest<T>{},
(After, SerializableAnyFieldTest{})...};
};
};
return impl(std::make_index_sequence<I>{},
std::make_index_sequence<rx::fieldCount<T> - I - 1>{});
}
template <typename T> constexpr bool isSerializableFields() {
auto impl = []<std::size_t... I>(std::index_sequence<I...>) {
return requires { T{(I, SerializableFieldTest<T>{})...}; };