61 [[nodiscard]] std::uint32_t
Version()
const;
81 [[nodiscard]] std::uint32_t
Version()
const;
90 bool WriteRecord(std::uint32_t a_type, std::uint32_t a_version,
const void* a_buf, std::uint32_t a_length)
const;
98 inline std::uint32_t
WriteRecord(std::uint32_t a_type, std::uint32_t a_version,
const T& a_buf)
const
100 return WriteRecord(a_type, a_version, std::addressof(a_buf),
sizeof(T));
109 inline std::uint32_t
WriteRecord(std::uint32_t a_type, std::uint32_t a_version,
const T (&a_buf)[N])
const
111 return WriteRecord(a_type, a_version, std::addressof(a_buf),
sizeof(T) * N);
114 [[nodiscard]]
bool OpenRecord(std::uint32_t a_type, std::uint32_t a_version)
const;
140 bool GetNextRecordInfo(std::uint32_t& a_type, std::uint32_t& a_version, std::uint32_t& a_length)
const;
231 template <
class Last>
234 return Register_Impl(a_last);
237 template <
class First,
class... Rest>
240 return Register_Impl(a_first) &&
Register(a_rest...);
297 bool Dispatch(std::uint32_t a_messageType,
void* a_data, std::uint32_t a_dataLen,
const char* a_receiver)
const;
362 constexpr
void AuthorName(std::string_view a_name) noexcept { SetCharBuffer(a_name, std::span{
author }); }
371 [](
const REL::Version& a_version) noexcept { return a_version.pack(); });
375 constexpr
void PluginName(std::string_view a_plugin) noexcept { SetCharBuffer(a_plugin, std::span{
pluginName }); }
401 static constexpr
void SetCharBuffer(
402 std::string_view a_src,
403 std::span<char> a_dst) noexcept
405 assert(a_src.size() < a_dst.size());
406 std::fill(a_dst.begin(), a_dst.end(),
'\0');
407 std::copy(a_src.begin(), a_src.end(), a_dst.begin());
410 static_assert(offsetof(PluginVersionData, dataVersion) == 0x000);
411 static_assert(offsetof(PluginVersionData, pluginVersion) == 0x004);
412 static_assert(offsetof(PluginVersionData, pluginName) == 0x008);
413 static_assert(offsetof(PluginVersionData, author) == 0x108);
414 static_assert(offsetof(PluginVersionData, supportEmail) == 0x208);
415 static_assert(offsetof(PluginVersionData, padding2) == 0x305);
416 static_assert(offsetof(PluginVersionData, padding3) == 0x306);
417 static_assert(offsetof(PluginVersionData, padding5) == 0x309);
418 static_assert(offsetof(PluginVersionData, padding6) == 0x30A);
419 static_assert(offsetof(PluginVersionData, compatibleVersions) == 0x30C);
420 static_assert(offsetof(PluginVersionData, xseMinimum) == 0x34C);
421 static_assert(
sizeof(PluginVersionData) == 0x350);
Definition: Relocation.h:275
Definition: IVirtualMachine.h:38
Definition: VirtualMachine.h:46
Definition: GFxMovieView.h:24
Definition: GFxValue.h:90
Definition: InventoryEntryData.h:14
Definition: Interfaces.h:29
void * QueryInterface(std::uint32_t a_id) const
@ kTrampoline
Definition: Interfaces.h:40
@ kMessaging
Definition: Interfaces.h:38
@ kPapyrus
Definition: Interfaces.h:35
@ kSerialization
Definition: Interfaces.h:36
@ kObject
Definition: Interfaces.h:39
@ kTask
Definition: Interfaces.h:37
@ kInvalid
Definition: Interfaces.h:33
@ kScaleform
Definition: Interfaces.h:34
@ kTotal
Definition: Interfaces.h:41
const PluginInfo * GetPluginInfo(const char *a_name) const
PluginHandle GetPluginHandle() const
std::uint32_t GetReleaseIndex() const
Definition: Interfaces.h:252
Dispatcher
Definition: Interfaces.h:285
@ kVersion
Definition: Interfaces.h:266
std::uint32_t Version() const
void * GetEventDispatcher(Dispatcher a_dispatcherID) const
bool Dispatch(std::uint32_t a_messageType, void *a_data, std::uint32_t a_dataLen, const char *a_receiver) const
bool RegisterListener(const char *a_sender, EventCallback *a_callback) const
@ kTotal
Definition: Interfaces.h:281
@ kPostPostLoad
Definition: Interfaces.h:272
@ kPostLoad
Definition: Interfaces.h:271
@ kPreLoadGame
Definition: Interfaces.h:273
@ kSaveGame
Definition: Interfaces.h:275
@ kNewGame
Definition: Interfaces.h:278
@ kDataLoaded
Definition: Interfaces.h:279
@ kInputLoaded
Definition: Interfaces.h:277
@ kDeleteGame
Definition: Interfaces.h:276
@ kPostLoadGame
Definition: Interfaces.h:274
const detail::SKSEMessagingInterface * GetProxy() const
bool RegisterListener(EventCallback *a_callback) const
void(Message *a_msg) EventCallback
Definition: Interfaces.h:262
Definition: Interfaces.h:307
SKSEDelayFunctorManager & GetDelayFunctorManager() const
SKSEPersistentObjectStorage & GetPersistentObjectStorage() const
std::uint32_t Version() const
SKSEObjectRegistry & GetObjectRegistry() const
@ kVersion
Definition: Interfaces.h:311
Definition: Interfaces.h:219
bool Register(First a_first, Rest... a_rest) const
Definition: Interfaces.h:238
std::uint32_t Version() const
const detail::SKSEPapyrusInterface * GetProxy() const
bool(RE::BSScript::Internal::VirtualMachine *a_vm) RegFunction1
Definition: Interfaces.h:221
bool(RE::BSScript::IVirtualMachine *a_vm) RegFunction2
Definition: Interfaces.h:222
@ kVersion
Definition: Interfaces.h:226
bool Register(Last a_last) const
Definition: Interfaces.h:232
Definition: Interfaces.h:17
std::uint32_t EditorVersion() const
REL::Version RuntimeVersion() const
const detail::SKSEInterface * GetProxy() const
std::uint32_t SKSEVersion() const
Definition: Interfaces.h:71
std::uint32_t WriteRecord(std::uint32_t a_type, std::uint32_t a_version, const T(&a_buf)[N]) const
Definition: Interfaces.h:109
bool ResolveHandle(RE::VMHandle a_oldHandle, RE::VMHandle &a_newHandle) const
std::uint32_t WriteRecordData(const T(&a_buf)[N]) const
Definition: Interfaces.h:135
void SetLoadCallback(EventCallback *a_callback) const
std::uint32_t WriteRecord(std::uint32_t a_type, std::uint32_t a_version, const T &a_buf) const
Definition: Interfaces.h:98
void SetFormDeleteCallback(FormDeleteCallback *a_callback) const
std::uint32_t ReadRecordData(T &a_buf) const
Definition: Interfaces.h:150
void(SerializationInterface *a_intfc) EventCallback
Definition: Interfaces.h:73
void(RE::VMHandle a_handle) FormDeleteCallback
Definition: Interfaces.h:74
@ kVersion
Definition: Interfaces.h:78
std::uint32_t ReadRecordData(void *a_buf, std::uint32_t a_length) const
void SetRevertCallback(EventCallback *a_callback) const
std::uint32_t WriteRecordData(const T &a_buf) const
Definition: Interfaces.h:124
void SetUniqueID(std::uint32_t a_uid) const
bool WriteRecordData(const void *a_buf, std::uint32_t a_length) const
bool GetNextRecordInfo(std::uint32_t &a_type, std::uint32_t &a_version, std::uint32_t &a_length) const
void SetSaveCallback(EventCallback *a_callback) const
std::uint32_t ReadRecordData(T(&a_buf)[N]) const
Definition: Interfaces.h:161
const detail::SKSESerializationInterface * GetProxy() const
bool ResolveFormID(RE::FormID a_oldFormID, RE::FormID &a_newFormID) const
std::uint32_t Version() const
bool WriteRecord(std::uint32_t a_type, std::uint32_t a_version, const void *a_buf, std::uint32_t a_length) const
bool OpenRecord(std::uint32_t a_type, std::uint32_t a_version) const
Definition: Interfaces.h:192
Definition: Interfaces.h:204
Definition: Interfaces.h:174
void AddUITask(UIDelegate_v1 *a_task) const
std::function< void()> TaskFn
Definition: Interfaces.h:176
@ kVersion
Definition: Interfaces.h:180
void AddTask(TaskFn a_task) const
void AddUITask(TaskFn a_task) const
void AddTask(TaskDelegate *a_task) const
const detail::SKSETaskInterface * GetProxy() const
std::uint32_t Version() const
Definition: Interfaces.h:325
std::uint32_t Version() const
void * AllocateFromLocalPool(std::size_t a_size) const
void * AllocateFromBranchPool(std::size_t a_size) const
@ kVersion
Definition: Interfaces.h:329
std::uint32_t FormID
Definition: BSCoreTypes.h:5
std::uint64_t VMHandle
Definition: BSCoreTypes.h:7
std::uint32_t PluginHandle
Definition: Stubs.h:11
Definition: Interfaces.h:255
std::uint32_t dataLen
Definition: Interfaces.h:258
const char * sender
Definition: Interfaces.h:256
std::uint32_t type
Definition: Interfaces.h:257
void * data
Definition: Interfaces.h:259
Definition: Interfaces.h:342
std::uint32_t version
Definition: Interfaces.h:350
const char * name
Definition: Interfaces.h:349
std::uint32_t infoVersion
Definition: Interfaces.h:348
@ kVersion
Definition: Interfaces.h:345
Definition: Interfaces.h:354
@ kVersion
Definition: Interfaces.h:358
std::uint8_t padding5
Definition: Interfaces.h:395
std::uint16_t padding6
Definition: Interfaces.h:396
constexpr void UsesSigScanning(bool a_value) noexcept
Definition: Interfaces.h:379
std::uint8_t padding4
Definition: Interfaces.h:394
bool structsPost629
Definition: Interfaces.h:393
constexpr void MinimumRequiredXSEVersion(REL::Version a_version) noexcept
Definition: Interfaces.h:374
constexpr void PluginName(std::string_view a_plugin) noexcept
Definition: Interfaces.h:375
std::uint16_t padding3
Definition: Interfaces.h:390
std::uint32_t pluginVersion
Definition: Interfaces.h:383
std::uint32_t xseMinimum
Definition: Interfaces.h:398
constexpr void HasNoStructUse(bool a_value) noexcept
Definition: Interfaces.h:377
constexpr void CompatibleVersions(std::initializer_list< REL::Version > a_versions) noexcept
Definition: Interfaces.h:364
char pluginName[256]
Definition: Interfaces.h:384
constexpr void AuthorEmail(std::string_view a_email) noexcept
Definition: Interfaces.h:361
bool addressLibrary
Definition: Interfaces.h:391
std::uint8_t padding1
Definition: Interfaces.h:388
constexpr void PluginVersion(REL::Version a_version) noexcept
Definition: Interfaces.h:376
char author[256]
Definition: Interfaces.h:385
std::uint8_t padding2
Definition: Interfaces.h:389
bool sigScanning
Definition: Interfaces.h:392
constexpr void UsesStructsPost629(bool a_value) noexcept
Definition: Interfaces.h:380
constexpr void AuthorName(std::string_view a_name) noexcept
Definition: Interfaces.h:362
bool noStructUse
Definition: Interfaces.h:387
std::uint32_t compatibleVersions[16]
Definition: Interfaces.h:397
const std::uint32_t dataVersion
Definition: Interfaces.h:382
char supportEmail[252]
Definition: Interfaces.h:386
constexpr void UsesAddressLibrary(bool a_value) noexcept
Definition: Interfaces.h:378