mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2025-01-03 11:11:14 +00:00
Fix make_object
This commit is contained in:
parent
f72836d72c
commit
6d898acc98
2 changed files with 9 additions and 9 deletions
|
@ -52,7 +52,7 @@ cleanup:
|
||||||
template<typename T, typename std::enable_if_t<!std::is_base_of_v<IClientServerParentTag, T>> * = nullptr, typename ...Args>
|
template<typename T, typename std::enable_if_t<!std::is_base_of_v<IClientServerParentTag, T>> * = nullptr, typename ...Args>
|
||||||
auto MakeObject(Args&& ...args)
|
auto MakeObject(Args&& ...args)
|
||||||
{
|
{
|
||||||
auto [res, obj] = MakeObjectRaw(std::forward<Args>(args)...);
|
auto [res, obj] = MakeObjectRaw<T>(std::forward<Args>(args)...);
|
||||||
return std::tuple<Result, SharedPtr<T>>{res, SharedPtr<T>{obj}};
|
return std::tuple<Result, SharedPtr<T>>{res, SharedPtr<T>{obj}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,8 +61,8 @@ auto MakeObject(Args&& ...args)
|
||||||
{
|
{
|
||||||
// Bug in type inference?
|
// Bug in type inference?
|
||||||
using RetType = std::tuple<Result, SharedPtr<typename T::ServerClass>, SharedPtr<typename T::ClientClass>>;
|
using RetType = std::tuple<Result, SharedPtr<typename T::ServerClass>, SharedPtr<typename T::ClientClass>>;
|
||||||
auto [res, obj] = MakeObjectRaw(std::forward<Args>(args)...);
|
auto [res, obj] = MakeObjectRaw<T>(std::forward<Args>(args)...);
|
||||||
return res.IsSuccess() ? RetType{res, &obj.GetServer(), &obj.GetClient()} : RetType{res, nullptr, nullptr};
|
return res.IsSuccess() ? RetType{res, &obj->GetServer(), &obj->GetClient()} : RetType{res, nullptr, nullptr};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, typename std::enable_if_t<!std::is_base_of_v<IClientServerParentTag, T>> * = nullptr, typename ...Args>
|
template<typename T, typename std::enable_if_t<!std::is_base_of_v<IClientServerParentTag, T>> * = nullptr, typename ...Args>
|
||||||
|
@ -72,7 +72,7 @@ auto MakeObjectWithHandle(Args&& ...args)
|
||||||
KProcess *currentProcess = cctx.GetCurrentProcess();
|
KProcess *currentProcess = cctx.GetCurrentProcess();
|
||||||
KHandleTable &tbl = currentProcess->GetHandleTable();
|
KHandleTable &tbl = currentProcess->GetHandleTable();
|
||||||
|
|
||||||
auto [res, obj] = MakeObjectRaw(std::forward<Args>(args)...);
|
auto [res, obj] = MakeObjectRaw<T>(std::forward<Args>(args)...);
|
||||||
if (res.IsFailure()) {
|
if (res.IsFailure()) {
|
||||||
return std::tuple{res, Handle{}};
|
return std::tuple{res, Handle{}};
|
||||||
}
|
}
|
||||||
|
@ -87,14 +87,14 @@ auto MakeObjectWithHandle(Args&& ...args)
|
||||||
KProcess *currentProcess = cctx.GetCurrentProcess();
|
KProcess *currentProcess = cctx.GetCurrentProcess();
|
||||||
KHandleTable &tbl = currentProcess->GetHandleTable();
|
KHandleTable &tbl = currentProcess->GetHandleTable();
|
||||||
|
|
||||||
auto [res, obj] = MakeObjectRaw(std::forward<Args>(args)...);
|
auto [res, obj] = MakeObjectRaw<T>(std::forward<Args>(args)...);
|
||||||
if (res.IsFailure()) {
|
if (res.IsFailure()) {
|
||||||
return std::tuple{res, Handle{}, Handle{}};
|
return std::tuple{res, Handle{}, Handle{}};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto [res2, serverHandle] = tbl.Generate(&obj.GetServer());
|
auto [res2, serverHandle] = tbl.Generate(&obj->GetServer());
|
||||||
if (res2.IsSuccess()) {
|
if (res2.IsSuccess()) {
|
||||||
auto [res3, clientHandle] = tbl.Generate(&obj.GetClient());
|
auto [res3, clientHandle] = tbl.Generate(&obj->GetClient());
|
||||||
if (res3.IsSuccess()) {
|
if (res3.IsSuccess()) {
|
||||||
return std::tuple{res3, serverHandle, clientHandle};
|
return std::tuple{res3, serverHandle, clientHandle};
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
using namespace mesosphere;
|
using namespace mesosphere;
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
auto obj = MakeObjectRaw<KEvent>();
|
auto [res, h1, h2] = MakeObjectWithHandle<KEvent>();
|
||||||
(void)obj;
|
(void)res; (void)h1; (void)h2;
|
||||||
for(;;);
|
for(;;);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue