mirror of
https://github.com/geode-sdk/geode.git
synced 2025-03-13 22:49:52 -04:00
allow protected and private create funcs
This commit is contained in:
parent
f385cc9d43
commit
2f0c36f007
2 changed files with 15 additions and 3 deletions
|
@ -133,6 +133,11 @@ namespace geode {
|
|||
|
||||
Result<tulip::hook::HandlerMetadata, std::string> handlerMetadataForAddress(uintptr_t address);
|
||||
}
|
||||
|
||||
namespace addresser {
|
||||
template <class Class>
|
||||
Class* friendCreate();
|
||||
}
|
||||
}
|
||||
|
||||
#define GEODE_FRIEND_MODIFY \
|
||||
|
@ -142,7 +147,9 @@ namespace geode {
|
|||
template <uint32_t> \
|
||||
friend uintptr_t geode::modifier::address(); \
|
||||
friend geode::Result<tulip::hook::HandlerMetadata, std::string> \
|
||||
geode::modifier::handlerMetadataForAddress(uintptr_t address);
|
||||
geode::modifier::handlerMetadataForAddress(uintptr_t address); \
|
||||
template <class Class> \
|
||||
friend Class* geode::addresser::friendCreate();
|
||||
|
||||
#define GEODE_ADD(...) __VA_ARGS__
|
||||
|
||||
|
|
|
@ -28,7 +28,12 @@ namespace geode::addresser {
|
|||
inline F rthunkAdjust(T func, F self);
|
||||
|
||||
template <class Class>
|
||||
concept HasCreate = requires() { Class::create(); };
|
||||
Class* friendCreate() {
|
||||
return Class::create();
|
||||
}
|
||||
|
||||
template <class Class>
|
||||
concept HasCreate = requires() { addresserFriendCreate<Class>(); };
|
||||
|
||||
class GEODE_DLL Addresser final {
|
||||
template <char C>
|
||||
|
@ -70,7 +75,7 @@ namespace geode::addresser {
|
|||
template <class Class>
|
||||
requires(HasCreate<Class>)
|
||||
static Class* generateInstance() {
|
||||
return Class::create();
|
||||
return friendCreate<Class>();
|
||||
}
|
||||
|
||||
template <class Class>
|
||||
|
|
Loading…
Reference in a new issue