#include "prx/libc/include/general/VabiMacros.hpp" #include #include extern "C" { int APS5_VABI sceNpEAAccessInitialize(void); int APS5_VABI sceNpEAAccessTerminate(void); int APS5_VABI sceNpHasEAAccessSubscription(int, bool*); } namespace { void Require(bool value) { if (!value) std::abort(); } template bool Throws(TAction action) { try { action(); } catch (const std::logic_error&) { return true; } return false; } } int main() { bool subscribed = true; Require(Throws([] { sceNpEAAccessTerminate(); })); Require(Throws([&] { sceNpHasEAAccessSubscription(1, &subscribed); })); Require(sceNpEAAccessInitialize() == 0); Require(Throws([] { sceNpEAAccessInitialize(); })); Require(Throws([] { sceNpHasEAAccessSubscription(1, nullptr); })); Require(sceNpHasEAAccessSubscription(1, &subscribed) == 0); Require(!subscribed); subscribed = true; Require(sceNpHasEAAccessSubscription(0, &subscribed) == 0); Require(!subscribed); Require(sceNpEAAccessTerminate() == 0); Require(Throws([] { sceNpEAAccessTerminate(); })); Require(Throws([&] { sceNpHasEAAccessSubscription(1, &subscribed); })); Require(sceNpEAAccessInitialize() == 0); Require(sceNpEAAccessTerminate() == 0); }