diff --git a/stratosphere/ams_mitm/source/set_mitm/set_mitm_service.cpp b/stratosphere/ams_mitm/source/set_mitm/set_mitm_service.cpp index 88274477d..30e8ebea9 100644 --- a/stratosphere/ams_mitm/source/set_mitm/set_mitm_service.cpp +++ b/stratosphere/ams_mitm/source/set_mitm/set_mitm_service.cpp @@ -44,7 +44,7 @@ bool SetMitmService::IsValidLanguageCode(u64 lang_code) { LanguageCode_SimplifiedChinese, LanguageCode_TraditionalChinese, }; - size_t num_language_codes = sizeof(s_valid_language_codes) / sizeof(s_valid_language_codes[0]); + size_t num_language_codes = sts::util::size(s_valid_language_codes); if (GetRuntimeFirmwareVersion() < FirmwareVersion_400) { /* 4.0.0 added simplified and traditional chinese. */ num_language_codes -= 2; diff --git a/stratosphere/ams_mitm/source/utils.cpp b/stratosphere/ams_mitm/source/utils.cpp index 46e9fe236..9a77e7f88 100644 --- a/stratosphere/ams_mitm/source/utils.cpp +++ b/stratosphere/ams_mitm/source/utils.cpp @@ -84,7 +84,7 @@ void Utils::InitializeThreadFunc(void *args) { DoWithSmSession([&]() { Handle tmp_hnd = 0; static const char * const required_active_services[] = {"pcv", "gpio", "pinmux", "psc:c"}; - for (unsigned int i = 0; i < sizeof(required_active_services) / sizeof(required_active_services[0]); i++) { + for (unsigned int i = 0; i < sts::util::size(required_active_services); i++) { R_ASSERT(smGetServiceOriginal(&tmp_hnd, smEncodeName(required_active_services[i]))); svcCloseHandle(tmp_hnd); } diff --git a/stratosphere/boot/source/boot_display.cpp b/stratosphere/boot/source/boot_display.cpp index 45bd1284b..0993364cc 100644 --- a/stratosphere/boot/source/boot_display.cpp +++ b/stratosphere/boot/source/boot_display.cpp @@ -14,6 +14,7 @@ * along with this program. If not, see . */ + #include #include @@ -112,9 +113,9 @@ namespace sts::boot { } } -#define DO_REGISTER_WRITES(base_address, writes) DoRegisterWrites(base_address, writes, sizeof(writes) / sizeof(writes[0])) -#define DO_SOC_DEPENDENT_REGISTER_WRITES(base_address, writes) DoSocDependentRegisterWrites(base_address, writes##Erista, sizeof(writes##Erista) / sizeof(writes##Erista[0]), writes##Mariko, sizeof(writes##Mariko) / sizeof(writes##Mariko[0])) -#define DO_DSI_SLEEP_OR_REGISTER_WRITES(writes) DoDsiSleepOrRegisterWrites(writes, sizeof(writes) / sizeof(writes[0])) +#define DO_REGISTER_WRITES(base_address, writes) DoRegisterWrites(base_address, writes, util::size(writes)) +#define DO_SOC_DEPENDENT_REGISTER_WRITES(base_address, writes) DoSocDependentRegisterWrites(base_address, writes##Erista, util::size(writes##Erista), writes##Mariko, util::size(writes##Mariko)) +#define DO_DSI_SLEEP_OR_REGISTER_WRITES(writes) DoDsiSleepOrRegisterWrites(writes, util::size(writes)) void InitializeFrameBuffer() { if (g_frame_buffer != nullptr) { @@ -296,7 +297,7 @@ namespace sts::boot { /* Parse LCD vendor. */ { u32 host_response[3]; - for (size_t i = 0; i < sizeof(host_response) / sizeof(host_response[0]); i++) { + for (size_t i = 0; i < util::size(host_response); i++) { host_response[i] = reg::Read(g_dsi_regs + sizeof(u32) * DSI_RD_DATA); } diff --git a/stratosphere/boot/source/i2c/driver/impl/i2c_bus_accessor.cpp b/stratosphere/boot/source/i2c/driver/impl/i2c_bus_accessor.cpp index 3ab1f31b2..9f1ad98ed 100644 --- a/stratosphere/boot/source/i2c/driver/impl/i2c_bus_accessor.cpp +++ b/stratosphere/boot/source/i2c/driver/impl/i2c_bus_accessor.cpp @@ -245,7 +245,7 @@ namespace sts::i2c::driver::impl { static constexpr u64 s_interrupts[] = { 0x46, 0x74, 0x7C, 0x98, 0x55, 0x5F }; - if (ConvertToIndex(bus) >= sizeof(s_interrupts) / sizeof(s_interrupts[0])) { + if (ConvertToIndex(bus) >= util::size(s_interrupts)) { std::abort(); } diff --git a/stratosphere/boot/source/i2c/driver/impl/i2c_device_config.cpp b/stratosphere/boot/source/i2c/driver/impl/i2c_device_config.cpp index 543e63afd..870131362 100644 --- a/stratosphere/boot/source/i2c/driver/impl/i2c_device_config.cpp +++ b/stratosphere/boot/source/i2c/driver/impl/i2c_device_config.cpp @@ -67,7 +67,7 @@ namespace sts::i2c::driver::impl { {I2cDevice_Ina226VddDdr0V6, Bus::I2C2, 0x4e, AddressingMode::SevenBit, SpeedMode::Fast, 3, 5'000'000}, }; - constexpr size_t NumDeviceConfigs = sizeof(g_device_configs) / sizeof(g_device_configs[0]); + constexpr size_t NumDeviceConfigs = util::size(g_device_configs); constexpr size_t DeviceInvalidIndex = static_cast(-1); diff --git a/stratosphere/boot/source/pinmux/pinmux_initial_configuration.cpp b/stratosphere/boot/source/pinmux/pinmux_initial_configuration.cpp index 507693272..ea055d2a0 100644 --- a/stratosphere/boot/source/pinmux/pinmux_initial_configuration.cpp +++ b/stratosphere/boot/source/pinmux/pinmux_initial_configuration.cpp @@ -79,7 +79,7 @@ namespace sts::pinmux { static constexpr u32 ExtraIowaPadNames[] = { 0xAA, 0xAC, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9 }; - for (size_t i = 0; i < sizeof(ExtraIowaPadNames) / sizeof(ExtraIowaPadNames[0]); i++) { + for (size_t i = 0; i < util::size(ExtraIowaPadNames); i++) { UpdatePad(ExtraIowaPadNames[i], 0x2000, 0x2000); } } diff --git a/stratosphere/dmnt/source/dmnt_cheat_manager.cpp b/stratosphere/dmnt/source/dmnt_cheat_manager.cpp index 3441b393b..ce4315a8d 100644 --- a/stratosphere/dmnt/source/dmnt_cheat_manager.cpp +++ b/stratosphere/dmnt/source/dmnt_cheat_manager.cpp @@ -356,7 +356,7 @@ bool DmntCheatManager::ParseCheats(const char *s, size_t len) { } /* Bounds check the opcode count. */ - if (cur_entry->definition.num_opcodes >= sizeof(cur_entry->definition.opcodes)/sizeof(cur_entry->definition.opcodes[0])) { + if (cur_entry->definition.num_opcodes >= sts::util::size(cur_entry->definition.opcodes)) { return false; } @@ -662,7 +662,7 @@ Result DmntCheatManager::AddCheat(u32 *out_id, CheatDefinition *def, bool enable return ResultDmntCheatNotAttached; } - if (def->num_opcodes == 0 || def->num_opcodes > sizeof(def->opcodes)/sizeof(def->opcodes[0])) { + if (def->num_opcodes == 0 || def->num_opcodes > sts::util::size(def->opcodes)) { return ResultDmntCheatInvalidCheat; } @@ -860,7 +860,7 @@ Result DmntCheatManager::ForceOpenCheatProcess() { { LoaderModuleInfo proc_modules[2]; u32 num_modules; - R_TRY(ldrDmntGetModuleInfos(g_cheat_process_metadata.process_id, proc_modules, sizeof(proc_modules)/sizeof(proc_modules[0]), &num_modules)); + R_TRY(ldrDmntGetModuleInfos(g_cheat_process_metadata.process_id, proc_modules, sts::util::size(proc_modules), &num_modules)); /* All applications must have two modules. */ /* However, this is a force-open, so we will accept one module. */ @@ -949,7 +949,7 @@ void DmntCheatManager::OnNewApplicationLaunch() { { LoaderModuleInfo proc_modules[2]; u32 num_modules; - R_ASSERT(ldrDmntGetModuleInfos(g_cheat_process_metadata.process_id, proc_modules, sizeof(proc_modules)/sizeof(proc_modules[0]), &num_modules)); + R_ASSERT(ldrDmntGetModuleInfos(g_cheat_process_metadata.process_id, proc_modules, sts::util::size(proc_modules), &num_modules)); /* All applications must have two modules. */ /* If we only have one, we must be e.g. mitming HBL. */ diff --git a/stratosphere/libstratosphere b/stratosphere/libstratosphere index d6eacecce..c9dc24cce 160000 --- a/stratosphere/libstratosphere +++ b/stratosphere/libstratosphere @@ -1 +1 @@ -Subproject commit d6eacecce97d93b8261a9def8f69385f6a231dc9 +Subproject commit c9dc24cce1e832650e6a2fc67bce465062504279 diff --git a/stratosphere/pm/source/boot2/boot2_api.cpp b/stratosphere/pm/source/boot2/boot2_api.cpp index 6c00d4833..6614d61b2 100644 --- a/stratosphere/pm/source/boot2/boot2_api.cpp +++ b/stratosphere/pm/source/boot2/boot2_api.cpp @@ -36,7 +36,7 @@ namespace sts::boot2 { ncm::TitleId{TitleId_Settings}, /* settings */ ncm::TitleId{TitleId_Pcv}, /* pcv */ }; - constexpr size_t NumPreSdCardLaunchPrograms = sizeof(PreSdCardLaunchPrograms) / sizeof(PreSdCardLaunchPrograms[0]); + constexpr size_t NumPreSdCardLaunchPrograms = util::size(PreSdCardLaunchPrograms); constexpr ncm::TitleId AdditionalLaunchPrograms[] = { ncm::TitleId{TitleId_Usb}, /* usb */ @@ -81,7 +81,7 @@ namespace sts::boot2 { ncm::TitleId{TitleId_Grc}, /* grc */ ncm::TitleId{TitleId_Olsc}, /* olsc */ }; - constexpr size_t NumAdditionalLaunchPrograms = sizeof(AdditionalLaunchPrograms) / sizeof(AdditionalLaunchPrograms[0]); + constexpr size_t NumAdditionalLaunchPrograms = util::size(AdditionalLaunchPrograms); constexpr ncm::TitleId AdditionalMaintenanceLaunchPrograms[] = { ncm::TitleId{TitleId_Usb}, /* usb */ @@ -122,7 +122,7 @@ namespace sts::boot2 { ncm::TitleId{TitleId_Grc}, /* grc */ ncm::TitleId{TitleId_Olsc}, /* olsc */ }; - constexpr size_t NumAdditionalMaintenanceLaunchPrograms = sizeof(AdditionalMaintenanceLaunchPrograms) / sizeof(AdditionalMaintenanceLaunchPrograms[0]); + constexpr size_t NumAdditionalMaintenanceLaunchPrograms = util::size(AdditionalMaintenanceLaunchPrograms); /* Helpers. */ inline bool IsHexadecimal(const char *str) { diff --git a/stratosphere/pm/source/impl/pm_resource_manager.cpp b/stratosphere/pm/source/impl/pm_resource_manager.cpp index 321aa66d0..e6ed25a5f 100644 --- a/stratosphere/pm/source/impl/pm_resource_manager.cpp +++ b/stratosphere/pm/source/impl/pm_resource_manager.cpp @@ -29,7 +29,7 @@ namespace sts::pm::resource { LimitableResource_TransferMemories, LimitableResource_Sessions, }; - constexpr size_t LimitableResource_Count = sizeof(LimitableResources) / sizeof(LimitableResources[0]); + constexpr size_t LimitableResource_Count = util::size(LimitableResources); constexpr size_t Megabyte = 0x100000;