2025-04-24 12:41:04 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include <rx/types.hpp>
|
2016-02-01 22:55:43 +01:00
|
|
|
|
2020-12-13 14:34:45 +01:00
|
|
|
namespace stx
|
|
|
|
|
{
|
2020-12-18 08:39:54 +01:00
|
|
|
template <typename T, bool Se, usz Align>
|
2020-12-13 14:34:45 +01:00
|
|
|
class se_t;
|
2021-11-30 15:40:46 +01:00
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
struct lazy;
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
struct generator;
|
2025-04-05 21:50:45 +02:00
|
|
|
} // namespace stx
|
2020-12-13 14:34:45 +01:00
|
|
|
|
2021-06-01 18:13:05 +02:00
|
|
|
namespace utils
|
|
|
|
|
{
|
|
|
|
|
struct serial;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
extern bool serialize(utils::serial& ar, T& obj);
|
2022-07-04 15:02:17 +02:00
|
|
|
|
2025-04-05 21:50:45 +02:00
|
|
|
#define USING_SERIALIZATION_VERSION(name) []() \
|
|
|
|
|
{ \
|
|
|
|
|
extern void using_##name##_serialization(); \
|
|
|
|
|
using_##name##_serialization(); \
|
2022-07-04 15:02:17 +02:00
|
|
|
}()
|
|
|
|
|
|
2025-04-05 21:50:45 +02:00
|
|
|
#define GET_OR_USE_SERIALIZATION_VERSION(cond, name) [&]() \
|
|
|
|
|
{ \
|
|
|
|
|
extern void using_##name##_serialization(); \
|
|
|
|
|
extern s32 get_##name##_serialization_version(); \
|
|
|
|
|
return (static_cast<bool>(cond) ? (using_##name##_serialization(), 0) : get_##name##_serialization_version()); \
|
2022-07-04 15:02:17 +02:00
|
|
|
}()
|
|
|
|
|
|
2025-04-05 21:50:45 +02:00
|
|
|
#define GET_SERIALIZATION_VERSION(name) []() \
|
|
|
|
|
{ \
|
|
|
|
|
extern s32 get_##name##_serialization_version(); \
|
|
|
|
|
return get_##name##_serialization_version(); \
|
2022-07-04 15:02:17 +02:00
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
#define ENABLE_BITWISE_SERIALIZATION using enable_bitcopy = std::true_type;
|
2023-06-11 22:45:47 +02:00
|
|
|
#define SAVESTATE_INIT_POS(...) static constexpr double savestate_init_pos = (__VA_ARGS__)
|