From bc0146c2038c46f789a246d5616afd7c425157f3 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 14 Feb 2021 11:05:57 -0500 Subject: Eliminate ARRAY_LENGTH template in favor of C++17's std::size * osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h * sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration * gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset * emucore.h: Remove obsolete typedef --- src/devices/bus/arcadia/slot.cpp | 2 +- src/devices/bus/gameboy/gb_slot.cpp | 6 +- src/devices/bus/gio64/newport.cpp | 4 +- src/devices/bus/ieee488/c2040fdc.cpp | 2 +- src/devices/bus/intellec4/intellec4.cpp | 26 +- src/devices/bus/intellec4/intellec4.h | 14 +- src/devices/bus/lpci/i82439tx.cpp | 4 +- src/devices/bus/lpci/pci.cpp | 4 +- src/devices/bus/m5/slot.cpp | 4 +- src/devices/bus/megadrive/svp.cpp | 4 +- src/devices/bus/nes/nes_ines.hxx | 4 +- src/devices/bus/nes/nes_slot.cpp | 4 +- src/devices/bus/nes/nes_unif.hxx | 3 +- src/devices/bus/nes_ctrl/bcbattle.cpp | 2 +- src/devices/bus/nubus/nubus_image.cpp | 4 +- src/devices/bus/snes/snes_slot.cpp | 2 +- src/devices/bus/snes_ctrl/bcbattle.cpp | 2 +- src/devices/bus/vectrex/slot.cpp | 2 +- src/devices/bus/vme/vme_fccpu20.cpp | 4 +- src/devices/bus/vme/vme_hcpu30.cpp | 4 +- src/devices/bus/vsmile/vsmile_ctrl.cpp | 14 +- src/devices/bus/vtech/memexp/floppy.cpp | 2 +- src/devices/cpu/arm7/arm7.cpp | 46 ++- src/devices/cpu/arm7/arm7drc.hxx | 8 +- src/devices/cpu/cosmac/cosmac.cpp | 4 +- src/devices/cpu/drcbec.cpp | 6 +- src/devices/cpu/drcbeut.cpp | 4 +- src/devices/cpu/drcbex64.cpp | 14 +- src/devices/cpu/drcbex86.cpp | 16 +- src/devices/cpu/drcuml.cpp | 32 +- src/devices/cpu/dsp16/dsp16fe.cpp | 12 +- src/devices/cpu/dspp/dsppdrc.cpp | 4 +- src/devices/cpu/i386/i386dasm.cpp | 2 +- src/devices/cpu/i8085/i8085.cpp | 2 +- src/devices/cpu/m6502/m6500_1.cpp | 2 +- src/devices/cpu/m6809/6x09dasm.cpp | 4 +- src/devices/cpu/mb86235/mb86235drc.cpp | 4 +- src/devices/cpu/mips/mips1.cpp | 20 +- src/devices/cpu/mips/mips3drc.cpp | 8 +- src/devices/cpu/mips/r4000.cpp | 20 +- src/devices/cpu/nec/necdasm.cpp | 2 +- src/devices/cpu/powerpc/ppccom.cpp | 12 +- src/devices/cpu/powerpc/ppcdrc.cpp | 12 +- src/devices/cpu/romp/romp.cpp | 2 +- src/devices/cpu/rsp/rspdrc.cpp | 4 +- src/devices/cpu/sh/sh.cpp | 8 +- src/devices/cpu/sharc/sharc.cpp | 57 ++- src/devices/cpu/sharc/sharcdrc.cpp | 4 +- src/devices/cpu/sparc/sparc.cpp | 6 +- src/devices/cpu/tms32031/tms32031.cpp | 2 +- src/devices/cpu/tms34010/tms34010.cpp | 2 +- src/devices/cpu/tms9900/tms9995.cpp | 2 +- src/devices/cpu/uml.cpp | 2 +- src/devices/cpu/unsp/unsp.cpp | 2 +- src/devices/imagedev/cassette.cpp | 2 +- src/devices/imagedev/flopdrv.cpp | 2 +- src/devices/machine/53c810.cpp | 2 +- src/devices/machine/64h156.cpp | 2 +- src/devices/machine/68307tmu.cpp | 8 +- src/devices/machine/am2901b.cpp | 4 +- src/devices/machine/amigafdc.cpp | 2 +- src/devices/machine/appldriv.cpp | 2 +- src/devices/machine/eepromser.cpp | 8 +- src/devices/machine/fdc_pll.cpp | 2 +- src/devices/machine/gt64xxx.cpp | 6 +- src/devices/machine/i8279.cpp | 4 +- src/devices/machine/keyboard.ipp | 6 +- src/devices/machine/laserdsc.cpp | 6 +- src/devices/machine/ldv1000.cpp | 2 +- src/devices/machine/ldvp931.cpp | 2 +- src/devices/machine/ns32081.cpp | 2 +- src/devices/machine/nscsi_bus.cpp | 2 +- src/devices/machine/pci.cpp | 4 +- src/devices/machine/pckeybrd.cpp | 12 +- src/devices/machine/rtc4543.cpp | 4 +- src/devices/machine/s3c24xx.hxx | 2 +- src/devices/machine/sa1110.cpp | 123 +++--- src/devices/machine/sa1111.cpp | 94 +++-- src/devices/machine/scc2698b.cpp | 8 +- src/devices/machine/sensorboard.cpp | 2 +- src/devices/machine/spg2xx_io.cpp | 14 +- src/devices/machine/wd_fdc.cpp | 2 +- src/devices/machine/z80sio.cpp | 12 +- src/devices/machine/z8536.cpp | 2 +- src/devices/sound/nile.cpp | 2 +- src/devices/sound/spu_tables.cpp | 10 +- src/devices/sound/ym2413.cpp | 85 ++-- src/devices/video/gb_lcd.cpp | 52 ++- src/devices/video/gba_lcd.cpp | 4 +- src/devices/video/i8244.cpp | 8 +- src/devices/video/i82730.cpp | 2 +- src/devices/video/jangou_blitter.cpp | 2 +- src/devices/video/mc6847.cpp | 6 +- src/devices/video/mc6847.h | 2 +- src/devices/video/nt7534.cpp | 4 +- src/devices/video/poly.h | 2 +- src/devices/video/polylgcy.cpp | 4 +- src/devices/video/pwm.cpp | 9 +- src/devices/video/pwm.h | 4 +- src/devices/video/snes_ppu.cpp | 18 +- src/devices/video/stvvdp2.cpp | 2 +- src/devices/video/tms34061.cpp | 4 +- src/devices/video/vic4567.cpp | 6 +- src/devices/video/voodoo.cpp | 40 +- src/emu/bookkeeping.cpp | 10 +- src/emu/crsshair.cpp | 2 +- src/emu/debug/debugcmd.cpp | 2 +- src/emu/debug/debugcpu.cpp | 2 +- src/emu/debug/debughlp.cpp | 4 +- src/emu/debug/dvbpoints.cpp | 4 +- src/emu/debug/dvwpoints.cpp | 4 +- src/emu/diexec.cpp | 6 +- src/emu/diimage.cpp | 18 +- src/emu/dipalette.cpp | 2 +- src/emu/diserial.h | 8 +- src/emu/distate.cpp | 4 +- src/emu/emucore.h | 3 - src/emu/fileio.cpp | 4 +- src/emu/input.cpp | 6 +- src/emu/ioport.cpp | 17 +- src/emu/natkeyboard.cpp | 6 +- src/emu/profiler.h | 2 +- src/emu/render.cpp | 10 +- src/emu/rendfont.cpp | 6 +- src/emu/softlist_dev.cpp | 2 +- src/emu/sound.cpp | 8 +- src/emu/uiinput.cpp | 6 +- src/emu/validity.cpp | 2 +- src/frontend/mame/clifront.cpp | 2 +- src/frontend/mame/ui/custui.cpp | 4 +- src/frontend/mame/ui/inifile.cpp | 12 +- src/frontend/mame/ui/selgame.cpp | 2 +- src/frontend/mame/ui/simpleselgame.cpp | 4 +- src/frontend/mame/ui/sndmenu.cpp | 6 +- src/frontend/mame/ui/toolbar.ipp | 2 +- src/frontend/mame/ui/ui.cpp | 19 +- src/frontend/mame/ui/utils.cpp | 4 +- src/lib/formats/ap2_dsk.cpp | 2 +- src/lib/formats/ap_dsk35.cpp | 22 +- src/lib/formats/cassimg.cpp | 4 +- src/lib/formats/cassimg.h | 1 - src/lib/formats/flopimg.cpp | 2 +- src/lib/formats/p2000t_cas.cpp | 4 +- src/lib/formats/pc_dsk.cpp | 2 +- src/lib/util/chd.cpp | 8 +- src/lib/util/chdcodec.cpp | 4 +- src/lib/util/corefile.cpp | 8 +- src/lib/util/coretmpl.h | 10 + src/lib/util/flac.cpp | 8 +- src/lib/util/flac.h | 20 +- src/lib/util/options.cpp | 3 +- src/lib/util/plaparse.cpp | 6 +- src/lib/util/png.cpp | 6 +- src/lib/util/pool.cpp | 10 +- src/lib/util/unicode.cpp | 2 +- src/mame/audio/meadows.cpp | 4 +- src/mame/audio/svis_snd.cpp | 2 +- src/mame/drivers/a2600.cpp | 4 +- src/mame/drivers/a7800.cpp | 2 +- src/mame/drivers/apexc.cpp | 2 +- src/mame/drivers/apple2gs.cpp | 8 +- src/mame/drivers/arcadia.cpp | 6 +- src/mame/drivers/atari400.cpp | 4 +- src/mame/drivers/attache.cpp | 4 +- src/mame/drivers/bmcbowl.cpp | 6 +- src/mame/drivers/busicom.cpp | 6 +- src/mame/drivers/clickstart.cpp | 8 +- src/mame/drivers/dai.cpp | 2 +- src/mame/drivers/ddenlovr.cpp | 2 +- src/mame/drivers/dgn_beta.cpp | 2 +- src/mame/drivers/dynax.cpp | 2 +- src/mame/drivers/fccpu30.cpp | 4 +- src/mame/drivers/flicker.cpp | 2 +- src/mame/drivers/funworld.cpp | 6 +- src/mame/drivers/gaiden.cpp | 2 +- src/mame/drivers/gameking.cpp | 2 +- src/mame/drivers/gba.cpp | 4 +- src/mame/drivers/gimix.cpp | 2 +- src/mame/drivers/gmaster.cpp | 8 +- src/mame/drivers/gunpey.cpp | 2 +- src/mame/drivers/hk68v10.cpp | 4 +- src/mame/drivers/homelab.cpp | 4 +- src/mame/drivers/jalmah.cpp | 10 +- src/mame/drivers/laser3k.cpp | 2 +- src/mame/drivers/ldplayer.cpp | 14 +- src/mame/drivers/liberate.cpp | 2 +- src/mame/drivers/lviv.cpp | 2 +- src/mame/drivers/mediagx.cpp | 4 +- src/mame/drivers/mvme147.cpp | 4 +- src/mame/drivers/nc.cpp | 4 +- src/mame/drivers/news_38xx.cpp | 2 +- src/mame/drivers/news_68k.cpp | 2 +- src/mame/drivers/news_r3k.cpp | 2 +- src/mame/drivers/nightgal.cpp | 2 +- src/mame/drivers/palm_dbg.hxx | 2 +- src/mame/drivers/pdp1.cpp | 2 +- src/mame/drivers/psikyosh.cpp | 4 +- src/mame/drivers/psion5.cpp | 4 +- src/mame/drivers/seibuspi.cpp | 2 +- src/mame/drivers/skydiver.cpp | 6 +- src/mame/drivers/spcforce.cpp | 4 +- src/mame/drivers/superdq.cpp | 3 +- src/mame/drivers/supracan.cpp | 6 +- src/mame/drivers/svision.cpp | 2 +- src/mame/drivers/tecnbras.cpp | 4 +- src/mame/drivers/ti89.cpp | 4 +- src/mame/drivers/tutor.cpp | 4 +- src/mame/drivers/vegas.cpp | 2 +- src/mame/drivers/vis.cpp | 2 +- src/mame/drivers/wpc_dot.cpp | 2 +- src/mame/drivers/x07.cpp | 2 +- src/mame/includes/saitek_stratos.h | 2 +- src/mame/machine/amstrad.cpp | 2 +- src/mame/machine/bebox.cpp | 6 +- src/mame/machine/bfm_sc45_helper.cpp | 8 +- src/mame/machine/coco.cpp | 2 +- src/mame/machine/decocass_tape.cpp | 2 +- src/mame/machine/etna.cpp | 6 +- src/mame/machine/fddebug.cpp | 12 +- src/mame/machine/imm6_76.cpp | 8 +- src/mame/machine/mac.cpp | 6 +- src/mame/machine/rosetta.cpp | 4 +- src/mame/machine/sorcerer.cpp | 3 +- src/mame/machine/taitoio.cpp | 2 +- src/mame/machine/z80bin.cpp | 4 +- src/mame/video/911_vdt.cpp | 6 +- src/mame/video/apple2.cpp | 4 +- src/mame/video/darkmist.cpp | 2 +- src/mame/video/firetrk.cpp | 8 +- src/mame/video/gaelco3d.cpp | 2 +- src/mame/video/gime.cpp | 18 +- src/mame/video/k054156_k054157_k056832.cpp | 2 +- src/mame/video/lordgun.cpp | 4 +- src/mame/video/midzeus.cpp | 4 +- src/mame/video/namcos22.cpp | 2 +- src/mame/video/nemesis.cpp | 2 +- src/mame/video/pocketc.cpp | 4 +- src/mame/video/sega16sp.cpp | 2 +- src/mame/video/sgi_ge5.cpp | 6 +- src/mame/video/sgi_re2.cpp | 2 +- src/mame/video/starshp1.cpp | 2 +- src/mame/video/stic.cpp | 2 +- src/mame/video/vc4000.cpp | 2 +- src/osd/modules/debugger/win/editwininfo.cpp | 2 +- src/osd/modules/file/winrtfile.cpp | 2 +- src/osd/modules/font/font_osx.cpp | 4 +- src/osd/modules/font/font_sdl.cpp | 2 +- src/osd/modules/font/font_windows.cpp | 4 +- src/osd/modules/input/input_common.cpp | 2 +- src/osd/modules/input/input_common.h | 4 +- src/osd/modules/input/input_dinput.cpp | 2 +- src/osd/modules/input/input_dinput.h | 2 +- src/osd/modules/input/input_rawinput.cpp | 6 +- src/osd/modules/input/input_sdl.cpp | 8 +- src/osd/modules/input/input_uwp.cpp | 2 +- src/osd/modules/input/input_win32.cpp | 4 +- src/osd/modules/input/input_x11.cpp | 4 +- src/osd/modules/lib/osdlib_macosx.cpp | 2 +- src/osd/osdcomm.h | 16 +- src/osd/windows/winmain.cpp | 6 +- src/osd/windows/winutf8.cpp | 2 +- src/tools/chdman.cpp | 28 +- src/tools/floptool.cpp | 2 +- src/tools/imgtool/filtbas.cpp | 24 +- src/tools/imgtool/imgterrs.cpp | 4 +- src/tools/imgtool/imgtool.cpp | 6 +- src/tools/imgtool/main.cpp | 8 +- src/tools/imgtool/modules.cpp | 12 +- src/tools/imgtool/modules/bml3.cpp | 4 +- src/tools/imgtool/modules/concept.cpp | 6 +- src/tools/imgtool/modules/dgndos.cpp | 4 +- src/tools/imgtool/modules/fat.cpp | 12 +- src/tools/imgtool/modules/mac.cpp | 34 +- src/tools/imgtool/modules/os9.cpp | 14 +- src/tools/imgtool/modules/pc_hard.cpp | 3 +- src/tools/imgtool/modules/prodos.cpp | 2 +- src/tools/imgtool/modules/rsdos.cpp | 4 +- src/tools/imgtool/modules/thomson.cpp | 2 +- src/tools/imgtool/modules/ti99.cpp | 40 +- src/tools/imgtool/modules/ti990hd.cpp | 14 +- src/tools/imgtool/modules/vzdos.cpp | 2 +- src/tools/jedutil.cpp | 584 +++++++++++++-------------- src/tools/regrep.cpp | 2 +- src/tools/srcclean.cpp | 5 +- src/tools/unidasm.cpp | 4 +- 285 files changed, 1299 insertions(+), 1311 deletions(-) diff --git a/src/devices/bus/arcadia/slot.cpp b/src/devices/bus/arcadia/slot.cpp index bf9329dc880..79e9d741618 100644 --- a/src/devices/bus/arcadia/slot.cpp +++ b/src/devices/bus/arcadia/slot.cpp @@ -119,7 +119,7 @@ static int arcadia_get_pcb_id(const char *slot) #if 0 static const char *arcadia_get_slot(int type) { - for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) + for (int i = 0; i < std::size(slot_list); i++) { if (slot_list[i].pcb_id == type) return slot_list[i].slot_option; diff --git a/src/devices/bus/gameboy/gb_slot.cpp b/src/devices/bus/gameboy/gb_slot.cpp index f09a993aa90..03c17f113ca 100644 --- a/src/devices/bus/gameboy/gb_slot.cpp +++ b/src/devices/bus/gameboy/gb_slot.cpp @@ -476,7 +476,7 @@ bool gb_cart_slot_device_base::is_mbc1col_game(const uint8_t *ROM, uint32_t len) "SUPERCHINESE 123" }; - const uint8_t rows = ARRAY_LENGTH(internal_names); + const uint8_t rows = std::size(internal_names); for (uint8_t i = 0x00; i < rows; ++i) { if (0 == memcmp(&ROM[0x134], &internal_names[i][0], name_length)) @@ -803,10 +803,10 @@ void gb_cart_slot_device_base::internal_header_logging(uint8_t *ROM, uint32_t le logerror("\tRAM Size: %d kB [0x%02X]\n", ramsize[ROM[0x0149] & 0x07], ROM[0x0149]); logerror("\tLicense code: 0x%02X%02X\n", ROM[0x0145], ROM[0x0144] ); tmp = (ROM[0x014b] << 8) + ROM[0x014a]; - for (i = 0; i < ARRAY_LENGTH(companies); i++) + for (i = 0; i < std::size(companies); i++) if (tmp == companies[i].code) break; - logerror("\tManufacturer ID: 0x%02X [%s]\n", tmp, (i < ARRAY_LENGTH(companies)) ? companies[i].name : "?"); + logerror("\tManufacturer ID: 0x%02X [%s]\n", tmp, (i < std::size(companies)) ? companies[i].name : "?"); logerror("\tVersion Number: 0x%02X\n", ROM[0x014c]); logerror("\tComplement Check: 0x%02X\n", ROM[0x014d]); logerror("\tChecksum: 0x%04X\n", ((ROM[0x014e] << 8) + ROM[0x014f])); diff --git a/src/devices/bus/gio64/newport.cpp b/src/devices/bus/gio64/newport.cpp index 142947b4ae0..e017708a2c2 100644 --- a/src/devices/bus/gio64/newport.cpp +++ b/src/devices/bus/gio64/newport.cpp @@ -86,7 +86,7 @@ void xmap9_device::device_reset() m_cursor_cmap = 0; m_popup_cmap = 0; m_mode_table_idx = 0; - memset(m_mode_table, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_mode_table)); + std::fill(std::begin(m_mode_table), std::end(m_mode_table), 0); } void xmap9_device::serialize(FILE *file) @@ -233,7 +233,7 @@ void cmap_device::device_reset() { m_status = 8; m_palette_idx = 0; - memset(m_palette, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_palette)); + std::fill(std::begin(m_palette), std::end(m_palette), 0); } void cmap_device::serialize(FILE *file) diff --git a/src/devices/bus/ieee488/c2040fdc.cpp b/src/devices/bus/ieee488/c2040fdc.cpp index 7ea02400fcd..b2b292b65fd 100644 --- a/src/devices/bus/ieee488/c2040fdc.cpp +++ b/src/devices/bus/ieee488/c2040fdc.cpp @@ -220,7 +220,7 @@ bool c2040_fdc_device::write_next_bit(bool bit, const attotime &limit) if(etime > limit) return true; - if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer)) + if(bit && cur_live.write_position < std::size(cur_live.write_buffer)) cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period; if (LOG) logerror("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit); diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp index 5c0de621b50..c70c25b31c3 100644 --- a/src/devices/bus/intellec4/intellec4.cpp +++ b/src/devices/bus/intellec4/intellec4.cpp @@ -127,7 +127,7 @@ void univ_bus_device::device_start() unsigned univ_bus_device::add_card(device_univ_card_interface &card) { - for (unsigned i = 0; ARRAY_LENGTH(m_cards) > i; ++i) + for (unsigned i = 0; std::size(m_cards) > i; ++i) { if (!m_cards[i]) { @@ -135,12 +135,12 @@ unsigned univ_bus_device::add_card(device_univ_card_interface &card) return i; } } - throw emu_fatalerror("univ_bus_device: maximum number of cards (%u) exceeded\n", unsigned(ARRAY_LENGTH(m_cards))); + throw emu_fatalerror("univ_bus_device: maximum number of cards (%u) exceeded\n", unsigned(std::size(m_cards))); } void univ_bus_device::set_test(unsigned index, int state) { - assert(ARRAY_LENGTH(m_cards) >= index); + assert(std::size(m_cards) >= index); bool const changed(bool(state) != !BIT(m_test, index)); if (changed) { @@ -150,10 +150,10 @@ void univ_bus_device::set_test(unsigned index, int state) else m_test |= u16(1U) << index; - if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) + if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards)))) m_test_out_cb(state); - for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) + for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card) { if ((index != card) && !(other & ~(u16(1U) << index))) m_cards[card]->test_in(state); @@ -163,7 +163,7 @@ void univ_bus_device::set_test(unsigned index, int state) void univ_bus_device::set_stop(unsigned index, int state) { - assert(ARRAY_LENGTH(m_cards) >= index); + assert(std::size(m_cards) >= index); bool const changed(bool(state) != !BIT(m_stop, index)); if (changed) { @@ -173,10 +173,10 @@ void univ_bus_device::set_stop(unsigned index, int state) else m_stop |= u16(1U) << index; - if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) + if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards)))) m_stop_out_cb(state); - for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) + for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card) { if ((index != card) && !(other & ~(u16(1U) << index))) m_cards[card]->stop_in(state); @@ -186,7 +186,7 @@ void univ_bus_device::set_stop(unsigned index, int state) void univ_bus_device::set_reset_4002(unsigned index, int state) { - assert(ARRAY_LENGTH(m_cards) >= index); + assert(std::size(m_cards) >= index); bool const changed(bool(state) != !BIT(m_reset_4002, index)); if (changed) { @@ -196,10 +196,10 @@ void univ_bus_device::set_reset_4002(unsigned index, int state) else m_reset_4002 |= u16(1U) << index; - if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) + if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards)))) m_reset_4002_out_cb(state); - for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) + for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card) { if ((index != card) && !(other & ~(u16(1U) << index))) m_cards[card]->reset_4002_in(state); @@ -209,7 +209,7 @@ void univ_bus_device::set_reset_4002(unsigned index, int state) void univ_bus_device::set_user_reset(unsigned index, int state) { - assert(ARRAY_LENGTH(m_cards) > index); + assert(std::size(m_cards) > index); bool const changed(bool(state) != !BIT(m_user_reset, index)); if (changed) { @@ -222,7 +222,7 @@ void univ_bus_device::set_user_reset(unsigned index, int state) if (!other) m_user_reset_out_cb(state); - for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) + for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card) { if ((index != card) && !(other & ~(u16(1U) << index))) m_cards[card]->user_reset_in(state); diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h index 230e1c80fd4..287c23681bf 100644 --- a/src/devices/bus/intellec4/intellec4.h +++ b/src/devices/bus/intellec4/intellec4.h @@ -168,17 +168,17 @@ public: // input lines DECLARE_WRITE_LINE_MEMBER(sync_in); - DECLARE_WRITE_LINE_MEMBER(test_in) {set_test(ARRAY_LENGTH(m_cards), state); } - DECLARE_WRITE_LINE_MEMBER(stop_in) {set_stop(ARRAY_LENGTH(m_cards), state); } + DECLARE_WRITE_LINE_MEMBER(test_in) {set_test(std::size(m_cards), state); } + DECLARE_WRITE_LINE_MEMBER(stop_in) {set_stop(std::size(m_cards), state); } DECLARE_WRITE_LINE_MEMBER(stop_acknowledge_in); DECLARE_WRITE_LINE_MEMBER(cpu_reset_in); - DECLARE_WRITE_LINE_MEMBER(reset_4002_in) { set_reset_4002(ARRAY_LENGTH(m_cards), state); } + DECLARE_WRITE_LINE_MEMBER(reset_4002_in) { set_reset_4002(std::size(m_cards), state); } // output lines - DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } - DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } - DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } - DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; } protected: // device_t implementation diff --git a/src/devices/bus/lpci/i82439tx.cpp b/src/devices/bus/lpci/i82439tx.cpp index e34096770b4..0966456831a 100644 --- a/src/devices/bus/lpci/i82439tx.cpp +++ b/src/devices/bus/lpci/i82439tx.cpp @@ -145,7 +145,7 @@ uint32_t i82439tx_device::pci_read(pci_bus_device *pcibus, int function, int off case 0xF4: case 0xF8: case 0xFC: - assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs)); + assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < std::size(m_regs)); result = m_regs[(offset - 0x50) / 4]; break; @@ -294,7 +294,7 @@ void i82439tx_device::pci_write(pci_bus_device *pcibus, int function, int offset case 0xF4: case 0xF8: case 0xFC: - assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs)); + assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < std::size(m_regs)); COMBINE_DATA(&m_regs[(offset - 0x50) / 4]); break; diff --git a/src/devices/bus/lpci/pci.cpp b/src/devices/bus/lpci/pci.cpp index bb9f8f4c113..34470bfa4f9 100644 --- a/src/devices/bus/lpci/pci.cpp +++ b/src/devices/bus/lpci/pci.cpp @@ -237,7 +237,7 @@ void pci_bus_device::add_sibling(pci_bus_device *sibling, int busnum) void pci_bus_device::remap(int space_id, offs_t start, offs_t end) { - for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) + for (int i = 0; i < std::size(m_devtag); i++) { if (m_device[i] != nullptr) m_device[i]->remap(space_id, start, end); @@ -272,7 +272,7 @@ void pci_bus_device::device_start() char id[3]; /* find all our devices */ - for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) + for (int i = 0; i < std::size(m_devtag); i++) { sprintf(id, "%d", i); pci_connector_device *conn = downcast(subdevice(id)); diff --git a/src/devices/bus/m5/slot.cpp b/src/devices/bus/m5/slot.cpp index b134679e6bb..a1b9d551b23 100644 --- a/src/devices/bus/m5/slot.cpp +++ b/src/devices/bus/m5/slot.cpp @@ -120,7 +120,7 @@ static const m5_slot slot_list[] = static int m5_get_pcb_id(const char *slot) { - for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) + for (int i = 0; i < std::size(slot_list); i++) { if (!strcmp(slot_list[i].slot_option, slot)) return slot_list[i].pcb_id; @@ -131,7 +131,7 @@ static int m5_get_pcb_id(const char *slot) static const char *m5_get_slot(int type) { - for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) + for (int i = 0; i < std::size(slot_list); i++) { if (slot_list[i].pcb_id == type) return slot_list[i].slot_option; diff --git a/src/devices/bus/megadrive/svp.cpp b/src/devices/bus/megadrive/svp.cpp index 731a1ca7b7a..0c20884d7c7 100644 --- a/src/devices/bus/megadrive/svp.cpp +++ b/src/devices/bus/megadrive/svp.cpp @@ -369,8 +369,8 @@ void md_rom_svp_device::set_bank_to_rom(const char *banktag, uint32_t offset) void md_rom_svp_device::device_start() { - memset(m_pmac_read, 0, ARRAY_LENGTH(m_pmac_read)); - memset(m_pmac_write, 0, ARRAY_LENGTH(m_pmac_write)); + std::fill(std::begin(m_pmac_read), std::end(m_pmac_read), 0); + std::fill(std::begin(m_pmac_write), std::end(m_pmac_write), 0); m_pmc.d = 0; m_pmc.w.l = 0; m_pmc.w.h = 0; diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 7cbf7cf27dc..15c907370c1 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -291,9 +291,7 @@ static const nes_mmc mmc_list[] = const nes_mmc *nes_mapper_lookup( int mapper ) { - int i; - - for (i = 0; i < ARRAY_LENGTH(mmc_list); i++) + for (int i = 0; i < std::size(mmc_list); i++) { if (mmc_list[i].iNesMapper == mapper) return &mmc_list[i]; diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp index 74fd6e541d4..6b66dbb2aa6 100644 --- a/src/devices/bus/nes/nes_slot.cpp +++ b/src/devices/bus/nes/nes_slot.cpp @@ -276,8 +276,8 @@ inline void device_nes_cart_interface::update_prg_banks(int prg_bank_start, int for (int prg_bank = prg_bank_start; prg_bank <= prg_bank_end; prg_bank++) { assert(prg_bank >= 0); - assert(prg_bank < ARRAY_LENGTH(m_prg_bank)); - assert(prg_bank < ARRAY_LENGTH(m_prg_bank_mem)); + assert(prg_bank < std::size(m_prg_bank)); + assert(prg_bank < std::size(m_prg_bank_mem)); m_prg_bank_mem[prg_bank]->set_entry(m_prg_bank[prg_bank]); } diff --git a/src/devices/bus/nes/nes_unif.hxx b/src/devices/bus/nes/nes_unif.hxx index af4839f4ebf..34ccb4fa145 100644 --- a/src/devices/bus/nes/nes_unif.hxx +++ b/src/devices/bus/nes/nes_unif.hxx @@ -158,8 +158,7 @@ static const unif unif_list[] = const unif *nes_unif_lookup( const char *board ) { - int i; - for (i = 0; i < ARRAY_LENGTH(unif_list); i++) + for (int i = 0; i < std::size(unif_list); i++) { if (!core_stricmp(unif_list[i].board, board)) return &unif_list[i]; diff --git a/src/devices/bus/nes_ctrl/bcbattle.cpp b/src/devices/bus/nes_ctrl/bcbattle.cpp index a60e3cd158c..b8c4ed57e6d 100644 --- a/src/devices/bus/nes_ctrl/bcbattle.cpp +++ b/src/devices/bus/nes_ctrl/bcbattle.cpp @@ -119,7 +119,7 @@ void nes_bcbattle_device::device_reset() m_transmitting = 0; m_cur_bit = 0; m_cur_byte = 0; - memset(m_current_barcode, 0, ARRAY_LENGTH(m_current_barcode)); + std::fill(std::begin(m_current_barcode), std::end(m_current_barcode), 0); } diff --git a/src/devices/bus/nubus/nubus_image.cpp b/src/devices/bus/nubus/nubus_image.cpp index 5cdaabeb995..8c94882cd4f 100644 --- a/src/devices/bus/nubus/nubus_image.cpp +++ b/src/devices/bus/nubus/nubus_image.cpp @@ -264,7 +264,7 @@ void nubus_image_device::file_cmd_w(uint32_t data) filectx.curcmd = data; switch (data) { case kFileCmdGetDir: - strncpy(filectx.filename, filectx.curdir.c_str(), ARRAY_LENGTH(filectx.filename)); + strncpy(filectx.filename, filectx.curdir.c_str(), std::size(filectx.filename)); break; case kFileCmdSetDir: if ((filectx.filename[0] == '/') || (filectx.filename[0] == '$')) { @@ -281,7 +281,7 @@ void nubus_image_device::file_cmd_w(uint32_t data) if (filectx.dirp) { osd::directory::entry const *const dp = filectx.dirp->read(); if (dp) { - strncpy(filectx.filename, dp->name, ARRAY_LENGTH(filectx.filename)); + strncpy(filectx.filename, dp->name, std::size(filectx.filename)); } else { std::fill(std::begin(filectx.filename), std::end(filectx.filename), '\0'); } diff --git a/src/devices/bus/snes/snes_slot.cpp b/src/devices/bus/snes/snes_slot.cpp index b70d7b265df..7c7d4d9ea08 100644 --- a/src/devices/bus/snes/snes_slot.cpp +++ b/src/devices/bus/snes/snes_slot.cpp @@ -1372,7 +1372,7 @@ void base_sns_cart_slot_device::internal_header_logging(uint8_t *ROM, uint32_t l logerror( "\tSize: %d megabits [%d]\n", 1 << (ROM[hilo_mode + 0x17] - 7), ROM[hilo_mode + 0x17]); logerror( "\tSRAM: %d kilobits [%d]\n", ROM[hilo_mode + 0x18] * 8, ROM[hilo_mode + 0x18] ); - if (ROM[hilo_mode + 0x19] < ARRAY_LENGTH(countries)) + if (ROM[hilo_mode + 0x19] < std::size(countries)) logerror( "\tCountry: %s [%d]\n", countries[ROM[hilo_mode + 0x19]], ROM[hilo_mode + 0x19]); else logerror( "\tCountry: Unknown [%d]\n", ROM[hilo_mode + 0x19]); diff --git a/src/devices/bus/snes_ctrl/bcbattle.cpp b/src/devices/bus/snes_ctrl/bcbattle.cpp index 138a4ef4669..4c0b17ef6ce 100644 --- a/src/devices/bus/snes_ctrl/bcbattle.cpp +++ b/src/devices/bus/snes_ctrl/bcbattle.cpp @@ -121,7 +121,7 @@ void snes_bcbattle_device::device_reset() m_transmitting = 0; m_cur_bit = 0; m_cur_byte = 0; - memset(m_current_barcode, 0, ARRAY_LENGTH(m_current_barcode)); + std::fill(std::begin(m_current_barcode), std::end(m_current_barcode), 0); } diff --git a/src/devices/bus/vectrex/slot.cpp b/src/devices/bus/vectrex/slot.cpp index 04e6437571e..014b6c9516c 100644 --- a/src/devices/bus/vectrex/slot.cpp +++ b/src/devices/bus/vectrex/slot.cpp @@ -111,7 +111,7 @@ static const vectrex_slot slot_list[] = #if 0 static int vectrex_get_pcb_id(const char *slot) { - for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) + for (int i = 0; i < std::size(slot_list); i++) { if (!strcmp(slot_list[i].slot_option, slot)) return slot_list[i].pcb_id; diff --git a/src/devices/bus/vme/vme_fccpu20.cpp b/src/devices/bus/vme/vme_fccpu20.cpp index b3b4dc4e89d..8759c47d143 100644 --- a/src/devices/bus/vme/vme_fccpu20.cpp +++ b/src/devices/bus/vme/vme_fccpu20.cpp @@ -504,8 +504,8 @@ uint32_t vme_fccpu20_device::bootvect_r(offs_t offset) void vme_fccpu20_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask) { LOG("%s\n", FUNCNAME); - m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; - m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); + m_sysram[offset % std::size(m_sysram)] &= ~mem_mask; + m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask); m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. } diff --git a/src/devices/bus/vme/vme_hcpu30.cpp b/src/devices/bus/vme/vme_hcpu30.cpp index 55be33bde69..0c072c20191 100644 --- a/src/devices/bus/vme/vme_hcpu30.cpp +++ b/src/devices/bus/vme/vme_hcpu30.cpp @@ -156,8 +156,8 @@ uint32_t vme_hcpu30_card_device::bootvect_r(offs_t offset) void vme_hcpu30_card_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask) { LOG("%s\n", FUNCNAME); - m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; - m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); + m_sysram[offset % std::size(m_sysram)] &= ~mem_mask; + m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask); m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. } diff --git a/src/devices/bus/vsmile/vsmile_ctrl.cpp b/src/devices/bus/vsmile/vsmile_ctrl.cpp index 4b9d629aaaf..db29bd82a9b 100644 --- a/src/devices/bus/vsmile/vsmile_ctrl.cpp +++ b/src/devices/bus/vsmile/vsmile_ctrl.cpp @@ -145,14 +145,14 @@ bool vsmile_ctrl_device_base::queue_tx(uint8_t data) "%s: discarding byte %02X because FIFO is full (length %u, Tx %sactive)\n", machine().describe_context(), data, - ARRAY_LENGTH(m_tx_fifo), + std::size(m_tx_fifo), m_tx_active ? "" : "in"); return false; } // queue the byte m_tx_fifo[m_tx_fifo_tail] = data; - m_tx_fifo_tail = (m_tx_fifo_tail + 1) % ARRAY_LENGTH(m_tx_fifo); + m_tx_fifo_tail = (m_tx_fifo_tail + 1) % std::size(m_tx_fifo); m_tx_fifo_empty = false; // assert RTS and start transmitting if necessary @@ -173,7 +173,7 @@ bool vsmile_ctrl_device_base::queue_tx(uint8_t data) } else { - unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); + unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo)); LOG("%s: queued byte %02X (%u bytes queued, Tx %sactive)\n", machine().describe_context(), data, fifo_used, m_tx_active ? "" : "in"); } @@ -188,7 +188,7 @@ void vsmile_ctrl_device_base::select_w(int state) if (state && !m_tx_fifo_empty && !m_tx_active) { m_rts_timer->reset(); - unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); + unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo)); LOG("%s: select asserted, starting transmission (%u bytes queued)\n", machine().describe_context(), fifo_used); m_tx_active = true; m_tx_timer->adjust(attotime::from_hz(9600 / 10)); @@ -219,7 +219,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::tx_timer_expired) // deliver the byte to the host (bits have shifted out now) uint8_t const data(m_tx_fifo[m_tx_fifo_head]); - m_tx_fifo_head = (m_tx_fifo_head + 1) % ARRAY_LENGTH(m_tx_fifo); + m_tx_fifo_head = (m_tx_fifo_head + 1) % std::size(m_tx_fifo); if (m_tx_fifo_head == m_tx_fifo_tail) m_tx_fifo_empty = true; data_out(data); @@ -232,7 +232,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::tx_timer_expired) } else { - unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); + unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo)); LOG("transmitted byte %02X (%u bytes queued, select %sasserted)\n", data, fifo_used, m_select ? "" : "de"); } @@ -265,7 +265,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::rts_timer_expired) // clear out anything queued and let the implementation deal with it if (!m_tx_fifo_empty) { - unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); + unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo)); LOG("timeout waiting for select after asserting RTS (%u bytes queued)\n", fifo_used); m_tx_fifo_head = m_tx_fifo_tail = 0U; m_tx_fifo_empty = true; diff --git a/src/devices/bus/vtech/memexp/floppy.cpp b/src/devices/bus/vtech/memexp/floppy.cpp index 1b3cfa2d91d..df42dc5a5f9 100644 --- a/src/devices/bus/vtech/memexp/floppy.cpp +++ b/src/devices/bus/vtech/memexp/floppy.cpp @@ -191,7 +191,7 @@ void vtech_floppy_controller_device::latch_w(uint8_t data) } } if(!(m_latch & 0x40) && (diff & 0x20)) { - if(m_write_position == ARRAY_LENGTH(m_write_buffer)) { + if(m_write_position == std::size(m_write_buffer)) { update_latching_inverter(); flush_writes(true); } diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp index 45ef964463f..107bae63a95 100644 --- a/src/devices/cpu/arm7/arm7.cpp +++ b/src/devices/cpu/arm7/arm7.cpp @@ -92,7 +92,7 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type , m_vectorbase(0) , m_pc(0) { - memset(m_r, 0x00, sizeof(m_r)); + std::fill(std::begin(m_r), std::end(m_r), 0); uint32_t arch = ARM9_COPRO_ID_ARCH_V4; if (m_archFlags & ARCHFLAG_T) arch = ARM9_COPRO_ID_ARCH_V4T; @@ -102,9 +102,9 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type // TODO[RH]: Default to 3-instruction prefetch for unknown ARM variants. Derived cores should set the appropriate value in their constructors. m_insn_prefetch_depth = 3; - memset(m_insn_prefetch_buffer, 0, sizeof(uint32_t) * 3); - memset(m_insn_prefetch_address, 0, sizeof(uint32_t) * 3); - memset(m_insn_prefetch_valid, 0, sizeof(bool) * 3); + std::fill_n(&m_insn_prefetch_buffer[0], 3, 0); + std::fill_n(&m_insn_prefetch_address[0], 3, 0); + std::fill_n(&m_insn_prefetch_valid[0], 3, false); m_insn_prefetch_count = 0; m_insn_prefetch_index = 0; m_tlb_log = 0; @@ -198,8 +198,8 @@ arm946es_cpu_device::arm946es_cpu_device(const machine_config &mconfig, device_t | ARM9_COPRO_ID_PART_ARM946 | ARM9_COPRO_ID_STEP_ARM946_A0; - memset(ITCM, 0, 0x8000); - memset(DTCM, 0, 0x4000); + std::fill_n(&ITCM[0], 0x8000, 0); + std::fill_n(&DTCM[0], 0x4000, 0); cp15_itcm_base = 0xffffffff; cp15_itcm_size = 0; @@ -1080,7 +1080,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std:: void arm7_cpu_device::device_reset() { - memset(m_r, 0, sizeof(m_r)); + std::fill(std::begin(m_r), std::end(m_r), 0); m_pendingIrq = false; m_pendingFiq = false; m_pendingAbtD = false; @@ -1097,7 +1097,7 @@ void arm7_cpu_device::device_reset() m_fcsePID = 0; m_pid_offset = 0; m_domainAccessControl = 0; - memset(m_decoded_access_control, 0, sizeof(uint8_t) * 16); + std::fill_n(&m_decoded_access_control[0], 16, 0); /* start up in SVC mode with interrupts disabled. */ m_r[eCPSR] = I_MASK | F_MASK | 0x10; @@ -1106,10 +1106,26 @@ void arm7_cpu_device::device_reset() m_impstate.cache_dirty = true; - memset(m_dtlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_dtlb_entries)); - memset(m_itlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_itlb_entries)); - memset(m_dtlb_entry_index, 0, ARRAY_LENGTH(m_dtlb_entry_index)); - memset(m_itlb_entry_index, 0, ARRAY_LENGTH(m_itlb_entry_index)); + for (auto &entry : m_dtlb_entries) + { + entry.valid = false; + entry.domain = 0; + entry.access = 0; + entry.table_bits = 0; + entry.base_addr = 0; + entry.type = 0; + } + for (auto &entry : m_itlb_entries) + { + entry.valid = false; + entry.domain = 0; + entry.access = 0; + entry.table_bits = 0; + entry.base_addr = 0; + entry.type = 0; + } + std::fill(std::begin(m_dtlb_entry_index), std::end(m_dtlb_entry_index), 0); + std::fill(std::begin(m_itlb_entry_index), std::end(m_itlb_entry_index), 0); } void arm1176jzf_s_cpu_device::device_reset() @@ -1789,21 +1805,21 @@ void arm7_cpu_device::arm7_rt_w_callback(offs_t offset, uint32_t data) { case 5: // Flush I - for (uint32_t i = 0; i < ARRAY_LENGTH(m_itlb_entries); i++) + for (uint32_t i = 0; i < std::size(m_itlb_entries); i++) { m_itlb_entries[i].valid = false; } break; case 6: // Flush D - for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++) + for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++) { m_dtlb_entries[i].valid = false; } break; case 7: // Flush I+D - for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++) + for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++) { m_dtlb_entries[i].valid = false; m_itlb_entries[i].valid = false; diff --git a/src/devices/cpu/arm7/arm7drc.hxx b/src/devices/cpu/arm7/arm7drc.hxx index 8edd44438bd..8fb6a8a5aa4 100644 --- a/src/devices/cpu/arm7/arm7drc.hxx +++ b/src/devices/cpu/arm7/arm7drc.hxx @@ -95,7 +95,7 @@ void arm7_cpu_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++) + for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++) if (m_impstate.regmap[regnum].is_int_register()) UML_DMOV(block, uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0), uml::mem(&m_r[regnum])); } @@ -110,7 +110,7 @@ void arm7_cpu_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++) + for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++) if (m_impstate.regmap[regnum].is_int_register()) UML_DMOV(block, uml::mem(&m_r[regnum]), uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0)); } @@ -251,7 +251,7 @@ void arm7_cpu_device::arm7drc_set_options(uint32_t options) void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) { - if (m_impstate.fastram_select < ARRAY_LENGTH(m_impstate.fastram)) + if (m_impstate.fastram_select < std::size(m_impstate.fastram)) { m_impstate.fastram[m_impstate.fastram_select].start = start; m_impstate.fastram[m_impstate.fastram_select].end = end; @@ -268,7 +268,7 @@ void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t read void arm7_cpu_device::arm7drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) { - if (m_impstate.hotspot_select < ARRAY_LENGTH(m_impstate.hotspot)) + if (m_impstate.hotspot_select < std::size(m_impstate.hotspot)) { m_impstate.hotspot[m_impstate.hotspot_select].pc = pc; m_impstate.hotspot[m_impstate.hotspot_select].opcode = opcode; diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp index a40b6e66262..978c4e76fc8 100644 --- a/src/devices/cpu/cosmac/cosmac.cpp +++ b/src/devices/cpu/cosmac/cosmac.cpp @@ -528,8 +528,8 @@ void cosmac_device::device_reset() m_df = 0; m_p = 0; - for (int i = 0; i < ARRAY_LENGTH(m_r); i++) - m_r[i] = machine().rand() & 0xffff; + for (uint16_t &r : m_r) + r = machine().rand() & 0xffff; } diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp index 90f9a1adff9..d8b30535d6e 100644 --- a/src/devices/cpu/drcbec.cpp +++ b/src/devices/cpu/drcbec.cpp @@ -528,7 +528,7 @@ int drcbe_c::execute(code_handle &entry) newinst = (const drcbec_instruction *)m_hash.get_codeptr(PARAM0, PARAM1); if (newinst == nullptr) { - assert(sp < ARRAY_LENGTH(callstack)); + assert(sp < std::size(callstack)); m_state.exp = PARAM1; newinst = (const drcbec_instruction *)inst[2].handle->codeptr(); callstack[sp++] = inst; @@ -562,7 +562,7 @@ int drcbe_c::execute(code_handle &entry) [[fallthrough]]; case MAKE_OPCODE_SHORT(OP_CALLH, 4, 0): - assert(sp < ARRAY_LENGTH(callstack)); + assert(sp < std::size(callstack)); newinst = (const drcbec_instruction *)inst[0].handle->codeptr(); assert_in_cache(m_cache, newinst); callstack[sp++] = inst + OPCODE_GET_PWORDS(opcode); @@ -587,7 +587,7 @@ int drcbe_c::execute(code_handle &entry) [[fallthrough]]; case MAKE_OPCODE_SHORT(OP_EXH, 4, 0): - assert(sp < ARRAY_LENGTH(callstack)); + assert(sp < std::size(callstack)); newinst = (const drcbec_instruction *)inst[0].handle->codeptr(); assert_in_cache(m_cache, newinst); m_state.exp = PARAM1; diff --git a/src/devices/cpu/drcbeut.cpp b/src/devices/cpu/drcbeut.cpp index ce7cf527e3c..8ccd8d31fb3 100644 --- a/src/devices/cpu/drcbeut.cpp +++ b/src/devices/cpu/drcbeut.cpp @@ -276,7 +276,7 @@ void drc_map_variables::block_end(drcuml_block &block) // build a mask of changed variables int numchanged = 0; uint32_t varmask = 0; - for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++) + for (int varnum = 0; varnum < std::size(changed); varnum++) if (changed[varnum]) { changed[varnum] = false; @@ -298,7 +298,7 @@ void drc_map_variables::block_end(drcuml_block &block) *dest++ = (codedelta << 16) | (varmask << 4) | numchanged; // now output updated variable values - for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++) + for (int varnum = 0; varnum < std::size(changed); varnum++) if ((varmask >> varnum) & 1) *dest++ = curvalue[varnum]; diff --git a/src/devices/cpu/drcbex64.cpp b/src/devices/cpu/drcbex64.cpp index 716dd57b8d0..a25f1262bf4 100644 --- a/src/devices/cpu/drcbex64.cpp +++ b/src/devices/cpu/drcbex64.cpp @@ -654,7 +654,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u m_near.drcmap_get_value = (x86code *)&drc_map_variables::static_get_value; // build the flags map - for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsmap); entry++) + for (int entry = 0; entry < std::size(m_near.flagsmap); entry++) { uint8_t flags = 0; if (entry & 0x001) flags |= FLAG_C; @@ -664,7 +664,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u if (entry & 0x800) flags |= FLAG_V; m_near.flagsmap[entry] = flags; } - for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsunmap); entry++) + for (int entry = 0; entry < std::size(m_near.flagsunmap); entry++) { uint64_t flags = 0; if (entry & FLAG_C) flags |= 0x001; @@ -873,7 +873,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, uint3 for (int inum = 0; inum < numinst; inum++) { const instruction &inst = instlist[inum]; - assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table)); + assert(inst.opcode() < std::size(s_opcode_table)); // must remain in scope until output std::string dasm; @@ -1883,7 +1883,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst) // copy integer registers int regoffs = offsetof(drcuml_machine_state, r); - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) + for (int regnum = 0; regnum < std::size(m_state.r); regnum++) { if (int_register_map[regnum] != 0) a.mov(ptr(rcx, regoffs + 8 * regnum), Gpq(regnum)); @@ -1896,7 +1896,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst) // copy FP registers regoffs = offsetof(drcuml_machine_state, f); - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) + for (int regnum = 0; regnum < std::size(m_state.f); regnum++) { if (float_register_map[regnum] != 0) a.movsd(ptr(rcx, regoffs + 8 * regnum), Xmm(regnum)); @@ -1927,7 +1927,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst) // copy integer registers int regoffs = offsetof(drcuml_machine_state, r); - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) + for (int regnum = 0; regnum < std::size(m_state.r); regnum++) { if (int_register_map[regnum] != 0) a.mov(Gpq(regnum), ptr(rcx, regoffs + 8 * regnum)); @@ -1940,7 +1940,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst) // copy FP registers regoffs = offsetof(drcuml_machine_state, f); - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) + for (int regnum = 0; regnum < std::size(m_state.f); regnum++) { if (float_register_map[regnum] != 0) a.movsd(Xmm(regnum), ptr(rcx, regoffs + 8 * regnum)); diff --git a/src/devices/cpu/drcbex86.cpp b/src/devices/cpu/drcbex86.cpp index 1d894713b43..e13b15163e7 100644 --- a/src/devices/cpu/drcbex86.cpp +++ b/src/devices/cpu/drcbex86.cpp @@ -538,7 +538,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u m_reshi(0) { // compute hi pointers for each register - for (int regnum = 0; regnum < ARRAY_LENGTH(int_register_map); regnum++) + for (int regnum = 0; regnum < std::size(int_register_map); regnum++) if (int_register_map[regnum] != 0) { m_reglo[int_register_map[regnum]] = &m_state.r[regnum].w.l; @@ -546,7 +546,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u } // build the flags map (static but it doesn't hurt to regenerate it) - for (int entry = 0; entry < ARRAY_LENGTH(flags_map); entry++) + for (int entry = 0; entry < std::size(flags_map); entry++) { uint8_t flags = 0; if (entry & 0x001) flags |= FLAG_C; @@ -556,7 +556,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u if (entry & 0x800) flags |= FLAG_V; flags_map[entry] = flags; } - for (int entry = 0; entry < ARRAY_LENGTH(flags_unmap); entry++) + for (int entry = 0; entry < std::size(flags_unmap); entry++) { uint32_t flags = 0; if (entry & FLAG_C) flags |= 0x001; @@ -712,7 +712,7 @@ void drcbe_x86::reset() a.mov(ptr(ecx, offsetof(drcuml_machine_state, fmod)), al); // mov state->fmod,al a.mov(eax, MABS(&m_state.exp)); // mov eax,[exp] a.mov(ptr(ecx, offsetof(drcuml_machine_state, exp)), eax); // mov state->exp,eax - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) + for (int regnum = 0; regnum < std::size(m_state.r); regnum++) { uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h; @@ -726,7 +726,7 @@ void drcbe_x86::reset() a.mov(eax, MABS(&m_state.r[regnum].w.h)); a.mov(ptr(ecx, regoffsh), eax); } - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) + for (int regnum = 0; regnum < std::size(m_state.f); regnum++) { uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h; @@ -740,7 +740,7 @@ void drcbe_x86::reset() // generate a restore subroutine m_restore = dst + a.offset(); a.bind(a.newNamedLabel("restore")); - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) + for (int regnum = 0; regnum < std::size(m_state.r); regnum++) { uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h; @@ -754,7 +754,7 @@ void drcbe_x86::reset() a.mov(eax, ptr(ecx, regoffsh)); a.mov(MABS(&m_state.r[regnum].w.h), eax); } - for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) + for (int regnum = 0; regnum < std::size(m_state.f); regnum++) { uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h; @@ -843,7 +843,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, uint3 for (int inum = 0; inum < numinst; inum++) { const instruction &inst = instlist[inum]; - assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table)); + assert(inst.opcode() < std::size(s_opcode_table)); // must remain in scope until output std::string dasm; diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp index fd93018b35a..771ea230c03 100644 --- a/src/devices/cpu/drcuml.cpp +++ b/src/devices/cpu/drcuml.cpp @@ -704,10 +704,10 @@ static void validate_backend(drcuml_state *drcuml) // iterate over test entries printf("Backend validation....\n"); - for (tnum = 31; tnum < ARRAY_LENGTH(bevalidate_test_list); tnum++) + for (tnum = 31; tnum < std::size(bevalidate_test_list); tnum++) { const bevalidate_test *test = &bevalidate_test_list[tnum]; - parameter param[ARRAY_LENGTH(test->param)]; + parameter param[std::size(test->param)]; char mnemonic[20], *dst; const char *src; @@ -726,7 +726,7 @@ static void validate_backend(drcuml_state *drcuml) *dst++ = *src; } *dst = 0; - printf("Executing test %d/%d (%s)", tnum + 1, (int)ARRAY_LENGTH(bevalidate_test_list), mnemonic); + printf("Executing test %d/%d (%s)", tnum + 1, (int)std::size(bevalidate_test_list), mnemonic); // reset parameter list and iterate memset(param, 0, sizeof(param)); @@ -750,7 +750,7 @@ static void bevalidate_iterate_over_params(drcuml_state *drcuml, uml::code_handl drcuml_ptype ptype; // if no parameters, execute now - if (pnum >= ARRAY_LENGTH(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE) + if (pnum >= std::size(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE) { bevalidate_iterate_over_flags(drcuml, handles, test, paramlist); return; @@ -838,7 +838,7 @@ static void bevalidate_iterate_over_flags(drcuml_state *drcuml, uml::code_handle static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, const bevalidate_test *test, const parameter *paramlist, uint8_t flagmask) { - parameter params[ARRAY_LENGTH(test->param)]; + parameter params[std::size(test->param)]; drcuml_machine_state istate, fstate; instruction testinst; drcuml_block *block; @@ -846,7 +846,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, int numparams; // allocate memory for parameters - parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1)); + parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (std::size(test->param) + 1)); // flush the cache drcuml->reset(); @@ -888,7 +888,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, } testinst = block->inst[block->nextinst - 1]; UML_HANDLE(block, handles[2]); - UML_GETFLGS(block, MEM(¶mmem[ARRAY_LENGTH(test->param)]), flagmask); + UML_GETFLGS(block, MEM(¶mmem[std::size(test->param)]), flagmask); UML_SAVE(block, &fstate); UML_EXIT(block, IMM(0)); @@ -899,10 +899,10 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, drcuml->execute(*handles[0]); // verify the results - bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)¶mmem[ARRAY_LENGTH(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask); + bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)¶mmem[std::size(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask); // free memory - drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1)); + drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (std::size(test->param) + 1)); } @@ -922,14 +922,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc state->exp = machine.rand(); // initialize integer registers to random values - for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++) + for (regnum = 0; regnum < std::size(state->r); regnum++) { state->r[regnum].w.h = machine.rand(); state->r[regnum].w.l = machine.rand(); } // initialize float registers to random values - for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++) + for (regnum = 0; regnum < std::size(state->f); regnum++) { *(uint32_t *)&state->f[regnum].s.h = machine.rand(); *(uint32_t *)&state->f[regnum].s.l = machine.rand(); @@ -950,14 +950,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc static int bevalidate_populate_state(drcuml_block *block, drcuml_machine_state *state, const bevalidate_test *test, const parameter *paramlist, parameter *params, uint64_t *parammem) { const opcode_info *opinfo = opcode_info_table[test->opcode()]; - int numparams = ARRAY_LENGTH(test->param); + int numparams = std::size(test->param); int pnum; // copy flags as-is state->flags = test->iflags; // iterate over parameters - for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++) + for (pnum = 0; pnum < std::size(test->param); pnum++) { int psize = effective_test_psize(opinfo, pnum, test->size, test->param); parameter *curparam = ¶ms[pnum]; @@ -1046,7 +1046,7 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st } // check destination parameters - for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++) + for (pnum = 0; pnum < std::size(test->param); pnum++) if (opinfo->param[pnum].output & PIO_OUT) { int psize = effective_test_psize(opinfo, pnum, test->size, test->param); @@ -1094,14 +1094,14 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st } // check source integer parameters for unexpected alterations - for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++) + for (regnum = 0; regnum < std::size(state->r); regnum++) if (ireg[regnum] == 0 && istate->r[regnum].d != state->r[regnum].d) errend += sprintf(errend, " Register i%d ... result:%08X%08X originally:%08X%08X\n", regnum, (uint32_t)(state->r[regnum].d >> 32), (uint32_t)state->r[regnum].d, (uint32_t)(istate->r[regnum].d >> 32), (uint32_t)istate->r[regnum].d); // check source float parameters for unexpected alterations - for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++) + for (regnum = 0; regnum < std::size(state->f); regnum++) if (freg[regnum] == 0 && *(uint64_t *)&istate->f[regnum].d != *(uint64_t *)&state->f[regnum].d) errend += sprintf(errend, " Register f%d ... result:%08X%08X originally:%08X%08X\n", regnum, (uint32_t)(*(uint64_t *)&state->f[regnum].d >> 32), (uint32_t)*(uint64_t *)&state->f[regnum].d, diff --git a/src/devices/cpu/dsp16/dsp16fe.cpp b/src/devices/cpu/dsp16/dsp16fe.cpp index a972d14d8ff..406cf205433 100644 --- a/src/devices/cpu/dsp16/dsp16fe.cpp +++ b/src/devices/cpu/dsp16/dsp16fe.cpp @@ -564,9 +564,9 @@ bool dsp16_device_base::frontend::describe_do(opcode_desc &desc, u16 op) m_cache_cycles = cycles; m_cache_last_cycles = cycles + (romcycles - cachecycles); m_cache_flags = desc.flags & (OPFLAG_READS_MEMORY | OPFLAG_WRITES_MEMORY); - std::copy_n(desc.regin, ARRAY_LENGTH(desc.regin), m_cache_regin); - std::copy_n(desc.regout, ARRAY_LENGTH(desc.regout), m_cache_regout); - std::copy_n(desc.regreq, ARRAY_LENGTH(desc.regreq), m_cache_regreq); + std::copy_n(desc.regin, std::size(desc.regin), m_cache_regin); + std::copy_n(desc.regout, std::size(desc.regout), m_cache_regout); + std::copy_n(desc.regreq, std::size(desc.regreq), m_cache_regreq); m_cache_valid = true; desc.cycles += (2U - romcycles) + ((k - 1) * cycles) + (romcycles - cachecycles); return true; @@ -589,9 +589,9 @@ bool dsp16_device_base::frontend::describe_redo(opcode_desc &desc, u16 op) { desc.cycles += ((k - 1) * m_cache_cycles) + m_cache_last_cycles; desc.flags |= m_cache_flags; - std::copy_n(m_cache_regin, ARRAY_LENGTH(desc.regin), desc.regin); - std::copy_n(m_cache_regout, ARRAY_LENGTH(desc.regout), desc.regout); - std::copy_n(m_cache_regreq, ARRAY_LENGTH(desc.regreq), desc.regreq); + std::copy_n(m_cache_regin, std::size(desc.regin), desc.regin); + std::copy_n(m_cache_regout, std::size(desc.regout), desc.regout); + std::copy_n(m_cache_regreq, std::size(desc.regreq), desc.regreq); return true; } } diff --git a/src/devices/cpu/dspp/dsppdrc.cpp b/src/devices/cpu/dspp/dsppdrc.cpp index 30be59db09b..5ed615d1056 100644 --- a/src/devices/cpu/dspp/dsppdrc.cpp +++ b/src/devices/cpu/dspp/dsppdrc.cpp @@ -94,7 +94,7 @@ registers inline void dspp_device::load_fast_iregs(drcuml_block &block) { #if 0 // TODO - for (uint32_t regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (uint32_t regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -115,7 +115,7 @@ void dspp_device::save_fast_iregs(drcuml_block &block) #if 0 // TODO int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { diff --git a/src/devices/cpu/i386/i386dasm.cpp b/src/devices/cpu/i386/i386dasm.cpp index 374f2a24a41..42f17e65e63 100644 --- a/src/devices/cpu/i386/i386dasm.cpp +++ b/src/devices/cpu/i386/i386dasm.cpp @@ -2847,7 +2847,7 @@ void i386_disassembler::decode_opcode(std::ostream &stream, const I386_OPCODE *o case GROUP: handle_modrm(modrm_string, base_pc, pc, opcodes); - for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) { + for( i=0; i < std::size(group_op_table); i++ ) { if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) { if (op->flags & GROUP_MOD) decode_opcode(stream, &group_op_table[i].opcode[MODRM_MOD()], op1, base_pc, pc, opcodes); diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index 124544bffd2..7fddcb77af5 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -502,7 +502,7 @@ void i8085a_cpu_device::execute_set_input(int irqline, int state) } /* remaining sources are level triggered */ - else if (irqline < ARRAY_LENGTH(m_irq_state)) + else if (irqline < std::size(m_irq_state)) m_irq_state[irqline] = state; } diff --git a/src/devices/cpu/m6502/m6500_1.cpp b/src/devices/cpu/m6502/m6500_1.cpp index 5d7c2d0b485..aaede8b2bff 100644 --- a/src/devices/cpu/m6502/m6500_1.cpp +++ b/src/devices/cpu/m6502/m6500_1.cpp @@ -171,7 +171,7 @@ void m6500_1_device::device_reset() m_cr = 0x00U; - for (unsigned i = 0; ARRAY_LENGTH(m_port_buf) > i; ++i) + for (unsigned i = 0; std::size(m_port_buf) > i; ++i) { if (0xffU != m_port_buf[i]) m_port_out_cb[i](m_port_buf[i] = 0xffU); diff --git a/src/devices/cpu/m6809/6x09dasm.cpp b/src/devices/cpu/m6809/6x09dasm.cpp index bc366a567fe..e45c1a1bc8c 100644 --- a/src/devices/cpu/m6809/6x09dasm.cpp +++ b/src/devices/cpu/m6809/6x09dasm.cpp @@ -808,7 +808,7 @@ const m6x09_base_disassembler::opcodeinfo m6x09_disassembler::m6x09_opcodes[] = // ======================> m6x09_disassembler m6x09_disassembler::m6x09_disassembler(m6x09_instruction_level level, const char teregs[16][4]) - : m6x09_base_disassembler(m6x09_opcodes, ARRAY_LENGTH(m6x09_opcodes), level) + : m6x09_base_disassembler(m6x09_opcodes, std::size(m6x09_opcodes), level) , m_teregs(*reinterpret_cast, 16> *>(teregs)) { } @@ -1237,7 +1237,7 @@ const m6x09_base_disassembler::opcodeinfo konami_disassembler::konami_opcodes[] // ======================> konami_disassembler -konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, ARRAY_LENGTH(konami_opcodes), M6x09_GENERAL) +konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, std::size(konami_opcodes), M6x09_GENERAL) { } diff --git a/src/devices/cpu/mb86235/mb86235drc.cpp b/src/devices/cpu/mb86235/mb86235drc.cpp index 12e0ab60650..aff4658c4a6 100644 --- a/src/devices/cpu/mb86235/mb86235drc.cpp +++ b/src/devices/cpu/mb86235/mb86235drc.cpp @@ -189,7 +189,7 @@ inline void mb86235_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -207,7 +207,7 @@ void mb86235_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { diff --git a/src/devices/cpu/mips/mips1.cpp b/src/devices/cpu/mips/mips1.cpp index b60e09fa14c..c5f18b2989e 100644 --- a/src/devices/cpu/mips/mips1.cpp +++ b/src/devices/cpu/mips/mips1.cpp @@ -160,7 +160,7 @@ void mips1core_device_base::device_start() state_add(MIPS1_PC, "PC", m_pc); state_add(MIPS1_COP0 + COP0_Status, "SR", m_cop0[COP0_Status]); - for (unsigned i = 0; i < ARRAY_LENGTH(m_r); i++) + for (unsigned i = 0; i < std::size(m_r); i++) state_add(MIPS1_R0 + i, util::string_format("R%d", i).c_str(), m_r[i]); state_add(MIPS1_HI, "HI", m_hi); @@ -751,17 +751,17 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill) { case 1049: // msgsys LOGMASKED(LOG_RISCOS, "asid %d syscall msgsys:%s() (%s)\n", - asid, (m_r[5] < ARRAY_LENGTH(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context()); + asid, (m_r[5] < std::size(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context()); break; case 1052: // shmsys LOGMASKED(LOG_RISCOS, "asid %d syscall shmsys:%s() (%s)\n", - asid, (m_r[5] < ARRAY_LENGTH(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context()); + asid, (m_r[5] < std::size(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context()); break; case 1053: // semsys LOGMASKED(LOG_RISCOS, "asid %d syscall semsys:%s() (%s)\n", - asid, (m_r[5] < ARRAY_LENGTH(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context()); + asid, (m_r[5] < std::size(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context()); break; case 2151: // bsd_sysmips @@ -773,7 +773,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill) break; default: - if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < ARRAY_LENGTH(mips_syscalls)) + if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < std::size(mips_syscalls)) LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_sysmips:%s() (%s)\n", asid, mips_syscalls[m_r[5] - 0x100], machine().describe_context()); else @@ -784,7 +784,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill) break; default: - if ((m_r[4] > 2000) && (m_r[4] - 2000 < ARRAY_LENGTH(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000]) + if ((m_r[4] > 2000) && (m_r[4] - 2000 < std::size(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000]) LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_%s() (%s)\n", asid, bsd_syscalls[m_r[4] - 2000], machine().describe_context()); else @@ -833,7 +833,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill) break; default: - if ((m_r[2] > 1000) && (m_r[2] - 1000 < ARRAY_LENGTH(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000]) + if ((m_r[2] > 1000) && (m_r[2] - 1000 < std::size(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000]) LOGMASKED(LOG_RISCOS, "asid %d syscall %s() (%s)\n", asid, sysv_syscalls[m_r[2] - 1000], machine().describe_context()); else LOGMASKED(LOG_RISCOS, "asid %d syscall unknown %d (%s)\n", asid, m_r[2], machine().describe_context()); @@ -1245,7 +1245,7 @@ void mips1_device_base::device_start() if (m_fcr0) { state_add(MIPS1_FCR31, "FCSR", m_fcr31); - for (unsigned i = 0; i < ARRAY_LENGTH(m_f); i++) + for (unsigned i = 0; i < std::size(m_f); i++) state_add(MIPS1_F0 + i, util::string_format("F%d", i * 2).c_str(), m_f[i]); } @@ -1267,7 +1267,7 @@ void mips1_device_base::device_reset() m_reset_time = total_cycles(); // initialize tlb mru index with identity mapping - for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) + for (unsigned i = 0; i < std::size(m_tlb); i++) { m_tlb_mru[TRANSLATE_READ][i] = i; m_tlb_mru[TRANSLATE_WRITE][i] = i; @@ -1979,7 +1979,7 @@ bool mips1_device_base::memory_translate(int spacenum, int intention, offs_t &ad bool refill = !BIT(address, 31); bool modify = false; - for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) + for (unsigned i = 0; i < std::size(m_tlb); i++) { unsigned const index = mru[i]; u32 const *const entry = m_tlb[index]; diff --git a/src/devices/cpu/mips/mips3drc.cpp b/src/devices/cpu/mips/mips3drc.cpp index 665f7b1a0b4..9b3396a09f9 100644 --- a/src/devices/cpu/mips/mips3drc.cpp +++ b/src/devices/cpu/mips/mips3drc.cpp @@ -120,7 +120,7 @@ inline void mips3_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) if (m_regmap[regnum].is_int_register()) UML_DMOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_core->r[regnum])); } @@ -135,7 +135,7 @@ inline void mips3_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) if (m_regmap[regnum].is_int_register()) UML_DMOV(block, mem(&m_core->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0)); } @@ -174,7 +174,7 @@ void mips3_device::clear_fastram(uint32_t select_start) void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) { - if (m_fastram_select < ARRAY_LENGTH(m_fastram)) + if (m_fastram_select < std::size(m_fastram)) { m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].end = end; @@ -197,7 +197,7 @@ void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void void mips3_device::mips3drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) { if (!allow_drc()) return; - if (m_hotspot_select < ARRAY_LENGTH(m_hotspot)) + if (m_hotspot_select < std::size(m_hotspot)) { m_hotspot[m_hotspot_select].pc = pc; m_hotspot[m_hotspot_select].opcode = opcode; diff --git a/src/devices/cpu/mips/r4000.cpp b/src/devices/cpu/mips/r4000.cpp index fcdddbaabe9..d88210c9d79 100644 --- a/src/devices/cpu/mips/r4000.cpp +++ b/src/devices/cpu/mips/r4000.cpp @@ -225,7 +225,7 @@ void r4000_base_device::device_reset() m_cp0[CP0_WatchHi] = 0; // initialize tlb mru index with identity mapping - for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) + for (unsigned i = 0; i < std::size(m_tlb); i++) { m_tlb_mru[TRANSLATE_READ][i] = i; m_tlb_mru[TRANSLATE_WRITE][i] = i; @@ -1411,10 +1411,10 @@ u64 r4000_base_device::cp0_get(unsigned const reg) { u8 const wired = m_cp0[CP0_Wired] & 0x3f; - if (wired < ARRAY_LENGTH(m_tlb)) - return ((total_cycles() - m_cp0_timer_zero) % (ARRAY_LENGTH(m_tlb) - wired) + wired) & 0x3f; + if (wired < std::size(m_tlb)) + return ((total_cycles() - m_cp0_timer_zero) % (std::size(m_tlb) - wired) + wired) & 0x3f; else - return ARRAY_LENGTH(m_tlb) - 1; + return std::size(m_tlb) - 1; } break; @@ -1525,7 +1525,7 @@ void r4000_base_device::cp0_tlbr() { u8 const index = m_cp0[CP0_Index] & 0x3f; - if (index < ARRAY_LENGTH(m_tlb)) + if (index < std::size(m_tlb)) { tlb_entry const &entry = m_tlb[index]; @@ -1538,7 +1538,7 @@ void r4000_base_device::cp0_tlbr() void r4000_base_device::cp0_tlbwi(u8 const index) { - if (index < ARRAY_LENGTH(m_tlb)) + if (index < std::size(m_tlb)) { tlb_entry &entry = m_tlb[index]; @@ -1563,9 +1563,9 @@ void r4000_base_device::cp0_tlbwi(u8 const index) void r4000_base_device::cp0_tlbwr() { u8 const wired = m_cp0[CP0_Wired] & 0x3f; - u8 const unwired = ARRAY_LENGTH(m_tlb) - wired; + u8 const unwired = std::size(m_tlb) - wired; - u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (ARRAY_LENGTH(m_tlb) - 1); + u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (std::size(m_tlb) - 1); cp0_tlbwi(index); } @@ -1573,7 +1573,7 @@ void r4000_base_device::cp0_tlbwr() void r4000_base_device::cp0_tlbp() { m_cp0[CP0_Index] = 0x80000000; - for (u8 index = 0; index < ARRAY_LENGTH(m_tlb); index++) + for (u8 index = 0; index < std::size(m_tlb); index++) { tlb_entry const &entry = m_tlb[index]; @@ -3615,7 +3615,7 @@ r4000_base_device::translate_result r4000_base_device::translate(int intention, bool invalid = false; bool modify = false; - for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) + for (unsigned i = 0; i < std::size(m_tlb); i++) { unsigned const index = mru[i]; tlb_entry const &entry = m_tlb[index]; diff --git a/src/devices/cpu/nec/necdasm.cpp b/src/devices/cpu/nec/necdasm.cpp index 690ec4867e2..e09acb5118a 100644 --- a/src/devices/cpu/nec/necdasm.cpp +++ b/src/devices/cpu/nec/necdasm.cpp @@ -1414,7 +1414,7 @@ void nec_disassembler::decode_opcode(std::ostream &stream, const NEC_I386_OPCODE case GROUP: handle_modrm( pc_base, pc, params ); - for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) { + for( i=0; i < std::size(group_op_table); i++ ) { if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) { decode_opcode( stream, &group_op_table[i].opcode[MODRM_REG1], op1, pc_base, pc, opcodes, params ); diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp index 566be7c820a..1ff153ca1b6 100644 --- a/src/devices/cpu/powerpc/ppccom.cpp +++ b/src/devices/cpu/powerpc/ppccom.cpp @@ -1919,7 +1919,7 @@ void ppc_device::ppccom_execute_mfdcr() /* default handling */ if (m_dcr_read_func.isnull()) { osd_printf_debug("DCR %03X read\n", m_core->param0); - if (m_core->param0 < ARRAY_LENGTH(m_dcr)) + if (m_core->param0 < std::size(m_dcr)) m_core->param1 = m_dcr[m_core->param0]; else m_core->param1 = 0; @@ -2011,7 +2011,7 @@ void ppc_device::ppccom_execute_mtdcr() /* default handling */ if (m_dcr_write_func.isnull()) { osd_printf_debug("DCR %03X write = %08X\n", m_core->param0, m_core->param1); - if (m_core->param0 < ARRAY_LENGTH(m_dcr)) + if (m_core->param0 < std::size(m_dcr)) m_dcr[m_core->param0] = m_core->param1; } else { m_dcr_write_func(m_core->param0,m_core->param1); @@ -2662,7 +2662,7 @@ void ppc_device::ppc4xx_spu_rx_data(uint8_t data) uint32_t new_rxin; /* fail if we are going to overflow */ - new_rxin = (m_spu.rxin + 1) % ARRAY_LENGTH(m_spu.rxbuffer); + new_rxin = (m_spu.rxin + 1) % std::size(m_spu.rxbuffer); if (new_rxin == m_spu.rxout) fatalerror("ppc4xx_spu_rx_data: buffer overrun!\n"); @@ -2741,7 +2741,7 @@ TIMER_CALLBACK_MEMBER( ppc_device::ppc4xx_spu_callback ) /* consume the byte and advance the out pointer */ rxbyte = m_spu.rxbuffer[m_spu.rxout]; - m_spu.rxout = (m_spu.rxout + 1) % ARRAY_LENGTH(m_spu.rxbuffer); + m_spu.rxout = (m_spu.rxout + 1) % std::size(m_spu.rxbuffer); /* if we're not full, copy data to the buffer and update the line status */ if (!(m_spu.regs[SPU4XX_LINE_STATUS] & 0x80)) @@ -2784,7 +2784,7 @@ uint8_t ppc4xx_device::ppc4xx_spu_r(offs_t offset) break; default: - if (offset < ARRAY_LENGTH(m_spu.regs)) + if (offset < std::size(m_spu.regs)) result = m_spu.regs[offset]; break; } @@ -2848,7 +2848,7 @@ void ppc4xx_device::ppc4xx_spu_w(offs_t offset, uint8_t data) break; default: - if (offset < ARRAY_LENGTH(m_spu.regs)) + if (offset < std::size(m_spu.regs)) m_spu.regs[offset] = data; break; } diff --git a/src/devices/cpu/powerpc/ppcdrc.cpp b/src/devices/cpu/powerpc/ppcdrc.cpp index 120328a50a0..eb9fdd66966 100644 --- a/src/devices/cpu/powerpc/ppcdrc.cpp +++ b/src/devices/cpu/powerpc/ppcdrc.cpp @@ -118,7 +118,7 @@ inline void ppc_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -137,7 +137,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -149,7 +149,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block) inline void ppc_device::load_fast_fregs(drcuml_block &block) { - for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++) + for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++) { if (m_fdregmap[regnum].is_float_register()) { @@ -160,7 +160,7 @@ inline void ppc_device::load_fast_fregs(drcuml_block &block) void ppc_device::save_fast_fregs(drcuml_block &block) { - for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++) + for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++) { if (m_fdregmap[regnum].is_float_register()) { @@ -268,7 +268,7 @@ void ppc_device::ppcdrc_set_options(uint32_t options) void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) { - if (m_fastram_select < ARRAY_LENGTH(m_fastram)) + if (m_fastram_select < std::size(m_fastram)) { m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].end = end; @@ -285,7 +285,7 @@ void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void ppc_device::ppcdrc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) { - if (m_hotspot_select < ARRAY_LENGTH(m_hotspot)) + if (m_hotspot_select < std::size(m_hotspot)) { m_hotspot[m_hotspot_select].pc = pc; m_hotspot[m_hotspot_select].opcode = opcode; diff --git a/src/devices/cpu/romp/romp.cpp b/src/devices/cpu/romp/romp.cpp index 7f987b81e96..d68988cb876 100644 --- a/src/devices/cpu/romp/romp.cpp +++ b/src/devices/cpu/romp/romp.cpp @@ -63,7 +63,7 @@ void romp_device::device_start() state_add(ROMP_SCR + ICS, "ICS", m_scr[ICS]); state_add(ROMP_SCR + CS, "CS", m_scr[CS]); - for (unsigned i = 0; i < ARRAY_LENGTH(m_gpr); i++) + for (unsigned i = 0; i < std::size(m_gpr); i++) state_add(ROMP_GPR + i, util::string_format("R%d", i).c_str(), m_gpr[i]); // register state for saving diff --git a/src/devices/cpu/rsp/rspdrc.cpp b/src/devices/cpu/rsp/rspdrc.cpp index 4e5df7c80a0..d2e89b4a77a 100644 --- a/src/devices/cpu/rsp/rspdrc.cpp +++ b/src/devices/cpu/rsp/rspdrc.cpp @@ -91,7 +91,7 @@ inline void rsp_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) if (m_regmap[regnum].is_int_register()) UML_MOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_rsp_state->r[regnum])); } @@ -106,7 +106,7 @@ inline void rsp_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) if (m_regmap[regnum].is_int_register()) UML_MOV(block, mem(&m_rsp_state->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0)); } diff --git a/src/devices/cpu/sh/sh.cpp b/src/devices/cpu/sh/sh.cpp index 03fecd135ac..4779871d597 100644 --- a/src/devices/cpu/sh/sh.cpp +++ b/src/devices/cpu/sh/sh.cpp @@ -2009,7 +2009,7 @@ void cfunc_printf_probe(void *param) { ((sh_common_execution *)param)->func_prin void sh_common_execution::sh2drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) { - if (m_fastram_select < ARRAY_LENGTH(m_fastram)) + if (m_fastram_select < std::size(m_fastram)) { m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].end = end; @@ -2051,7 +2051,7 @@ void sh_common_execution::alloc_handle(uml::code_handle *&handleptr, const char void sh_common_execution::load_fast_iregs(drcuml_block &block) { - for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (int regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -2068,7 +2068,7 @@ void sh_common_execution::load_fast_iregs(drcuml_block &block) void sh_common_execution::save_fast_iregs(drcuml_block &block) { - for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (int regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -4293,6 +4293,6 @@ void sh_common_execution::sh2drc_add_pcflush(offs_t address) { if (!allow_drc()) return; - if (m_pcfsel < ARRAY_LENGTH(m_pcflushes)) + if (m_pcfsel < std::size(m_pcflushes)) m_pcflushes[m_pcfsel++] = address; } diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp index d11f7dd96cd..ded941af415 100644 --- a/src/devices/cpu/sharc/sharc.cpp +++ b/src/devices/cpu/sharc/sharc.cpp @@ -470,8 +470,6 @@ void adsp21062_device::external_dma_write(uint32_t address, uint64_t data) void adsp21062_device::device_start() { - int saveindex; - m_core = (sharc_internal_state *)m_cache.alloc_near(sizeof(sharc_internal_state)); memset(m_core, 0, sizeof(sharc_internal_state)); @@ -672,8 +670,8 @@ void adsp21062_device::device_start() m_core->fp1 = 1.0f; save_item(NAME(m_core->pc)); - save_pointer(NAME(&m_core->r[0].r), ARRAY_LENGTH(m_core->r)); - save_pointer(NAME(&m_core->reg_alt[0].r), ARRAY_LENGTH(m_core->reg_alt)); + save_pointer(NAME(&m_core->r[0].r), std::size(m_core->r)); + save_pointer(NAME(&m_core->reg_alt[0].r), std::size(m_core->reg_alt)); save_item(NAME(m_core->mrf)); save_item(NAME(m_core->mrb)); @@ -709,18 +707,15 @@ void adsp21062_device::device_start() save_item(NAME(m_core->dag2_alt.b)); save_item(NAME(m_core->dag2_alt.l)); - for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma); saveindex++) - { - save_item(NAME(m_core->dma[saveindex].control), saveindex); - save_item(NAME(m_core->dma[saveindex].int_index), saveindex); - save_item(NAME(m_core->dma[saveindex].int_modifier), saveindex); - save_item(NAME(m_core->dma[saveindex].int_count), saveindex); - save_item(NAME(m_core->dma[saveindex].chain_ptr), saveindex); - save_item(NAME(m_core->dma[saveindex].gen_purpose), saveindex); - save_item(NAME(m_core->dma[saveindex].ext_index), saveindex); - save_item(NAME(m_core->dma[saveindex].ext_modifier), saveindex); - save_item(NAME(m_core->dma[saveindex].ext_count), saveindex); - } + save_item(STRUCT_MEMBER(m_core->dma, control)); + save_item(STRUCT_MEMBER(m_core->dma, int_index)); + save_item(STRUCT_MEMBER(m_core->dma, int_modifier)); + save_item(STRUCT_MEMBER(m_core->dma, int_count)); + save_item(STRUCT_MEMBER(m_core->dma, chain_ptr)); + save_item(STRUCT_MEMBER(m_core->dma, gen_purpose)); + save_item(STRUCT_MEMBER(m_core->dma, ext_index)); + save_item(STRUCT_MEMBER(m_core->dma, ext_modifier)); + save_item(STRUCT_MEMBER(m_core->dma, ext_count)); save_item(NAME(m_core->mode1)); save_item(NAME(m_core->mode2)); @@ -737,11 +732,8 @@ void adsp21062_device::device_start() save_item(NAME(m_core->syscon)); save_item(NAME(m_core->sysstat)); - for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->status_stack); saveindex++) - { - save_item(NAME(m_core->status_stack[saveindex].mode1), saveindex); - save_item(NAME(m_core->status_stack[saveindex].astat), saveindex); - } + save_item(STRUCT_MEMBER(m_core->status_stack, mode1)); + save_item(STRUCT_MEMBER(m_core->status_stack, astat)); save_item(NAME(m_core->status_stkp)); save_item(NAME(m_core->px)); @@ -754,19 +746,16 @@ void adsp21062_device::device_start() save_item(NAME(m_core->irq_pending)); save_item(NAME(m_core->active_irq_num)); - for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma_op); saveindex++) - { - save_item(NAME(m_core->dma_op[saveindex].src), saveindex); - save_item(NAME(m_core->dma_op[saveindex].dst), saveindex); - save_item(NAME(m_core->dma_op[saveindex].chain_ptr), saveindex); - save_item(NAME(m_core->dma_op[saveindex].src_modifier), saveindex); - save_item(NAME(m_core->dma_op[saveindex].dst_modifier), saveindex); - save_item(NAME(m_core->dma_op[saveindex].src_count), saveindex); - save_item(NAME(m_core->dma_op[saveindex].dst_count), saveindex); - save_item(NAME(m_core->dma_op[saveindex].pmode), saveindex); - save_item(NAME(m_core->dma_op[saveindex].chained_direction), saveindex); - save_item(NAME(m_core->dma_op[saveindex].active), saveindex); - } + save_item(STRUCT_MEMBER(m_core->dma_op, src)); + save_item(STRUCT_MEMBER(m_core->dma_op, dst)); + save_item(STRUCT_MEMBER(m_core->dma_op, chain_ptr)); + save_item(STRUCT_MEMBER(m_core->dma_op, src_modifier)); + save_item(STRUCT_MEMBER(m_core->dma_op, dst_modifier)); + save_item(STRUCT_MEMBER(m_core->dma_op, src_count)); + save_item(STRUCT_MEMBER(m_core->dma_op, dst_count)); + save_item(STRUCT_MEMBER(m_core->dma_op, pmode)); + save_item(STRUCT_MEMBER(m_core->dma_op, chained_direction)); + save_item(STRUCT_MEMBER(m_core->dma_op, active)); save_item(NAME(m_core->dma_status)); diff --git a/src/devices/cpu/sharc/sharcdrc.cpp b/src/devices/cpu/sharc/sharcdrc.cpp index 91802cc4d61..2ad45389896 100644 --- a/src/devices/cpu/sharc/sharcdrc.cpp +++ b/src/devices/cpu/sharc/sharcdrc.cpp @@ -263,7 +263,7 @@ inline void adsp21062_device::load_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { @@ -282,7 +282,7 @@ void adsp21062_device::save_fast_iregs(drcuml_block &block) { int regnum; - for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) + for (regnum = 0; regnum < std::size(m_regmap); regnum++) { if (m_regmap[regnum].is_int_register()) { diff --git a/src/devices/cpu/sparc/sparc.cpp b/src/devices/cpu/sparc/sparc.cpp index 6dec789ca93..73f09cf2170 100644 --- a/src/devices/cpu/sparc/sparc.cpp +++ b/src/devices/cpu/sparc/sparc.cpp @@ -49,7 +49,7 @@ sparc_base_device::sparc_base_device(const machine_config &mconfig, device_type m_debugger_config = address_space_config("debug", ENDIANNESS_BIG, 32, 32); for (int i = 0; i < 0x10; i++) { - snprintf(asi_buf, ARRAY_LENGTH(asi_buf), "asi%X", i); + snprintf(asi_buf, std::size(asi_buf), "asi%X", i); m_asi_config[i] = address_space_config(asi_buf, ENDIANNESS_BIG, 32, 32); } } @@ -417,7 +417,7 @@ void sparc_base_device::device_reset() m_fp_exception = 0; m_fp_exception_pending = 0; m_fpr_pending = 0; - m_pending_fpr = ARRAY_LENGTH(m_fpr); + m_pending_fpr = std::size(m_fpr); m_fpu_sequence_err = 0; m_cp_disabled = 0; m_cp_exception = 0; @@ -4834,7 +4834,7 @@ inline void sparc_base_device::execute_step() m_fpr_pending--; if (!m_fpr_pending) { - m_pending_fpr = ARRAY_LENGTH(m_fpr); + m_pending_fpr = std::size(m_fpr); if (m_fp_exception_pending) { m_fp_exception_pending = false; diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp index 98365fbbc8a..2e0409b2886 100644 --- a/src/devices/cpu/tms32031/tms32031.cpp +++ b/src/devices/cpu/tms32031/tms32031.cpp @@ -432,7 +432,7 @@ tms32032_device::tms32032_device(const machine_config &mconfig, const char *tag, tms3203x_device::~tms3203x_device() { #if (TMS_3203X_LOG_OPCODE_USAGE) - for (int i = 0; i < ARRAY_LENGTH(m_hits); i++) + for (int i = 0; i < std::size(m_hits); i++) if (m_hits[i] != 0) printf("%10d - %03X.%X\n", m_hits[i], i / 4, i % 4); #endif diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index ab820fc1599..6eaf63b96ae 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -755,7 +755,7 @@ void tms340x0_device::device_start() save_item(NAME(m_convmp)); save_item(NAME(m_pixelshift)); save_item(NAME(m_gfxcycles)); - save_pointer(NAME(&m_regs[0].reg), ARRAY_LENGTH(m_regs)); + save_pointer(NAME(&m_regs[0].reg), std::size(m_regs)); set_icountptr(m_icount); } diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp index 89fdcc8d817..a65647cdf62 100644 --- a/src/devices/cpu/tms9900/tms9995.cpp +++ b/src/devices/cpu/tms9900/tms9995.cpp @@ -383,7 +383,7 @@ void tms9995_device::state_string_export(const device_state_entry &entry, std::s { static char const statestr[] = "LAECOPX-----IIII"; char flags[17]; - memset(flags, 0x00, ARRAY_LENGTH(flags)); + std::fill(std::begin(flags), std::end(flags), 0x00); uint16_t val = 0x8000; if (entry.index()==STATE_GENFLAGS) { diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp index df52f5f1235..8b0c7023f58 100644 --- a/src/devices/cpu/uml.cpp +++ b/src/devices/cpu/uml.cpp @@ -766,7 +766,7 @@ void uml::instruction::validate() } // make sure we aren't missing any parameters - if (m_numparams < ARRAY_LENGTH(opinfo.param)) + if (m_numparams < std::size(opinfo.param)) assert(opinfo.param[m_numparams].typemask == 0); #endif // MAME_DEBUG } diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp index b285fbc3048..1239a1075ed 100644 --- a/src/devices/cpu/unsp/unsp.cpp +++ b/src/devices/cpu/unsp/unsp.cpp @@ -309,7 +309,7 @@ void unsp_20_device::device_start() void unsp_device::device_reset() { - for (int i = 0; i < ARRAY_LENGTH(m_core->m_r); i++) + for (int i = 0; i < std::size(m_core->m_r); i++) { if (i < m_numregs) m_core->m_r[i] = 0; diff --git a/src/devices/imagedev/cassette.cpp b/src/devices/imagedev/cassette.cpp index 5d17f822e60..778b296d63d 100644 --- a/src/devices/imagedev/cassette.cpp +++ b/src/devices/imagedev/cassette.cpp @@ -364,7 +364,7 @@ std::string cassette_image_device::call_display() cassette_state uistate = get_state() & CASSETTE_MASK_UISTATE; // choose which frame of the animation we are at - int n = (int(position) / ANIMATION_FPS) % ARRAY_LENGTH(shapes); + int n = (int(position) / ANIMATION_FPS) % std::size(shapes); // play or record const char *status_icon = (uistate == CASSETTE_PLAY) diff --git a/src/devices/imagedev/flopdrv.cpp b/src/devices/imagedev/flopdrv.cpp index b505f99c8c1..6ab5028f2d8 100644 --- a/src/devices/imagedev/flopdrv.cpp +++ b/src/devices/imagedev/flopdrv.cpp @@ -456,7 +456,7 @@ image_init_result legacy_floppy_image_device::internal_floppy_device_load(bool i return image_init_result::PASS; error: - for (i = 0; i < ARRAY_LENGTH(errmap); i++) + for (i = 0; i < std::size(errmap); i++) { if (err == errmap[i].ferr) seterror(errmap[i].ierr, errmap[i].message); diff --git a/src/devices/machine/53c810.cpp b/src/devices/machine/53c810.cpp index 30fd7b08f33..261d640b340 100644 --- a/src/devices/machine/53c810.cpp +++ b/src/devices/machine/53c810.cpp @@ -723,7 +723,7 @@ unsigned lsi53c810_device::lsi53c810_dasm(char *buf, uint32_t pc) buf += sprintf(buf, "%s ", op_mnemonic); need_cojunction = false; - for (i = 0; i < ARRAY_LENGTH(flags); i++) + for (i = 0; i < std::size(flags); i++) { if (op & flags[i].flag) { diff --git a/src/devices/machine/64h156.cpp b/src/devices/machine/64h156.cpp index 7826cfdce58..2e9d70b2c5f 100644 --- a/src/devices/machine/64h156.cpp +++ b/src/devices/machine/64h156.cpp @@ -197,7 +197,7 @@ bool c64h156_device::write_next_bit(bool bit, const attotime &limit) if(etime > limit) return true; - if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer)) + if(bit && cur_live.write_position < std::size(cur_live.write_buffer)) cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period; LOG("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit); diff --git a/src/devices/machine/68307tmu.cpp b/src/devices/machine/68307tmu.cpp index 02e98e78983..06d9f57234d 100644 --- a/src/devices/machine/68307tmu.cpp +++ b/src/devices/machine/68307tmu.cpp @@ -152,7 +152,7 @@ uint16_t m68307_cpu_device::m68307_timer::read_tcn(uint16_t mem_mask, int which) void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask, int which) { - assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); + assert(which >= 0 && which < std::size(singletimer)); single_timer* tptr = &singletimer[which]; if (data & 0x2) { @@ -167,7 +167,7 @@ void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which) { m68307_cpu_device* m68k = parent; - assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); + assert(which >= 0 && which < std::size(singletimer)); single_timer* tptr = &singletimer[which]; COMBINE_DATA(&tptr->regs[m68307TIMER_TMR]); @@ -216,7 +216,7 @@ void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask void m68307_cpu_device::m68307_timer::write_trr(uint16_t data, uint16_t mem_mask, int which) { - assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); + assert(which >= 0 && which < std::size(singletimer)); single_timer* tptr = &singletimer[which]; COMBINE_DATA(&tptr->regs[m68307TIMER_TRR]); @@ -248,7 +248,7 @@ void m68307_cpu_device::m68307_timer::reset() bool m68307_cpu_device::m68307_timer::timer_int_pending(int which) const { - assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); + assert(which >= 0 && which < std::size(singletimer)); const single_timer* tptr = &singletimer[which]; return BIT(tptr->regs[m68307TIMER_TER], 1) && BIT(tptr->regs[m68307TIMER_TMR], 4); diff --git a/src/devices/machine/am2901b.cpp b/src/devices/machine/am2901b.cpp index a37ec638085..87b370a24b4 100644 --- a/src/devices/machine/am2901b.cpp +++ b/src/devices/machine/am2901b.cpp @@ -216,13 +216,13 @@ void am2901b_device::disassemble() }; char dasm_buf[64]; - int buf_idx = snprintf(dasm_buf, ARRAY_LENGTH(dasm_buf), "%s %s", s_func_table[(m_i >> 3) & 7], s_dst_table[(m_i >> 6) & 7]); + int buf_idx = snprintf(dasm_buf, std::size(dasm_buf), "%s %s", s_func_table[(m_i >> 3) & 7], s_dst_table[(m_i >> 6) & 7]); while (buf_idx < 12) { dasm_buf[buf_idx] = ' '; buf_idx++; } - snprintf(dasm_buf + buf_idx, ARRAY_LENGTH(dasm_buf) - 12, "%c,%c", s_r_table[m_i & 7], s_s_table[m_i & 7]); + snprintf(dasm_buf + buf_idx, std::size(dasm_buf) - 12, "%c,%c", s_r_table[m_i & 7], s_s_table[m_i & 7]); LOG("%s: %s\n", machine().describe_context(), dasm_buf); } diff --git a/src/devices/machine/amigafdc.cpp b/src/devices/machine/amigafdc.cpp index 9db640db021..e7c33f5dba7 100644 --- a/src/devices/machine/amigafdc.cpp +++ b/src/devices/machine/amigafdc.cpp @@ -629,7 +629,7 @@ bool amiga_fdc_device::pll_t::write_next_bit(bool bit, attotime &tm, floppy_imag uint16_t pre_counter = counter; counter += increment; if(bit && !(pre_counter & 0x400) && (counter & 0x400)) - if(write_position < ARRAY_LENGTH(write_buffer)) + if(write_position < std::size(write_buffer)) write_buffer[write_position++] = etime; slot++; tm = etime; diff --git a/src/devices/machine/appldriv.cpp b/src/devices/machine/appldriv.cpp index 1d207a9ab0b..194b8ccdc23 100644 --- a/src/devices/machine/appldriv.cpp +++ b/src/devices/machine/appldriv.cpp @@ -233,7 +233,7 @@ static uint8_t apple525_process_byte(device_t *img, int write_value) } disk->position++; - disk->position %= ARRAY_LENGTH(disk->track_data); + disk->position %= std::size(disk->track_data); /* when writing; save the current track after every full sector write */ if ((write_value >= 0) && ((disk->position % APPLE2_NIBBLE_SIZE) == 0)) diff --git a/src/devices/machine/eepromser.cpp b/src/devices/machine/eepromser.cpp index bd0447258f6..a8502e72fe3 100644 --- a/src/devices/machine/eepromser.cpp +++ b/src/devices/machine/eepromser.cpp @@ -331,7 +331,7 @@ void eeprom_serial_base_device::set_state(eeprom_state newstate) { STATE_WAIT_FOR_COMPLETION, "WAIT_FOR_COMPLETION" }, }; const char *newstate_string = "UNKNOWN"; - for (int index = 0; index < ARRAY_LENGTH(s_state_names); index++) + for (int index = 0; index < std::size(s_state_names); index++) if (s_state_names[index].state == newstate) newstate_string = s_state_names[index].string; LOG2("New state: %s\n", newstate_string); @@ -484,7 +484,7 @@ void eeprom_serial_base_device::execute_command() { COMMAND_ERASEALL, "Execute command:ERASEALL\n" }, }; const char *command_string = s_command_names[0].string; - for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) + for (int index = 0; index < std::size(s_command_names); index++) if (s_command_names[index].command == m_command) command_string = s_command_names[index].string; LOG1(command_string, m_address); @@ -565,7 +565,7 @@ void eeprom_serial_base_device::execute_write_command() { COMMAND_WRITEALL, "Execute write command: WRITEALL (%X) = 0x%X\n" }, }; const char *command_string = "UNKNOWN"; - for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) + for (int index = 0; index < std::size(s_command_names); index++) if (s_command_names[index].command == m_command) command_string = s_command_names[index].string; LOG1(command_string, m_address, m_shift_register); @@ -807,7 +807,7 @@ void eeprom_serial_x24c44_device::execute_command() { COMMAND_COPY_RAM_TO_EEPROM, "Execute command:COPY_RAM_TO_EEPROM\n" }, }; const char *command_string = s_command_names[0].string; - for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) + for (int index = 0; index < std::size(s_command_names); index++) if (s_command_names[index].command == m_command) command_string = s_command_names[index].string; LOG1(command_string, m_address); diff --git a/src/devices/machine/fdc_pll.cpp b/src/devices/machine/fdc_pll.cpp index 4b7d746d87c..b753a49fc0d 100644 --- a/src/devices/machine/fdc_pll.cpp +++ b/src/devices/machine/fdc_pll.cpp @@ -127,7 +127,7 @@ bool fdc_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *flop if(etime > limit) return true; - if(bit && write_position < ARRAY_LENGTH(write_buffer)) + if(bit && write_position < std::size(write_buffer)) write_buffer[write_position++] = ctime + period/2; tm = etime; diff --git a/src/devices/machine/gt64xxx.cpp b/src/devices/machine/gt64xxx.cpp index 4b2aab527e5..54ea16d5e3d 100644 --- a/src/devices/machine/gt64xxx.cpp +++ b/src/devices/machine/gt64xxx.cpp @@ -243,10 +243,8 @@ void gt64xxx_device::device_start() save_item(NAME(m_cpu_stalled_mem_mask)); save_item(NAME(m_prev_addr)); save_item(NAME(m_reg)); - for (int i = 0; i < ARRAY_LENGTH(m_timer); i++) { - save_item(NAME(m_timer[i].active), i); - save_item(NAME(m_timer[i].count), i); - } + save_item(STRUCT_MEMBER(m_timer, active)); + save_item(STRUCT_MEMBER(m_timer, count)); save_item(NAME(m_dma_active)); // m_ram[4] save_pointer(NAME(m_ram[0].data()), m_simm_size[0] / 4); diff --git a/src/devices/machine/i8279.cpp b/src/devices/machine/i8279.cpp index 5c186997cd0..474dfbbf170 100644 --- a/src/devices/machine/i8279.cpp +++ b/src/devices/machine/i8279.cpp @@ -298,7 +298,7 @@ void i8279_device::timer_mainloop() { u8 rl = m_in_rl_cb(0) ^ 0xff; // inverted u8 addr = m_scanner & 7; - assert(addr < ARRAY_LENGTH(m_s_ram)); + assert(addr < std::size(m_s_ram)); // see if key still down from last time u8 keys_down = rl & ~m_s_ram[addr]; @@ -444,7 +444,7 @@ u8 i8279_device::data_r() if (sensor_mode) { // read sensor ram - assert(m_s_ram_ptr < ARRAY_LENGTH(m_s_ram)); + assert(m_s_ram_ptr < std::size(m_s_ram)); data = m_s_ram[m_s_ram_ptr]; if (!machine().side_effects_disabled()) { diff --git a/src/devices/machine/keyboard.ipp b/src/devices/machine/keyboard.ipp index 12221dde05c..12dfb7b1a5a 100644 --- a/src/devices/machine/keyboard.ipp +++ b/src/devices/machine/keyboard.ipp @@ -106,8 +106,8 @@ void device_matrix_keyboard_interface::typematic_stop() template TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface::scan_row) { - assert(m_next_row < ARRAY_LENGTH(m_key_rows)); - assert(m_next_row < ARRAY_LENGTH(m_key_states)); + assert(m_next_row < std::size(m_key_rows)); + assert(m_next_row < std::size(m_key_states)); will_scan_row(m_next_row); @@ -128,7 +128,7 @@ TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface::scan_row) } } - m_next_row = (m_next_row + 1) % ARRAY_LENGTH(m_key_rows); + m_next_row = (m_next_row + 1) % std::size(m_key_rows); if (m_next_row == 0) scan_complete(); } diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp index d04d3c1201a..2bfd423305d 100644 --- a/src/devices/machine/laserdsc.cpp +++ b/src/devices/machine/laserdsc.cpp @@ -201,7 +201,7 @@ uint32_t laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bi } // swap to the next bitmap - m_overindex = (m_overindex + 1) % ARRAY_LENGTH(m_overbitmap); + m_overindex = (m_overindex + 1) % std::size(m_overbitmap); } return 0; } @@ -870,7 +870,7 @@ laserdisc_device::frame_data &laserdisc_device::current_frame() // determine the most recent live set of frames frame_data *frame = &m_frame[m_videoindex]; if (frame->m_numfields < 2) - frame = &m_frame[(m_videoindex + ARRAY_LENGTH(m_frame) - 1) % ARRAY_LENGTH(m_frame)]; + frame = &m_frame[(m_videoindex + std::size(m_frame) - 1) % std::size(m_frame)]; return *frame; } @@ -906,7 +906,7 @@ void laserdisc_device::read_track_data() if ((vbidata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE) { if (frame->m_numfields >= 2) - m_videoindex = (m_videoindex + 1) % ARRAY_LENGTH(m_frame); + m_videoindex = (m_videoindex + 1) % std::size(m_frame); frame = &m_frame[m_videoindex]; frame->m_numfields = 0; } diff --git a/src/devices/machine/ldv1000.cpp b/src/devices/machine/ldv1000.cpp index 8d94650e9db..934633e4b5a 100644 --- a/src/devices/machine/ldv1000.cpp +++ b/src/devices/machine/ldv1000.cpp @@ -392,7 +392,7 @@ uint8_t pioneer_ldv1000_device::z80_decoder_display_port_r(offs_t offset) if (m_portselect == 4) { m_vbiready = false; - result = m_vbi[m_vbiindex++ % ARRAY_LENGTH(m_vbi)]; + result = m_vbi[m_vbiindex++ % std::size(m_vbi)]; } } return result; diff --git a/src/devices/machine/ldvp931.cpp b/src/devices/machine/ldvp931.cpp index 094447391cf..69bf68d2f55 100644 --- a/src/devices/machine/ldvp931.cpp +++ b/src/devices/machine/ldvp931.cpp @@ -233,7 +233,7 @@ void philips_22vp931_device::device_timer(emu_timer &timer, device_timer_id id, m_fromcontroller_pending = true; // track the commands for debugging purposes - if (m_cmdcount < ARRAY_LENGTH(m_cmdbuf)) + if (m_cmdcount < std::size(m_cmdbuf)) { m_cmdbuf[m_cmdcount++ % 3] = param; if (LOG_COMMANDS && m_cmdcount % 3 == 0) diff --git a/src/devices/machine/ns32081.cpp b/src/devices/machine/ns32081.cpp index 73941a85f2c..c27ffde6595 100644 --- a/src/devices/machine/ns32081.cpp +++ b/src/devices/machine/ns32081.cpp @@ -108,7 +108,7 @@ void ns32081_device::device_start() void ns32081_device::device_reset() { m_fsr = 0; - std::fill_n(&m_f[0], ARRAY_LENGTH(m_f), 0); + std::fill(std::begin(m_f), std::end(m_f), 0); m_state = IDLE; } diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp index b0e63966e75..987e8951c27 100644 --- a/src/devices/machine/nscsi_bus.cpp +++ b/src/devices/machine/nscsi_bus.cpp @@ -544,7 +544,7 @@ bool nscsi_full_device::scsi_command_done(uint8_t command, uint8_t length) nscsi_full_device::control *nscsi_full_device::buf_control_push() { - if(buf_control_wpos == int(ARRAY_LENGTH(buf_control))) + if(buf_control_wpos == int(std::size(buf_control))) throw emu_fatalerror("%s: buf_control overflow\n", tag()); control *c = buf_control + buf_control_wpos; diff --git a/src/devices/machine/pci.cpp b/src/devices/machine/pci.cpp index 55fdfcdfce9..2620f1fc642 100644 --- a/src/devices/machine/pci.cpp +++ b/src/devices/machine/pci.cpp @@ -104,9 +104,7 @@ void pci_device::device_start() bank_count = 0; bank_reg_count = 0; - for (int i = 0; i < ARRAY_LENGTH(bank_infos); i++) { - save_item(NAME(bank_infos[i].adr), i); - } + save_item(STRUCT_MEMBER(bank_infos, adr)); save_item(NAME(command)); save_item(NAME(command_mask)); save_item(NAME(status)); diff --git a/src/devices/machine/pckeybrd.cpp b/src/devices/machine/pckeybrd.cpp index 1ab2dc80209..015c534327c 100644 --- a/src/devices/machine/pckeybrd.cpp +++ b/src/devices/machine/pckeybrd.cpp @@ -315,10 +315,10 @@ void pc_keyboard_device::device_start() save_item(NAME(m_on)); save_item(NAME(m_head)); save_item(NAME(m_tail)); - save_pointer(NAME(m_queue), ARRAY_LENGTH(m_queue)); - save_pointer(NAME(m_make), ARRAY_LENGTH(m_make)); + save_item(NAME(m_queue)); + save_item(NAME(m_make)); - memset(m_make, 0, sizeof(m_make)); + std::fill(std::begin(m_make), std::end(m_make), 0); machine().natkeyboard().configure( ioport_queue_chars_delegate(&pc_keyboard_device::queue_chars, this), @@ -383,7 +383,7 @@ void pc_keyboard_device::queue_insert(uint8_t data) m_queue[m_head] = data; m_head++; - m_head %= ARRAY_LENGTH(m_queue); + m_head %= std::size(m_queue); } @@ -392,7 +392,7 @@ int pc_keyboard_device::queue_size(void) int queue_size; queue_size = m_head - m_tail; if (queue_size < 0) - queue_size += ARRAY_LENGTH(m_queue); + queue_size += std::size(m_queue); return queue_size; } @@ -626,7 +626,7 @@ uint8_t pc_keyboard_device::read() logerror("read(): Keyboard Read 0x%02x\n",data); m_tail++; - m_tail %= ARRAY_LENGTH(m_queue); + m_tail %= std::size(m_queue); return data; } diff --git a/src/devices/machine/rtc4543.cpp b/src/devices/machine/rtc4543.cpp index 28cdfa69bb7..f58278118f6 100644 --- a/src/devices/machine/rtc4543.cpp +++ b/src/devices/machine/rtc4543.cpp @@ -268,7 +268,7 @@ READ_LINE_MEMBER( rtc4543_device::data_r ) void rtc4543_device::load_bit(int reg) { - assert(reg < ARRAY_LENGTH(m_regs)); + assert(reg < std::size(m_regs)); int bit = m_curbit & 7; // reload data? @@ -289,7 +289,7 @@ void rtc4543_device::load_bit(int reg) void rtc4543_device::store_bit(int reg) { - assert(reg < ARRAY_LENGTH(m_regs)); + assert(reg < std::size(m_regs)); int bit = m_curbit & 7; m_regs[reg] &= ~(1 << bit); diff --git a/src/devices/machine/s3c24xx.hxx b/src/devices/machine/s3c24xx.hxx index 74d0fce942c..acddd0ad7e0 100644 --- a/src/devices/machine/s3c24xx.hxx +++ b/src/devices/machine/s3c24xx.hxx @@ -1919,7 +1919,7 @@ void S3C24_CLASS_NAME::s3c24xx_gpio_w(offs_t offset, uint32_t data, uint32_t mem uint32_t S3C24_CLASS_NAME::s3c24xx_memcon_r(offs_t offset, uint32_t mem_mask) { - assert(offset < ARRAY_LENGTH(m_memcon.regs.data)); + assert(offset < std::size(m_memcon.regs.data)); uint32_t data = m_memcon.regs.data[offset]; LOGMASKED(LOG_MEMCON, "%s: memcon read: %08x = %08x & %08x\n", machine().describe_context(), S3C24XX_BASE_MEMCON + (offset << 2), data, mem_mask); return data; diff --git a/src/devices/machine/sa1110.cpp b/src/devices/machine/sa1110.cpp index 86e17a10d4f..11afedeef51 100644 --- a/src/devices/machine/sa1110.cpp +++ b/src/devices/machine/sa1110.cpp @@ -429,7 +429,7 @@ void sa1110_periphs_device::rcv_complete() void sa1110_periphs_device::tra_complete() { m_uart_regs.tx_fifo_count--; - m_uart_regs.tx_fifo_read_idx = (m_uart_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_uart_regs.tx_fifo); + m_uart_regs.tx_fifo_read_idx = (m_uart_regs.tx_fifo_read_idx + 1) % std::size(m_uart_regs.tx_fifo); m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT); if (m_uart_regs.tx_fifo_count) @@ -463,7 +463,7 @@ void sa1110_periphs_device::uart_update_eif_status() bool has_error = false; for (int i = 0; i < 4 && i < m_uart_regs.rx_fifo_count; i++) { - const int read_idx = (m_uart_regs.rx_fifo_read_idx + i) % ARRAY_LENGTH(m_uart_regs.rx_fifo); + const int read_idx = (m_uart_regs.rx_fifo_read_idx + i) % std::size(m_uart_regs.rx_fifo); if (m_uart_regs.rx_fifo[read_idx] & 0x700) { has_error = true; @@ -485,7 +485,7 @@ void sa1110_periphs_device::uart_update_eif_status() void sa1110_periphs_device::uart_write_receive_fifo(uint16_t data_and_flags) { - if (m_uart_regs.rx_fifo_count >= ARRAY_LENGTH(m_uart_regs.rx_fifo)) + if (m_uart_regs.rx_fifo_count >= std::size(m_uart_regs.rx_fifo)) return; if (!BIT(m_uart_regs.utcr[3], UTCR3_RXE_BIT)) return; @@ -493,7 +493,7 @@ void sa1110_periphs_device::uart_write_receive_fifo(uint16_t data_and_flags) // fill FIFO entry m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_write_idx] = data_and_flags; m_uart_regs.rx_fifo_count++; - m_uart_regs.rx_fifo_write_idx = (m_uart_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_uart_regs.rx_fifo); + m_uart_regs.rx_fifo_write_idx = (m_uart_regs.rx_fifo_write_idx + 1) % std::size(m_uart_regs.rx_fifo); // update error flags uart_update_eif_status(); @@ -507,7 +507,7 @@ uint8_t sa1110_periphs_device::uart_read_receive_fifo() const uint8_t data = m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_read_idx]; if (m_uart_regs.rx_fifo_count) { - m_uart_regs.rx_fifo_read_idx = (m_uart_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_uart_regs.rx_fifo); + m_uart_regs.rx_fifo_read_idx = (m_uart_regs.rx_fifo_read_idx + 1) % std::size(m_uart_regs.rx_fifo); m_uart_regs.rx_fifo_count--; if (m_uart_regs.rx_fifo_count) { @@ -545,7 +545,7 @@ void sa1110_periphs_device::uart_check_rx_fifo_service() void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data) { - if (m_uart_regs.tx_fifo_count >= ARRAY_LENGTH(m_uart_regs.tx_fifo)) + if (m_uart_regs.tx_fifo_count >= std::size(m_uart_regs.tx_fifo)) return; if (!BIT(m_uart_regs.utcr[3], UTCR3_TXE_BIT)) return; @@ -560,7 +560,7 @@ void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data) // fill FIFO entry m_uart_regs.tx_fifo[m_uart_regs.tx_fifo_write_idx] = data; m_uart_regs.tx_fifo_count++; - m_uart_regs.tx_fifo_write_idx = (m_uart_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_uart_regs.tx_fifo); + m_uart_regs.tx_fifo_write_idx = (m_uart_regs.tx_fifo_write_idx + 1) % std::size(m_uart_regs.tx_fifo); // update FIFO-service interrupt uart_check_tx_fifo_service(); @@ -568,7 +568,7 @@ void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data) void sa1110_periphs_device::uart_check_tx_fifo_service() { - if (m_uart_regs.tx_fifo_count < ARRAY_LENGTH(m_uart_regs.tx_fifo)) + if (m_uart_regs.tx_fifo_count < std::size(m_uart_regs.tx_fifo)) m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT); else m_uart_regs.utsr1 &= ~(1 << UTSR1_TNF_BIT); @@ -808,7 +808,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::mcp_audio_tx_callback) if (m_mcp_regs.audio_tx_fifo_count) { m_mcp_regs.audio_tx_fifo_count--; - m_mcp_regs.audio_tx_fifo_read_idx = (m_mcp_regs.audio_tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo); + m_mcp_regs.audio_tx_fifo_read_idx = (m_mcp_regs.audio_tx_fifo_read_idx + 1) % std::size(m_mcp_regs.audio_tx_fifo); m_mcp_regs.mcsr &= ~(1 << MCSR_ATU_BIT); m_mcp_irqs->in_w(0); @@ -833,7 +833,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::mcp_telecom_tx_callback) if (m_mcp_regs.telecom_tx_fifo_count) { m_mcp_regs.telecom_tx_fifo_count--; - m_mcp_regs.telecom_tx_fifo_read_idx = (m_mcp_regs.telecom_tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo); + m_mcp_regs.telecom_tx_fifo_read_idx = (m_mcp_regs.telecom_tx_fifo_read_idx + 1) % std::size(m_mcp_regs.telecom_tx_fifo); m_mcp_regs.mcsr &= ~(1 << MCSR_TTU_BIT); m_mcp_irqs->in_w(0); @@ -853,7 +853,7 @@ uint16_t sa1110_periphs_device::mcp_read_audio_fifo() if (m_mcp_regs.audio_rx_fifo_count) { m_mcp_regs.audio_rx_fifo_count--; - m_mcp_regs.audio_rx_fifo_read_idx = (m_mcp_regs.audio_rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_rx_fifo); + m_mcp_regs.audio_rx_fifo_read_idx = (m_mcp_regs.audio_rx_fifo_read_idx + 1) % std::size(m_mcp_regs.audio_rx_fifo); const bool half_full = m_mcp_regs.audio_rx_fifo_count >= 4; m_mcp_regs.mcsr &= ~(1 << MCSR_ARS_BIT); @@ -878,7 +878,7 @@ uint16_t sa1110_periphs_device::mcp_read_telecom_fifo() if (m_mcp_regs.telecom_rx_fifo_count) { m_mcp_regs.telecom_rx_fifo_count--; - m_mcp_regs.telecom_rx_fifo_read_idx = (m_mcp_regs.telecom_rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_rx_fifo); + m_mcp_regs.telecom_rx_fifo_read_idx = (m_mcp_regs.telecom_rx_fifo_read_idx + 1) % std::size(m_mcp_regs.telecom_rx_fifo); const bool half_full = m_mcp_regs.telecom_rx_fifo_count >= 4; m_mcp_regs.mcsr &= ~(1 << MCSR_TRS_BIT); @@ -935,14 +935,14 @@ void sa1110_periphs_device::mcp_set_enabled(bool enabled) void sa1110_periphs_device::mcp_audio_tx_fifo_push(const uint16_t value) { - if (m_mcp_regs.audio_rx_fifo_count == ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)) + if (m_mcp_regs.audio_rx_fifo_count == std::size(m_mcp_regs.audio_tx_fifo)) return; m_mcp_regs.audio_tx_fifo[m_mcp_regs.audio_tx_fifo_write_idx] = value; - m_mcp_regs.audio_rx_fifo_write_idx = (m_mcp_regs.audio_tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo); + m_mcp_regs.audio_rx_fifo_write_idx = (m_mcp_regs.audio_tx_fifo_write_idx + 1) % std::size(m_mcp_regs.audio_tx_fifo); m_mcp_regs.audio_rx_fifo_count++; - if (m_mcp_regs.audio_tx_fifo_count == ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)) + if (m_mcp_regs.audio_tx_fifo_count == std::size(m_mcp_regs.audio_tx_fifo)) m_mcp_regs.mcsr &= ~(1 << MCSR_ANF_BIT); if (m_mcp_regs.audio_tx_fifo_count >= 4) @@ -961,14 +961,14 @@ void sa1110_periphs_device::mcp_audio_tx_fifo_push(const uint16_t value) void sa1110_periphs_device::mcp_telecom_tx_fifo_push(const uint16_t value) { - if (m_mcp_regs.telecom_rx_fifo_count == ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)) + if (m_mcp_regs.telecom_rx_fifo_count == std::size(m_mcp_regs.telecom_tx_fifo)) return; m_mcp_regs.telecom_tx_fifo[m_mcp_regs.telecom_tx_fifo_write_idx] = value; - m_mcp_regs.telecom_rx_fifo_write_idx = (m_mcp_regs.telecom_tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo); + m_mcp_regs.telecom_rx_fifo_write_idx = (m_mcp_regs.telecom_tx_fifo_write_idx + 1) % std::size(m_mcp_regs.telecom_tx_fifo); m_mcp_regs.telecom_rx_fifo_count++; - if (m_mcp_regs.telecom_tx_fifo_count == ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)) + if (m_mcp_regs.telecom_tx_fifo_count == std::size(m_mcp_regs.telecom_tx_fifo)) m_mcp_regs.mcsr &= ~(1 << MCSR_TNF_BIT); if (m_mcp_regs.audio_tx_fifo_count >= 4) @@ -1156,7 +1156,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::ssp_tx_callback) const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx]; m_ssp_out(data); - m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); + m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % std::size(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_count--; m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); @@ -1169,7 +1169,7 @@ void sa1110_periphs_device::ssp_update_enable_state() { if (BIT(m_ssp_regs.sscr0, SSCR0_SSE_BIT)) { - if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) + if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo)) m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); else m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT); @@ -1227,10 +1227,10 @@ void sa1110_periphs_device::ssp_update_rx_level() void sa1110_periphs_device::ssp_rx_fifo_push(const uint16_t data) { - if (m_ssp_regs.rx_fifo_count < ARRAY_LENGTH(m_ssp_regs.rx_fifo)) + if (m_ssp_regs.rx_fifo_count < std::size(m_ssp_regs.rx_fifo)) { m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data; - m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); + m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % std::size(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_count++; m_ssp_regs.sssr |= (1 << SSSR_RNE_BIT); @@ -1249,13 +1249,13 @@ void sa1110_periphs_device::ssp_update_tx_level() void sa1110_periphs_device::ssp_tx_fifo_push(const uint16_t data) { - if (m_ssp_regs.tx_fifo_count < ARRAY_LENGTH(m_ssp_regs.tx_fifo)) + if (m_ssp_regs.tx_fifo_count < std::size(m_ssp_regs.tx_fifo)) { m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data; - m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); + m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % std::size(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_count++; - if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) + if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo)) m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); else m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT); @@ -1274,7 +1274,7 @@ uint16_t sa1110_periphs_device::ssp_rx_fifo_pop() uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx]; if (m_ssp_regs.rx_fifo_count) { - m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); + m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % std::size(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_count--; if (m_ssp_regs.rx_fifo_count == 0) @@ -2464,15 +2464,15 @@ void sa1110_periphs_device::device_reset() m_udc_regs.udcsr = 0; // init ICP - memset(m_icp_regs.uart.utcr, 0, sizeof(uint32_t) * 4); + std::fill_n(&m_icp_regs.uart.utcr[0], 4, 0); m_icp_regs.uart.utsr0 = 0; m_icp_regs.uart.utsr1 = 0; - memset(m_icp_regs.uart.rx_fifo, 0, sizeof(uint16_t) * 12); + std::fill_n(&m_icp_regs.uart.rx_fifo[0], 12, 0); m_icp_regs.uart.rx_fifo_read_idx = 0; m_icp_regs.uart.rx_fifo_write_idx = 0; m_icp_regs.uart.rx_fifo_count = 0; m_icp_regs.uart_rx_timer->adjust(attotime::never); - memset(m_icp_regs.uart.tx_fifo, 0, 8); + std::fill_n(&m_icp_regs.uart.tx_fifo[0], 8, 0); m_icp_regs.uart.tx_fifo_read_idx = 0; m_icp_regs.uart.tx_fifo_write_idx = 0; m_icp_regs.uart.tx_fifo_count = 0; @@ -2484,26 +2484,26 @@ void sa1110_periphs_device::device_reset() m_icp_regs.hssp.hscr1 = 0; m_icp_regs.hssp.hssr0 = 0; m_icp_regs.hssp.hssr1 = 0; - memset(m_icp_regs.hssp.rx_fifo, 0, sizeof(uint16_t) * 8); + std::fill_n(&m_icp_regs.hssp.rx_fifo[0], 4, 0); m_icp_regs.hssp.rx_fifo_read_idx = 0; m_icp_regs.hssp.rx_fifo_write_idx = 0; m_icp_regs.hssp.rx_fifo_count = 0; m_icp_regs.hssp.rx_timer->adjust(attotime::never); - memset(m_icp_regs.hssp.tx_fifo, 0, sizeof(uint16_t) * 8); + std::fill_n(&m_icp_regs.hssp.tx_fifo[0], 12, 0); m_icp_regs.hssp.tx_fifo_read_idx = 0; m_icp_regs.hssp.tx_fifo_write_idx = 0; m_icp_regs.hssp.tx_fifo_count = 0; m_icp_regs.hssp.tx_timer->adjust(attotime::never); // init UART3 - memset(m_uart_regs.utcr, 0, sizeof(uint32_t) * 4); + std::fill_n(&m_uart_regs.utcr[0], 4, 0); m_uart_regs.utsr0 = 0; m_uart_regs.utsr1 = 0; - memset(m_uart_regs.rx_fifo, 0, sizeof(uint16_t) * 12); + std::fill_n(&m_uart_regs.rx_fifo[0], 12, 0); m_uart_regs.rx_fifo_read_idx = 0; m_uart_regs.rx_fifo_write_idx = 0; m_uart_regs.rx_fifo_count = 0; - memset(m_uart_regs.tx_fifo, 0, 8); + std::fill_n(&m_uart_regs.tx_fifo[0], 8, 0); m_uart_regs.tx_fifo_read_idx = 0; m_uart_regs.tx_fifo_write_idx = 0; m_uart_regs.tx_fifo_count = 0; @@ -2517,20 +2517,20 @@ void sa1110_periphs_device::device_reset() m_mcp_regs.mccr1 = 0; m_mcp_regs.mcdr2 = 0; m_mcp_regs.mcsr = (1 << MCSR_ANF_BIT) | (1 << MCSR_TNF_BIT); - memset(m_mcp_regs.audio_rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.audio_rx_fifo)); + std::fill(std::begin(m_mcp_regs.audio_rx_fifo), std::end(m_mcp_regs.audio_rx_fifo), 0); m_mcp_regs.audio_rx_fifo_read_idx = 0; m_mcp_regs.audio_rx_fifo_write_idx = 0; m_mcp_regs.audio_rx_fifo_count = 0; - memset(m_mcp_regs.audio_tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)); + std::fill(std::begin(m_mcp_regs.audio_tx_fifo), std::end(m_mcp_regs.audio_tx_fifo), 0); m_mcp_regs.audio_tx_fifo_read_idx = 0; m_mcp_regs.audio_tx_fifo_write_idx = 0; m_mcp_regs.audio_tx_fifo_count = 0; m_mcp_regs.audio_tx_timer->adjust(attotime::never); - memset(m_mcp_regs.telecom_rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.telecom_rx_fifo)); + std::fill(std::begin(m_mcp_regs.telecom_rx_fifo), std::end(m_mcp_regs.telecom_rx_fifo), 0); m_mcp_regs.telecom_rx_fifo_read_idx = 0; m_mcp_regs.telecom_rx_fifo_write_idx = 0; m_mcp_regs.telecom_rx_fifo_count = 0; - memset(m_mcp_regs.telecom_tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)); + std::fill(std::begin(m_mcp_regs.telecom_tx_fifo), std::end(m_mcp_regs.telecom_tx_fifo), 0); m_mcp_regs.telecom_tx_fifo_read_idx = 0; m_mcp_regs.telecom_tx_fifo_write_idx = 0; m_mcp_regs.telecom_tx_fifo_count = 0; @@ -2540,19 +2540,19 @@ void sa1110_periphs_device::device_reset() m_ssp_regs.sscr0 = 0; m_ssp_regs.sscr1 = 0; m_ssp_regs.sssr = (1 << SSSR_TNF_BIT); - memset(m_ssp_regs.rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.rx_fifo)); + std::fill(std::begin(m_ssp_regs.rx_fifo), std::end(m_ssp_regs.rx_fifo), 0); m_ssp_regs.rx_fifo_read_idx = 0; m_ssp_regs.rx_fifo_write_idx = 0; m_ssp_regs.rx_fifo_count = 0; m_ssp_regs.rx_timer->adjust(attotime::never); - memset(m_ssp_regs.tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.tx_fifo)); + std::fill(std::begin(m_ssp_regs.tx_fifo), std::end(m_ssp_regs.tx_fifo), 0); m_ssp_regs.tx_fifo_read_idx = 0; m_ssp_regs.tx_fifo_write_idx = 0; m_ssp_regs.tx_fifo_count = 0; m_ssp_regs.tx_timer->adjust(attotime::never); // init OS timers - memset(m_ostmr_regs.osmr, 0, sizeof(uint32_t) * 4); + std::fill_n(&m_ostmr_regs.osmr[0], 4, 0); m_ostmr_regs.ower = 0; m_ostmr_regs.ossr = 0; m_ostmr_regs.oier = 0; @@ -2570,7 +2570,13 @@ void sa1110_periphs_device::device_reset() m_rtc_regs.tick_timer->adjust(attotime::from_seconds(1), 0, attotime::from_seconds(1)); // init power regs - memset(&m_power_regs, 0, sizeof(m_power_regs)); + m_power_regs.pmcr = 0; + m_power_regs.pssr = 0; + m_power_regs.pspr = 0; + m_power_regs.pwer = 0; + m_power_regs.pcfr = 0; + m_power_regs.ppcr = 0; + m_power_regs.pgsr = 0; m_power_regs.posr = 1; // flag oscillator OK // init PPC regs @@ -2581,17 +2587,34 @@ void sa1110_periphs_device::device_reset() m_ppc_regs.ppfr = 0x0007f001; // init DMA regs - for (int channel = 0; channel < 6; channel++) + for (dma_regs ®s : m_dma_regs) { - m_dma_regs[channel].ddar = 0; - m_dma_regs[channel].dsr = 0; - memset(m_dma_regs[channel].dbs, 0, sizeof(uint32_t) * 2); - memset(m_dma_regs[channel].dbt, 0, sizeof(uint32_t) * 2); + regs.ddar = 0; + regs.dsr = 0; + std::fill_n(®s.dbs[0], 2, 0); + std::fill_n(®s.dbt[0], 2, 0); } - // bulk-init other registers + m_rcsr = 0x00000001; // indicate hardware reset - memset(&m_gpio_regs, 0, sizeof(m_gpio_regs)); - memset(&m_intc_regs, 0, sizeof(m_intc_regs)); + + m_gpio_regs.gplr = 0; + m_gpio_regs.gpdr = 0; + m_gpio_regs.grer = 0; + m_gpio_regs.gfer = 0; + m_gpio_regs.gedr = 0; + m_gpio_regs.gafr = 0; + m_gpio_regs.any_edge_mask = 0; + m_gpio_regs.output_latch = 0; + m_gpio_regs.input_latch = 0; + m_gpio_regs.alt_output_latch = 0; + m_gpio_regs.alt_input_latch = 0; + + m_intc_regs.icip = 0; + m_intc_regs.icmr = 0; + m_intc_regs.iclr = 0; + m_intc_regs.iccr = 0; + m_intc_regs.icfp = 0; + m_intc_regs.icpr = 0; uart_check_rx_fifo_service(); uart_check_tx_fifo_service(); diff --git a/src/devices/machine/sa1111.cpp b/src/devices/machine/sa1111.cpp index e58d8250187..89ebf0a1784 100644 --- a/src/devices/machine/sa1111.cpp +++ b/src/devices/machine/sa1111.cpp @@ -478,7 +478,7 @@ TIMER_CALLBACK_MEMBER(sa1111_device::audio_tx_dma_callback) { const uint32_t buf = BIT(m_audio_regs.sadtcs, SADTCS_TBIU_BIT); const uint32_t remaining = m_audio_regs.sadtcc >> 2; - const uint32_t avail = ARRAY_LENGTH(m_audio_regs.tx_fifo) - m_audio_regs.tx_fifo_count; + const uint32_t avail = std::size(m_audio_regs.tx_fifo) - m_audio_regs.tx_fifo_count; if (remaining == 0 || avail == 0) return; @@ -655,12 +655,12 @@ void sa1111_device::audio_start_rx_dma(const uint32_t buf) void sa1111_device::audio_update_tx_fifo_levels() { uint32_t &status = BIT(m_sbi_regs.skcr, SKCR_SACMDSL_BIT) ? m_audio_regs.sasr1 : m_audio_regs.sasr0; - if (m_audio_regs.tx_fifo_count < ARRAY_LENGTH(m_audio_regs.tx_fifo)) + if (m_audio_regs.tx_fifo_count < std::size(m_audio_regs.tx_fifo)) status |= (1 << SASR_TNF_BIT); else status &= ~(1 << SASR_TNF_BIT); - const uint32_t tfl = ((m_audio_regs.tx_fifo_count == ARRAY_LENGTH(m_audio_regs.tx_fifo)) ? (m_audio_regs.tx_fifo_count - 1) : m_audio_regs.tx_fifo_count); + const uint32_t tfl = ((m_audio_regs.tx_fifo_count == std::size(m_audio_regs.tx_fifo)) ? (m_audio_regs.tx_fifo_count - 1) : m_audio_regs.tx_fifo_count); status &= ~SASR_TFL_MASK; status |= (tfl << SASR_TFL_BIT); @@ -685,7 +685,7 @@ void sa1111_device::audio_update_rx_fifo_levels() else status &= ~(1 << SASR_RNE_BIT); - const uint32_t rfl = ((m_audio_regs.rx_fifo_count == ARRAY_LENGTH(m_audio_regs.rx_fifo)) ? (m_audio_regs.rx_fifo_count - 1) : m_audio_regs.rx_fifo_count); + const uint32_t rfl = ((m_audio_regs.rx_fifo_count == std::size(m_audio_regs.rx_fifo)) ? (m_audio_regs.rx_fifo_count - 1) : m_audio_regs.rx_fifo_count); status &= ~SASR_RFL_MASK; status |= (rfl << SASR_RFL_BIT); @@ -713,10 +713,10 @@ void sa1111_device::audio_update_busy_flag() void sa1111_device::audio_tx_fifo_push(uint32_t data) { - if (m_audio_regs.tx_fifo_count < ARRAY_LENGTH(m_audio_regs.tx_fifo)) + if (m_audio_regs.tx_fifo_count < std::size(m_audio_regs.tx_fifo)) { m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_write_idx] = data; - m_audio_regs.tx_fifo_write_idx = (m_audio_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_audio_regs.tx_fifo); + m_audio_regs.tx_fifo_write_idx = (m_audio_regs.tx_fifo_write_idx + 1) % std::size(m_audio_regs.tx_fifo); m_audio_regs.tx_fifo_count++; audio_update_tx_fifo_levels(); if (m_audio_regs.tx_timer->remaining() == attotime::never) @@ -734,7 +734,7 @@ uint32_t sa1111_device::audio_tx_fifo_pop() if (m_audio_regs.tx_fifo_count > 0) { const uint32_t data = m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_read_idx]; - m_audio_regs.tx_fifo_read_idx = (m_audio_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_audio_regs.tx_fifo); + m_audio_regs.tx_fifo_read_idx = (m_audio_regs.tx_fifo_read_idx + 1) % std::size(m_audio_regs.tx_fifo); m_audio_regs.tx_fifo_count--; audio_update_tx_fifo_levels(); if (m_audio_regs.tx_fifo_count == 0) @@ -754,10 +754,10 @@ uint32_t sa1111_device::audio_tx_fifo_pop() void sa1111_device::audio_rx_fifo_push(uint32_t data) { - if (m_audio_regs.rx_fifo_count < ARRAY_LENGTH(m_audio_regs.rx_fifo)) + if (m_audio_regs.rx_fifo_count < std::size(m_audio_regs.rx_fifo)) { m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_write_idx] = data; - m_audio_regs.rx_fifo_write_idx = (m_audio_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_audio_regs.rx_fifo); + m_audio_regs.rx_fifo_write_idx = (m_audio_regs.rx_fifo_write_idx + 1) % std::size(m_audio_regs.rx_fifo); m_audio_regs.rx_fifo_count++; audio_update_rx_fifo_levels(); } @@ -774,7 +774,7 @@ uint32_t sa1111_device::audio_rx_fifo_pop() if (m_audio_regs.rx_fifo_count > 0) { const uint32_t data = m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_read_idx]; - m_audio_regs.rx_fifo_read_idx = (m_audio_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_audio_regs.rx_fifo); + m_audio_regs.rx_fifo_read_idx = (m_audio_regs.rx_fifo_read_idx + 1) % std::size(m_audio_regs.rx_fifo); m_audio_regs.rx_fifo_count--; audio_update_rx_fifo_levels(); return data; @@ -1247,7 +1247,7 @@ TIMER_CALLBACK_MEMBER(sa1111_device::ssp_tx_callback) const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx]; m_ssp_out(data); - m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); + m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % std::size(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_count--; m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); @@ -1265,7 +1265,7 @@ void sa1111_device::ssp_update_enable_state() const uint32_t tft = (m_ssp_regs.sspsr & SSPCR1_TFT_MASK) >> SSPCR1_TFT_BIT; const uint32_t rft = (m_ssp_regs.sspsr & SSPCR1_RFT_MASK) >> SSPCR1_RFT_BIT; - if (tfl != (ARRAY_LENGTH(m_ssp_regs.tx_fifo) - 1)) + if (tfl != (std::size(m_ssp_regs.tx_fifo) - 1)) m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); else m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT); @@ -1328,10 +1328,10 @@ void sa1111_device::ssp_update_rx_level() void sa1111_device::ssp_rx_fifo_push(const uint16_t data) { - if (m_ssp_regs.rx_fifo_count < ARRAY_LENGTH(m_ssp_regs.rx_fifo)) + if (m_ssp_regs.rx_fifo_count < std::size(m_ssp_regs.rx_fifo)) { m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data; - m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); + m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % std::size(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_count++; m_ssp_regs.sspsr |= (1 << SSPSR_RNE_BIT); @@ -1355,13 +1355,13 @@ void sa1111_device::ssp_update_tx_level() void sa1111_device::ssp_tx_fifo_push(const uint16_t data) { - if (m_ssp_regs.tx_fifo_count < ARRAY_LENGTH(m_ssp_regs.tx_fifo)) + if (m_ssp_regs.tx_fifo_count < std::size(m_ssp_regs.tx_fifo)) { m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data; - m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); + m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % std::size(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_count++; - if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) + if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo)) m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); else m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT); @@ -1375,7 +1375,7 @@ uint16_t sa1111_device::ssp_rx_fifo_pop() uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx]; if (m_ssp_regs.rx_fifo_count) { - m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); + m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % std::size(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_count--; if (m_ssp_regs.rx_fifo_count == 0) @@ -2112,11 +2112,11 @@ void sa1111_device::device_reset() m_sk_regs.skpen1 = 0; m_sk_regs.skpwm1 = 0; - memset(m_usb_regs.ohci, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_usb_regs.ohci)); + std::fill(std::begin(m_usb_regs.ohci), std::end(m_usb_regs.ohci), 0); m_usb_regs.status = 0; m_usb_regs.reset = (1 << USBRST_FHR_BIT) | (1 << USBRST_FIR_BIT); m_usb_regs.int_test = 0; - memset(m_usb_regs.fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_usb_regs.fifo)); + std::fill(std::begin(m_usb_regs.fifo), std::end(m_usb_regs.fifo), 0); m_audio_regs.sacr0 = (0x7 << SACR0_RFTH_BIT) | (0x7 << SACR0_TFTH_BIT); m_audio_regs.sacr1 = 0; @@ -2130,23 +2130,23 @@ void sa1111_device::device_reset() m_audio_regs.acsar = 0; m_audio_regs.acsdr = 0; m_audio_regs.sadtcs = 0; - memset(m_audio_regs.sadts, 0, sizeof(uint32_t) * 2); - memset(m_audio_regs.sadtc, 0, sizeof(uint32_t) * 2); + std::fill_n(&m_audio_regs.sadts[0], 2, 0); + std::fill_n(&m_audio_regs.sadtc[0], 2, 0); m_audio_regs.sadta = 0; m_audio_regs.sadtcc = 0; m_audio_regs.sadrcs = 0; - memset(m_audio_regs.sadrs, 0, sizeof(uint32_t) * 2); - memset(m_audio_regs.sadrc, 0, sizeof(uint32_t) * 2); + std::fill_n(&m_audio_regs.sadrs[0], 2, 0); + std::fill_n(&m_audio_regs.sadrc[0], 2, 0); m_audio_regs.sadra = 0; m_audio_regs.sadrcc = 0; m_audio_regs.saitr = 0; - memset(m_audio_regs.rx_fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_audio_regs.rx_fifo)); + std::fill(std::begin(m_audio_regs.rx_fifo), std::end(m_audio_regs.rx_fifo), 0); m_audio_regs.rx_fifo_read_idx = 0; m_audio_regs.rx_fifo_write_idx = 0; m_audio_regs.rx_fifo_count = 0; m_audio_regs.rx_timer->adjust(attotime::never); m_audio_regs.rx_dma_timer->adjust(attotime::never); - memset(m_audio_regs.tx_fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_audio_regs.tx_fifo)); + std::fill(std::begin(m_audio_regs.tx_fifo), std::end(m_audio_regs.tx_fifo), 0); m_audio_regs.tx_fifo_read_idx = 0; m_audio_regs.tx_fifo_write_idx = 0; m_audio_regs.tx_fifo_count = 0; @@ -2157,35 +2157,43 @@ void sa1111_device::device_reset() m_ssp_regs.sspcr1 = (0x7 << SSPCR1_RFT_BIT) | (0x7 << SSPCR1_TFT_BIT); m_ssp_regs.sspsr = 0; m_ssp_regs.sspitr = 0; - memset(m_ssp_regs.rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.rx_fifo)); + std::fill(std::begin(m_ssp_regs.rx_fifo), std::end(m_ssp_regs.rx_fifo), 0); m_ssp_regs.rx_fifo_read_idx = 0; m_ssp_regs.rx_fifo_write_idx = 0; m_ssp_regs.rx_fifo_count = 0; m_ssp_regs.rx_timer->adjust(attotime::never); - memset(m_ssp_regs.tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.tx_fifo)); + std::fill(std::begin(m_ssp_regs.tx_fifo), std::end(m_ssp_regs.tx_fifo), 0); m_ssp_regs.tx_fifo_read_idx = 0; m_ssp_regs.tx_fifo_write_idx = 0; m_ssp_regs.tx_fifo_count = 0; m_ssp_regs.tx_timer->adjust(attotime::never); - memset(&m_track_regs, 0, sizeof(ps2_regs)); - memset(&m_mouse_regs, 0, sizeof(ps2_regs)); + for (ps2_regs ®s : { std::ref(m_track_regs), std::ref(m_mouse_regs) }) + { + regs.kbdcr = 0; + regs.kbdstat = 0; + regs.kbddata_tx = 0; + regs.kbddata_rx = 0; + regs.kbdclkdiv = 0; + regs.kbdprecnt = 0; + regs.kbditr = 0; + } - memset(m_gpio_regs.ddr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.ddr)); - memset(m_gpio_regs.level, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.level)); - memset(m_gpio_regs.sdr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.sdr)); - memset(m_gpio_regs.ssr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.ssr)); - memset(m_gpio_regs.out_latch, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.out_latch)); - memset(m_gpio_regs.in_latch, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.in_latch)); + std::fill(std::begin(m_gpio_regs.ddr), std::end(m_gpio_regs.ddr), 0); + std::fill(std::begin(m_gpio_regs.level), std::end(m_gpio_regs.level), 0); + std::fill(std::begin(m_gpio_regs.sdr), std::end(m_gpio_regs.sdr), 0); + std::fill(std::begin(m_gpio_regs.ssr), std::end(m_gpio_regs.ssr), 0); + std::fill(std::begin(m_gpio_regs.out_latch), std::end(m_gpio_regs.out_latch), 0); + std::fill(std::begin(m_gpio_regs.in_latch), std::end(m_gpio_regs.in_latch), 0); - memset(m_intc_regs.inttest, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.inttest)); - memset(m_intc_regs.inten, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.inten)); - memset(m_intc_regs.intpol, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intpol)); + std::fill(std::begin(m_intc_regs.inttest), std::end(m_intc_regs.inttest), 0); + std::fill(std::begin(m_intc_regs.inten), std::end(m_intc_regs.inten), 0); + std::fill(std::begin(m_intc_regs.intpol), std::end(m_intc_regs.intpol), 0); m_intc_regs.inttstsel = 0; - memset(m_intc_regs.intstat, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intstat)); - memset(m_intc_regs.wake_en, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.wake_en)); - memset(m_intc_regs.wake_pol, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.wake_pol)); - memset(m_intc_regs.intraw, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intraw)); + std::fill(std::begin(m_intc_regs.intstat), std::end(m_intc_regs.intstat), 0); + std::fill(std::begin(m_intc_regs.wake_en), std::end(m_intc_regs.wake_en), 0); + std::fill(std::begin(m_intc_regs.wake_pol), std::end(m_intc_regs.wake_pol), 0); + std::fill(std::begin(m_intc_regs.intraw), std::end(m_intc_regs.intraw), 0); m_card_regs.pccr = 0; m_card_regs.pcssr = 0; diff --git a/src/devices/machine/scc2698b.cpp b/src/devices/machine/scc2698b.cpp index 9dcc280fb20..0898e52393d 100644 --- a/src/devices/machine/scc2698b.cpp +++ b/src/devices/machine/scc2698b.cpp @@ -404,7 +404,7 @@ void scc2698b_device::device_reset() void scc2698b_device::write_line_tx(int port, int value) { - if ((0 <= port) && (ARRAY_LENGTH(write_tx) > port)) + if ((0 <= port) && (std::size(write_tx) > port)) write_tx[port](value); else logerror("Unsupported port %d in write_line_tx\n", port); @@ -412,7 +412,7 @@ void scc2698b_device::write_line_tx(int port, int value) void scc2698b_device::write_line_mpp1(int port, int value) { - if ((0 <= port) && (ARRAY_LENGTH(write_mpp1) > port)) + if ((0 <= port) && (std::size(write_mpp1) > port)) write_mpp1[port](value); else logerror("Unsupported port %d in write_line_mpp1\n", port); @@ -420,7 +420,7 @@ void scc2698b_device::write_line_mpp1(int port, int value) void scc2698b_device::write_line_mpp2(int port, int value) { - if ((0 <= port) && (ARRAY_LENGTH(write_mpp2) > port)) + if ((0 <= port) && (std::size(write_mpp2) > port)) write_mpp2[port](value); else logerror("Unsupported port %d in write_line_mpp2\n", port); @@ -428,7 +428,7 @@ void scc2698b_device::write_line_mpp2(int port, int value) void scc2698b_device::write_line_mpo(int port, int value) { - if ((0 <= port) && (ARRAY_LENGTH(write_mpo) > port)) + if ((0 <= port) && (std::size(write_mpo) > port)) write_mpo[port](value); else logerror("Unsupported port %d in write_line_mpo\n", port); diff --git a/src/devices/machine/sensorboard.cpp b/src/devices/machine/sensorboard.cpp index 0a5767aef3e..72b7b57f6d5 100644 --- a/src/devices/machine/sensorboard.cpp +++ b/src/devices/machine/sensorboard.cpp @@ -127,7 +127,7 @@ void sensorboard_device::device_start() m_upointer = 0; m_ufirst = 0; m_ulast = 0; - m_usize = ARRAY_LENGTH(m_history); + m_usize = std::size(m_history); // register for savestates save_item(NAME(m_nosensors)); diff --git a/src/devices/machine/spg2xx_io.cpp b/src/devices/machine/spg2xx_io.cpp index 14cf55d7929..c84295c65a1 100644 --- a/src/devices/machine/spg2xx_io.cpp +++ b/src/devices/machine/spg2xx_io.cpp @@ -179,7 +179,7 @@ void spg2xx_io_device::device_start() void spg2xx_io_device::device_reset() { - memset(m_io_regs, 0, 0x100 * sizeof(uint16_t)); + std::fill_n(&m_io_regs[0], 0x100, 0); m_timer_a_preload = 0; m_timer_b_preload = 0; @@ -190,7 +190,7 @@ void spg2xx_io_device::device_reset() m_io_regs[REG_PRNG1] = 0x1418; m_io_regs[REG_PRNG2] = 0x1658; - memset(m_uart_rx_fifo, 0, ARRAY_LENGTH(m_uart_rx_fifo)); + std::fill(std::begin(m_uart_rx_fifo), std::end(m_uart_rx_fifo), 0); m_uart_rx_fifo_start = 0; m_uart_rx_fifo_end = 0; m_uart_rx_fifo_count = 0; @@ -198,14 +198,14 @@ void spg2xx_io_device::device_reset() m_uart_tx_irq = false; m_uart_rx_irq = false; - memset(m_spi_tx_fifo, 0, ARRAY_LENGTH(m_spi_tx_fifo)); + std::fill(std::begin(m_spi_tx_fifo), std::end(m_spi_tx_fifo), 0); m_spi_tx_fifo_start = 0; m_spi_tx_fifo_end = 0; m_spi_tx_fifo_count = 0; m_spi_tx_buf = 0x00; m_spi_tx_bit = 8; - memset(m_spi_rx_fifo, 0, ARRAY_LENGTH(m_spi_rx_fifo)); + std::fill(std::begin(m_spi_rx_fifo), std::end(m_spi_rx_fifo), 0); m_spi_rx_fifo_start = 0; m_spi_rx_fifo_end = 0; m_spi_rx_fifo_count = 0; @@ -214,7 +214,7 @@ void spg2xx_io_device::device_reset() m_spi_rate = 0; - memset(m_extint, 0, sizeof(bool) * 2); + std::fill_n(&m_extint[0], 2, false); m_4khz_timer->adjust(attotime::from_hz(4096), 0, attotime::from_hz(4096)); @@ -252,7 +252,7 @@ void spg2xx_io_device::uart_rx(uint8_t data) if (BIT(m_io_regs[REG_UART_CTRL], 6)) { m_uart_rx_fifo[m_uart_rx_fifo_end] = data; - m_uart_rx_fifo_end = (m_uart_rx_fifo_end + 1) % ARRAY_LENGTH(m_uart_rx_fifo); + m_uart_rx_fifo_end = (m_uart_rx_fifo_end + 1) % std::size(m_uart_rx_fifo); m_uart_rx_fifo_count++; if (m_uart_rx_timer->remaining() == attotime::never) m_uart_rx_timer->adjust(attotime::from_ticks(BIT(m_io_regs[REG_UART_CTRL], 5) ? 11 : 10, m_uart_baud_rate)); @@ -535,7 +535,7 @@ uint16_t spg2xx_io_device::io_extended_r(offs_t offset) LOGMASKED(LOG_UART, "%s: Remaining count %d, value %02x\n", machine().describe_context(), m_uart_rx_fifo_count, m_uart_rx_fifo[m_uart_rx_fifo_start]); m_io_regs[REG_UART_RXBUF] = m_uart_rx_fifo[m_uart_rx_fifo_start]; val = m_io_regs[REG_UART_RXBUF]; - m_uart_rx_fifo_start = (m_uart_rx_fifo_start + 1) % ARRAY_LENGTH(m_uart_rx_fifo); + m_uart_rx_fifo_start = (m_uart_rx_fifo_start + 1) % std::size(m_uart_rx_fifo); m_uart_rx_fifo_count--; if (m_uart_rx_fifo_count == 0) diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp index ecdfb7850b9..c7c5d5a7f00 100644 --- a/src/devices/machine/wd_fdc.cpp +++ b/src/devices/machine/wd_fdc.cpp @@ -2540,7 +2540,7 @@ bool wd_fdc_digital_device_base::digital_pll_t::write_next_bit(bool bit, attotim uint16_t pre_counter = counter; counter += increment; if(bit && !(pre_counter & 0x400) && (counter & 0x400)) - if(write_position < ARRAY_LENGTH(write_buffer)) + if(write_position < std::size(write_buffer)) write_buffer[write_position++] = etime; slot++; tm = etime; diff --git a/src/devices/machine/z80sio.cpp b/src/devices/machine/z80sio.cpp index 8f5e9a145e0..5095dd4cb9b 100644 --- a/src/devices/machine/z80sio.cpp +++ b/src/devices/machine/z80sio.cpp @@ -506,7 +506,7 @@ int z80sio_device::z80daisy_irq_state() // loop over all interrupt sources int state = 0; - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { // if we're servicing a request, don't indicate more interrupts if (m_int_state[prio[i]] & Z80_DAISY_IEO) @@ -531,7 +531,7 @@ int z80sio_device::z80daisy_irq_ack() // loop over all interrupt sources int const *const prio = interrupt_priorities(); - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { // find the first channel with an interrupt requested if (m_int_state[prio[i]] & Z80_DAISY_INT) @@ -597,7 +597,7 @@ int i8274_device::z80daisy_irq_ack() { // loop over all interrupt sources int const *const prio = interrupt_priorities(); - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { // find the first channel with an interrupt requested if (m_int_state[prio[i]] & Z80_DAISY_INT) @@ -711,7 +711,7 @@ void z80sio_device::return_from_interrupt() { // loop over all interrupt sources int const *const prio = interrupt_priorities(); - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { // find the first channel with an interrupt requested if (m_int_state[prio[i]] & (Z80_DAISY_IEO)) @@ -741,7 +741,7 @@ uint8_t z80sio_device::read_vector() // modify vector for highest-priority pending interrupt int const *const prio = interrupt_priorities(); vec &= 0xf1U; - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { if (m_int_state[prio[i]] & Z80_DAISY_INT) { @@ -797,7 +797,7 @@ uint8_t i8274_device::read_vector() // modify vector for highest-priority pending interrupt int const *const prio = interrupt_priorities(); - for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) + for (int i = 0; std::size(m_int_state) > i; ++i) { if (m_int_state[prio[i]] & Z80_DAISY_INT) { diff --git a/src/devices/machine/z8536.cpp b/src/devices/machine/z8536.cpp index 56f4ed60a10..5074d82ccf7 100644 --- a/src/devices/machine/z8536.cpp +++ b/src/devices/machine/z8536.cpp @@ -748,7 +748,7 @@ void cio_base_device::external_port_w(int port, int bit, int state) case PORT_A: case PORT_B: { - assert((PORT_A_DATA_DIRECTION + (port << 3)) >= 0 && (PORT_A_DATA_DIRECTION + (port << 3)) < ARRAY_LENGTH(m_register)); + assert((PORT_A_DATA_DIRECTION + (port << 3)) >= 0 && (PORT_A_DATA_DIRECTION + (port << 3)) < std::size(m_register)); u8 ddr = m_register[PORT_A_DATA_DIRECTION + (port << 3)]; if (!BIT(ddr, bit)) return; diff --git a/src/devices/sound/nile.cpp b/src/devices/sound/nile.cpp index 345c88f2bf0..ef05b670e57 100644 --- a/src/devices/sound/nile.cpp +++ b/src/devices/sound/nile.cpp @@ -94,7 +94,7 @@ void nile_device::sound_stream_update(sound_stream &stream, std::vector=num_linear_rates) return 0.0f; return linear_rate[n]*freq_multiplier; } @@ -630,7 +630,7 @@ float spu_device::get_linear_rate_neg_phase(const int n) float spu_device::get_pos_exp_rate(const int n) { - static constexpr int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate); + static constexpr int num_pos_exp_rates=std::size(pos_exp_rate); if (n>=num_pos_exp_rates) return 0.0f; return pos_exp_rate[n]*freq_multiplier; } @@ -643,7 +643,7 @@ float spu_device::get_pos_exp_rate_neg_phase(const int n) float spu_device::get_neg_exp_rate(const int n) { - static constexpr int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate); + static constexpr int num_neg_exp_rates=std::size(neg_exp_rate); if (n>=num_neg_exp_rates) return 0.0f; return -neg_exp_rate[n]*freq_multiplier; } @@ -666,14 +666,14 @@ float spu_device::get_sustain_level(const int n) float spu_device::get_linear_release_rate(const int n) { - static constexpr int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate); + static constexpr int num_linear_release_rates=std::size(linear_release_rate); if (n>=num_linear_release_rates) return 0.0f; return linear_release_rate[n]*freq_multiplier; } float spu_device::get_exp_release_rate(const int n) { - static constexpr int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate); + static constexpr int num_exp_release_rates=std::size(exp_release_rate); if (n>=num_exp_release_rates) return 0.0f; return exp_release_rate[n]*freq_multiplier; } diff --git a/src/devices/sound/ym2413.cpp b/src/devices/sound/ym2413.cpp index 28cf77c097b..11f4ea2e9de 100644 --- a/src/devices/sound/ym2413.cpp +++ b/src/devices/sound/ym2413.cpp @@ -1605,52 +1605,47 @@ void ym2413_device::device_start() save_item(NAME(inst_tab)); save_item(NAME(address)); - for (int chnum = 0; chnum < ARRAY_LENGTH(P_CH); chnum++) - { - OPLL_CH *ch = &P_CH[chnum]; - - save_item(NAME(ch->block_fnum), chnum); - save_item(NAME(ch->fc), chnum); - save_item(NAME(ch->ksl_base), chnum); - save_item(NAME(ch->kcode), chnum); - save_item(NAME(ch->sus), chnum); + save_item(STRUCT_MEMBER(P_CH, block_fnum)); + save_item(STRUCT_MEMBER(P_CH, fc)); + save_item(STRUCT_MEMBER(P_CH, ksl_base)); + save_item(STRUCT_MEMBER(P_CH, kcode)); + save_item(STRUCT_MEMBER(P_CH, sus)); - for (int slotnum = 0; slotnum < ARRAY_LENGTH(ch->SLOT); slotnum++) - { - OPLL_SLOT *sl = &ch->SLOT[slotnum]; - - save_item(NAME(sl->ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->KSR), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->ksl), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->ksr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->mul), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->phase), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->freq), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->fb_shift), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->op1_out), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_type), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->state), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->TL), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->TLL), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->volume), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->sl), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sh_dp), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sel_dp), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sh_ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sel_ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sh_dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sel_dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sh_rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sel_rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sh_rs), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->eg_sel_rs), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->key), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->AMmask), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->vib), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - save_item(NAME(sl->wavetable), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); - } + for (int chnum = 0; chnum < std::size(P_CH); chnum++) + { + OPLL_CH &ch = P_CH[chnum]; + + save_item(STRUCT_MEMBER(ch.SLOT, ar), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, dr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, rr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, KSR), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, ksl), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, ksr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, mul), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, phase), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, freq), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, fb_shift), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, op1_out), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_type), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, state), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, TL), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, TLL), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, volume), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, sl), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_dp), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_dp), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_ar), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_ar), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_dr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_dr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_rr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_rr), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_rs), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_rs), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, key), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, AMmask), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, vib), chnum); + save_item(STRUCT_MEMBER(ch.SLOT, wavetable), chnum); } } diff --git a/src/devices/video/gb_lcd.cpp b/src/devices/video/gb_lcd.cpp index 06cceeca7b0..99dfc80282d 100644 --- a/src/devices/video/gb_lcd.cpp +++ b/src/devices/video/gb_lcd.cpp @@ -429,15 +429,12 @@ void dmg_ppu_device::common_start() save_item(NAME(m_next_state)); save_item(NAME(m_old_curline)); - for (int i = 0; i < ARRAY_LENGTH(m_layer); i++) - { - save_item(NAME(m_layer[i].enabled), i); - save_item(NAME(m_layer[i].xindex), i); - save_item(NAME(m_layer[i].xshift), i); - save_item(NAME(m_layer[i].xstart), i); - save_item(NAME(m_layer[i].xend), i); - save_item(NAME(m_layer[i].bgline), i); - } + save_item(STRUCT_MEMBER(m_layer, enabled)); + save_item(STRUCT_MEMBER(m_layer, xindex)); + save_item(STRUCT_MEMBER(m_layer, xshift)); + save_item(STRUCT_MEMBER(m_layer, xstart)); + save_item(STRUCT_MEMBER(m_layer, xend)); + save_item(STRUCT_MEMBER(m_layer, bgline)); save_item(NAME(m_line.tile_cycle)); save_item(NAME(m_line.tile_count)); @@ -465,16 +462,13 @@ void dmg_ppu_device::common_start() save_item(NAME(m_line.window_enable)); save_item(NAME(m_line.window_enable_index)); save_item(NAME(m_line.window_should_trigger)); - for (int i = 0; i < ARRAY_LENGTH(m_line.sprite); i++) - { - save_item(NAME(m_line.sprite[i].enabled), i); - save_item(NAME(m_line.sprite[i].x), i); - save_item(NAME(m_line.sprite[i].y), i); - save_item(NAME(m_line.sprite[i].pattern), i); - save_item(NAME(m_line.sprite[i].flags), i); - save_item(NAME(m_line.sprite[i].tile_plane_0), i); - save_item(NAME(m_line.sprite[i].tile_plane_1), i); - } + save_item(STRUCT_MEMBER(m_line.sprite, enabled)); + save_item(STRUCT_MEMBER(m_line.sprite, x)); + save_item(STRUCT_MEMBER(m_line.sprite, y)); + save_item(STRUCT_MEMBER(m_line.sprite, pattern)); + save_item(STRUCT_MEMBER(m_line.sprite, flags)); + save_item(STRUCT_MEMBER(m_line.sprite, tile_plane_0)); + save_item(STRUCT_MEMBER(m_line.sprite, tile_plane_1)); save_item(NAME(m_frame_window_active)); } @@ -1034,14 +1028,14 @@ void dmg_ppu_device::check_start_of_window() } // 4 makes most tests pass - m_line.window_start_y[(m_line.window_start_y_index + 4) % ARRAY_LENGTH(m_line.window_start_y)] = WNDPOSY; + m_line.window_start_y[(m_line.window_start_y_index + 4) % std::size(m_line.window_start_y)] = WNDPOSY; // 2-4 makes most tests pass - m_line.window_start_x[(m_line.window_start_y_index + 4) % ARRAY_LENGTH(m_line.window_start_x)] = WNDPOSX; - m_line.window_start_y_index = (m_line.window_start_y_index + 1) % ARRAY_LENGTH(m_line.window_start_y); + m_line.window_start_x[(m_line.window_start_y_index + 4) % std::size(m_line.window_start_x)] = WNDPOSX; + m_line.window_start_y_index = (m_line.window_start_y_index + 1) % std::size(m_line.window_start_y); // 3 makes most tests pass - m_line.window_enable[(m_line.window_enable_index + 3) % ARRAY_LENGTH(m_line.window_enable)] = LCDCONT; - m_line.window_enable_index = (m_line.window_enable_index + 1) % ARRAY_LENGTH(m_line.window_enable); + m_line.window_enable[(m_line.window_enable_index + 3) % std::size(m_line.window_enable)] = LCDCONT; + m_line.window_enable_index = (m_line.window_enable_index + 1) % std::size(m_line.window_enable); if (!m_line.starting && m_line.tile_cycle < 8) { @@ -1545,7 +1539,7 @@ void sgb_ppu_device::update_scanline(uint32_t cycles_to_go) while (i > 0) { /* Figure out which palette we're using */ - assert(((m_end_x - i) >> 3) >= 0 && ((m_end_x - i) >> 3) < ARRAY_LENGTH(m_sgb_pal_map)); + assert(((m_end_x - i) >> 3) >= 0 && ((m_end_x - i) >> 3) < std::size(m_sgb_pal_map)); sgb_palette = m_sgb_pal_map[(m_end_x - i) >> 3][m_current_line >> 3] << 2; while ((m_layer[l].xshift < 8) && i) @@ -2209,13 +2203,13 @@ void dmg_ppu_device::update_state() break; case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */ - for (int i = 0; i < ARRAY_LENGTH(m_line.window_start_y); i++) + for (int i = 0; i < std::size(m_line.window_start_y); i++) { m_line.window_start_y[i] = WNDPOSY; m_line.window_start_x[i] = WNDPOSX; } m_line.window_start_y_index = 0; - for (int i = 0; i < ARRAY_LENGTH(m_line.window_enable); i++) + for (int i = 0; i < std::size(m_line.window_enable); i++) { m_line.window_enable[i] = LCDCONT; } @@ -2640,13 +2634,13 @@ void cgb_ppu_device::update_state() break; case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */ - for (int i = 0; i < ARRAY_LENGTH(m_line.window_start_y); i++) + for (int i = 0; i < std::size(m_line.window_start_y); i++) { m_line.window_start_y[i] = WNDPOSY; m_line.window_start_x[i] = WNDPOSX; } m_line.window_start_y_index = 0; - for (int i = 0; i < ARRAY_LENGTH(m_line.window_enable); i++) + for (int i = 0; i < std::size(m_line.window_enable); i++) { m_line.window_enable[i] = LCDCONT; } diff --git a/src/devices/video/gba_lcd.cpp b/src/devices/video/gba_lcd.cpp index e3e46b5ceae..f5df7fa01e6 100644 --- a/src/devices/video/gba_lcd.cpp +++ b/src/devices/video/gba_lcd.cpp @@ -1577,7 +1577,7 @@ uint32_t gba_lcd_device::video_r(offs_t offset, uint32_t mem_mask) break; } - if (offset >= ARRAY_LENGTH(reg_names) / 2) + if (offset >= std::size(reg_names) / 2) throw emu_fatalerror("gba_lcd_device::video_r: Not enough register names in gba_lcd_device"); if (ACCESSING_BITS_0_15) @@ -1593,7 +1593,7 @@ void gba_lcd_device::video_w(offs_t offset, uint32_t data, uint32_t mem_mask) { COMBINE_DATA(&m_regs[offset]); - if (offset >= ARRAY_LENGTH(reg_names) / 2) + if (offset >= std::size(reg_names) / 2) throw emu_fatalerror("gba_lcd_device::video_w: Not enough register names in gba_lcd_device"); if (ACCESSING_BITS_0_15) diff --git a/src/devices/video/i8244.cpp b/src/devices/video/i8244.cpp index 366a7ab5618..48fd1180a28 100644 --- a/src/devices/video/i8244.cpp +++ b/src/devices/video/i8244.cpp @@ -591,7 +591,7 @@ void i8244_device::char_pixel(u8 index, int x, int y, u8 pixel, u16 color, bitma void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect) { // quad objects - for (int i = ARRAY_LENGTH(m_vdc.s.quad) - 1; i >= 0; i--) + for (int i = std::size(m_vdc.s.quad) - 1; i >= 0; i--) { int y = m_vdc.s.quad[i].single[0].y; if (is_ntsc() && y < 0xe) @@ -605,7 +605,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl { int x = (m_vdc.s.quad[i].single[0].x + 5) * 2; - for (int j = 0; j < ARRAY_LENGTH(m_vdc.s.quad[0].single); j++, x += 16) + for (int j = 0; j < std::size(m_vdc.s.quad[0].single); j++, x += 16) { int offset = (m_vdc.s.quad[i].single[j].ptr | ((m_vdc.s.quad[i].single[j].color & 0x01) << 8)) + (y >> 1) + ((scanline - y) >> 1); @@ -617,7 +617,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl } // regular foreground objects - for (int i = ARRAY_LENGTH(m_vdc.s.foreground) - 1; i >= 0; i--) + for (int i = std::size(m_vdc.s.foreground) - 1; i >= 0; i--) { int y = m_vdc.s.foreground[i].y; if (is_ntsc() && y < 0xe) @@ -642,7 +642,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl void i8244_device::draw_minor(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect) { // minor system (sprites) - for (int i = ARRAY_LENGTH(m_vdc.s.sprites) - 1; i >= 0; i--) + for (int i = std::size(m_vdc.s.sprites) - 1; i >= 0; i--) { int y = m_vdc.s.sprites[i].y; int height = 8; diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp index 8834f2a0151..5858a7eb0f4 100644 --- a/src/devices/video/i82730.cpp +++ b/src/devices/video/i82730.cpp @@ -256,7 +256,7 @@ void i82730_device::execute_command() uint8_t command = read_byte(m_cbp + 1); uint16_t tmp; - if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(s_command_names)) + if (VERBOSE_COMMANDS && command < std::size(s_command_names)) logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), s_command_names[command], m_cbp); tmp = read_word(m_cbp + 2); diff --git a/src/devices/video/jangou_blitter.cpp b/src/devices/video/jangou_blitter.cpp index 326bf98fc6a..b8718b2ba20 100644 --- a/src/devices/video/jangou_blitter.cpp +++ b/src/devices/video/jangou_blitter.cpp @@ -92,7 +92,7 @@ void jangou_blitter_device::device_start() void jangou_blitter_device::device_reset() { - memset(m_pen_data, 0, ARRAY_LENGTH(m_pen_data)); + std::fill(std::begin(m_pen_data), std::end(m_pen_data), 0); m_bltflip = false; m_src_addr = 0; } diff --git a/src/devices/video/mc6847.cpp b/src/devices/video/mc6847.cpp index e60da56ab2b..56f14f3e307 100644 --- a/src/devices/video/mc6847.cpp +++ b/src/devices/video/mc6847.cpp @@ -555,7 +555,7 @@ mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_typ { m_palette = s_palette; - for (int i = 0; i < ARRAY_LENGTH(s_palette); i++) + for (int i = 0; i < std::size(s_palette); i++) { m_bw_palette[i] = black_and_white(s_palette[i]); } @@ -693,7 +693,7 @@ void mc6847_base_device::record_scanline_res(int scanline, int32_t start_pos, in { // update values //assert(current_sample_count >= 0); - assert(current_sample_count < ARRAY_LENGTH(m_data[scanline].m_mode)); + assert(current_sample_count < std::size(m_data[scanline].m_mode)); update_value(&m_data[scanline].m_mode[current_sample_count], simplify_mode(data, m_mode)); update_value(&m_data[scanline].m_data[current_sample_count], data); current_sample_count++; @@ -948,7 +948,7 @@ mc6847_friend_device::character_map::character_map(const uint8_t *text_fontdata, m_stripes[i] = ~(i / 12); // loop through all modes - for (mode = 0; mode < ARRAY_LENGTH(m_entries); mode++) + for (mode = 0; mode < std::size(m_entries); mode++) { const uint8_t *fontdata; uint8_t character_mask; diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h index 78fe0eac5f3..51ecde98334 100644 --- a/src/devices/video/mc6847.h +++ b/src/devices/video/mc6847.h @@ -107,7 +107,7 @@ protected: uint8_t character = data[i]; // based on the mode, determine which entry to use - const entry *e = &m_entries[mode % ARRAY_LENGTH(m_entries)]; + const entry *e = &m_entries[mode % std::size(m_entries)]; // identify the character in the font data const uint8_t *font_character = e->m_fontdata + (character & e->m_character_mask) * 12; diff --git a/src/devices/video/nt7534.cpp b/src/devices/video/nt7534.cpp index 15fd1fb41e5..d972a4b99dd 100644 --- a/src/devices/video/nt7534.cpp +++ b/src/devices/video/nt7534.cpp @@ -331,7 +331,7 @@ void nt7534_device::data_write(uint8_t data) LOG("RAM write %x %x '%c'\n", m_page*132 + m_column, m_dr, isprint(m_dr) ? m_dr : '.'); - if (m_page*132 + m_column < ARRAY_LENGTH(m_ddram)) + if (m_page*132 + m_column < std::size(m_ddram)) m_ddram[m_page*132 + m_column] = m_dr; if (m_column < 131) @@ -342,7 +342,7 @@ void nt7534_device::data_write(uint8_t data) uint8_t nt7534_device::data_read() { - if (m_page*132 + m_column >= ARRAY_LENGTH(m_ddram)) + if (m_page*132 + m_column >= std::size(m_ddram)) return 0; uint8_t data = m_ddram[m_page*132 + m_column]; diff --git a/src/devices/video/poly.h b/src/devices/video/poly.h index 113e1c72589..25b50675506 100644 --- a/src/devices/video/poly.h +++ b/src/devices/video/poly.h @@ -341,7 +341,7 @@ poly_manager::~poly_manager() { // accumulate stats over the entire collection int conflicts = 0, resolved = 0; - for (int i = 0; i < ARRAY_LENGTH(m_conflicts); i++) + for (int i = 0; i < std::size(m_conflicts); i++) { conflicts += m_conflicts[i]; resolved += m_resolved[i]; diff --git a/src/devices/video/polylgcy.cpp b/src/devices/video/polylgcy.cpp index bad622a92c1..e605220ffbf 100644 --- a/src/devices/video/polylgcy.cpp +++ b/src/devices/video/polylgcy.cpp @@ -360,8 +360,8 @@ void poly_free(legacy_poly_manager *poly) { #if KEEP_STATISTICS { - int i, conflicts = 0, resolved = 0; - for (i = 0; i < ARRAY_LENGTH(poly->conflicts); i++) + int conflicts = 0, resolved = 0; + for (int i = 0; i < std::size(poly->conflicts); i++) { conflicts += poly->conflicts[i]; resolved += poly->resolved[i]; diff --git a/src/devices/video/pwm.cpp b/src/devices/video/pwm.cpp index 453216ded7d..b5a4827e5f0 100644 --- a/src/devices/video/pwm.cpp +++ b/src/devices/video/pwm.cpp @@ -84,9 +84,10 @@ void pwm_display_device::device_start() } // initialize - std::fill_n(m_rowdata, ARRAY_LENGTH(m_rowdata), 0); - std::fill_n(m_rowdata_prev, ARRAY_LENGTH(m_rowdata_prev), 0); - std::fill_n(*m_bri, ARRAY_LENGTH(m_bri) * ARRAY_LENGTH(m_bri[0]), 0.0); + std::fill(std::begin(m_rowdata), std::end(m_rowdata), 0); + std::fill(std::begin(m_rowdata_prev), std::end(m_rowdata_prev), 0); + for (auto &bri : m_bri) + std::fill(std::begin(bri), std::end(bri), 0.0); m_frame_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pwm_display_device::frame_tick),this)); m_update_time = machine().time(); @@ -215,7 +216,7 @@ void pwm_display_device::update() void pwm_display_device::schedule_frame() { - std::fill_n(*m_acc, m_height * ARRAY_LENGTH(m_acc[0]), attotime::zero); + std::fill_n(*m_acc, m_height * std::size(m_acc[0]), attotime::zero); m_framerate = m_framerate_set; m_frame_timer->adjust(m_framerate); diff --git a/src/devices/video/pwm.h b/src/devices/video/pwm.h index 91a04b06620..91d70521da9 100644 --- a/src/devices/video/pwm.h +++ b/src/devices/video/pwm.h @@ -21,7 +21,7 @@ public: pwm_display_device &set_refresh(attotime duration) { m_framerate_set = duration; return *this; } // time between each outputs refresh pwm_display_device &set_interpolation(double factor) { m_interpolation = factor; return *this; } // frame interpolation (0.0 - 1.0) pwm_display_device &set_segmask(u64 digits, u64 mask); // mask for multi-state outputs, eg. 7seg led - pwm_display_device &reset_segmask() { std::fill_n(m_segmask, ARRAY_LENGTH(m_segmask), 0); return *this; } + pwm_display_device &reset_segmask() { std::fill(std::begin(m_segmask), std::end(m_segmask), 0); return *this; } pwm_display_device &set_bri_levels(double l0, double l1 = 1.0, double l2 = 1.0, double l3 = 1.0); // brightness threshold per level (0.0 - 1.0) pwm_display_device &set_bri_minimum(u8 i) { m_level_min = i; return *this; } // minimum level index for element to be considered "on" pwm_display_device &set_bri_maximum(double b) { m_level_max = b; return *this; } // maximum brightness level, 0.0 for auto @@ -31,7 +31,7 @@ public: auto output_a() { return m_output_a_cb.bind(); } auto output_digit() { return m_output_digit_cb.bind(); } - void reset_bri_levels() { std::fill_n(m_levels, ARRAY_LENGTH(m_levels), 1.0); } + void reset_bri_levels() { std::fill(std::begin(m_levels), std::end(m_levels), 1.0); } void set_bri_one(u8 i, double level) { m_levels[i] = level; } void segmask_one(u8 y, u64 mask) { m_segmask[y] = mask; } diff --git a/src/devices/video/snes_ppu.cpp b/src/devices/video/snes_ppu.cpp index 80187efd994..544becb412e 100644 --- a/src/devices/video/snes_ppu.cpp +++ b/src/devices/video/snes_ppu.cpp @@ -251,15 +251,12 @@ void snes_ppu_device::device_start() } } - for (int i = 0; i < ARRAY_LENGTH(m_scanlines); i++) - { - save_item(NAME(m_scanlines[i].enable), i); - save_item(NAME(m_scanlines[i].clip), i); - save_item(NAME(m_scanlines[i].buffer), i); - save_item(NAME(m_scanlines[i].priority), i); - save_item(NAME(m_scanlines[i].layer), i); - save_item(NAME(m_scanlines[i].blend_exception), i); - } + save_item(STRUCT_MEMBER(m_scanlines, enable)); + save_item(STRUCT_MEMBER(m_scanlines, clip)); + save_item(STRUCT_MEMBER(m_scanlines, buffer)); + save_item(STRUCT_MEMBER(m_scanlines, priority)); + save_item(STRUCT_MEMBER(m_scanlines, layer)); + save_item(STRUCT_MEMBER(m_scanlines, blend_exception)); save_item(STRUCT_MEMBER(m_layer, window1_enabled)); save_item(STRUCT_MEMBER(m_layer, window1_invert)); @@ -283,8 +280,7 @@ void snes_ppu_device::device_start() save_item(STRUCT_MEMBER(m_layer, mosaic_counter)); save_item(STRUCT_MEMBER(m_layer, mosaic_offset)); - for (int i = 0; i < ARRAY_LENGTH(m_clipmasks); i++) - save_item(NAME(m_clipmasks[i]), i); + save_item(NAME(m_clipmasks)); save_item(NAME(m_oam.address)); save_item(NAME(m_oam.base_address)); diff --git a/src/devices/video/stvvdp2.cpp b/src/devices/video/stvvdp2.cpp index f79f0aec207..2d9349aa5f5 100644 --- a/src/devices/video/stvvdp2.cpp +++ b/src/devices/video/stvvdp2.cpp @@ -6198,7 +6198,7 @@ int saturn_state::get_vcounter( void ) return (vcount & ~1) | (m_screen->frame_number() & 1); /* docs says << 1, but according to HW tests it's a typo. */ - assert((vcount & 0x1ff) < ARRAY_LENGTH(true_vcount)); + assert((vcount & 0x1ff) < std::size(true_vcount)); return (true_vcount[vcount & 0x1ff][STV_VDP2_VRES]); // Non-interlace } diff --git a/src/devices/video/tms34061.cpp b/src/devices/video/tms34061.cpp index 8204facf1a1..d324fe91200 100644 --- a/src/devices/video/tms34061.cpp +++ b/src/devices/video/tms34061.cpp @@ -182,7 +182,7 @@ void tms34061_device::register_w(offs_t offset, u8 data) screen().update_partial(screen().vpos()); /* store the hi/lo half */ - if (regnum < ARRAY_LENGTH(m_regs)) + if (regnum < std::size(m_regs)) { if (offset & 0x02) m_regs[regnum] = (m_regs[regnum] & 0x00ff) | (data << 8); @@ -248,7 +248,7 @@ u8 tms34061_device::register_r(offs_t offset) u16 result; /* extract the correct portion of the register */ - if (regnum < ARRAY_LENGTH(m_regs)) + if (regnum < std::size(m_regs)) result = m_regs[regnum]; else result = 0xffff; diff --git a/src/devices/video/vic4567.cpp b/src/devices/video/vic4567.cpp index 37bcafe3a34..99f2e5af476 100644 --- a/src/devices/video/vic4567.cpp +++ b/src/devices/video/vic4567.cpp @@ -317,7 +317,7 @@ void vic3_device::device_start() void vic3_device::device_reset() { - memset(m_reg, 0, ARRAY_LENGTH(m_reg)); + std::fill(std::begin(m_reg), std::end(m_reg), 0); m_on = 1; @@ -355,8 +355,8 @@ void vic3_device::device_reset() m_lastline = 0; m_rasterline = 0; - memset(m_shift, 0, ARRAY_LENGTH(m_shift)); - memset(m_multi_collision, 0, ARRAY_LENGTH(m_multi_collision)); + std::fill(std::begin(m_shift), std::end(m_shift), 0); + std::fill(std::begin(m_multi_collision), std::end(m_multi_collision), 0); for (int i = 0; i < 256; i++) { diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp index ff34c3b2d18..de10bb9a471 100644 --- a/src/devices/video/voodoo.cpp +++ b/src/devices/video/voodoo.cpp @@ -1141,11 +1141,11 @@ void voodoo_device::tmu_state::init(uint8_t vdt, tmu_shared_state &share, voodoo void voodoo_device::voodoo_postload() { fbi.clut_dirty = true; - for (int index = 0; index < ARRAY_LENGTH(tmu); index++) + for (tmu_state &tm : tmu) { - tmu[index].regdirty = true; - for (int subindex = 0; subindex < ARRAY_LENGTH(tmu[index].ncc); subindex++) - tmu[index].ncc[subindex].dirty = true; + tm.regdirty = true; + for (tmu_state::ncc_table &ncc : tm.ncc) + ncc.dirty = true; } /* recompute video memory to get the FBI FIFO base recomputed */ @@ -1160,7 +1160,7 @@ void voodoo_device::init_save_state(voodoo_device *vd) /* register states: core */ vd->save_item(NAME(vd->extra_cycles)); - vd->save_pointer(NAME(&vd->reg[0].u), ARRAY_LENGTH(vd->reg)); + vd->save_pointer(NAME(&vd->reg[0].u), std::size(vd->reg)); vd->save_item(NAME(vd->alt_regmap)); /* register states: pci */ @@ -1264,7 +1264,7 @@ void voodoo_device::init_save_state(voodoo_device *vd) vd->save_item(NAME(vd->fbi.clut)); /* register states: tmu */ - for (int index = 0; index < ARRAY_LENGTH(vd->tmu); index++) + for (int index = 0; index < std::size(vd->tmu); index++) { tmu_state *tmu = &vd->tmu[index]; if (tmu->ram == nullptr) @@ -4872,7 +4872,7 @@ u8 voodoo_banshee_device::banshee_vga_r(offs_t offset) { /* attribute access */ case 0x3c0: - if (banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(banshee.att)) + if (banshee.vga[0x3c1 & 0x1f] < std::size(banshee.att)) result = banshee.att[banshee.vga[0x3c1 & 0x1f]]; if (LOG_REGISTERS) logerror("%s:banshee_att_r(%X)\n", machine().describe_context(), banshee.vga[0x3c1 & 0x1f]); @@ -4893,7 +4893,7 @@ u8 voodoo_banshee_device::banshee_vga_r(offs_t offset) /* Sequencer access */ case 0x3c5: - if (banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(banshee.seq)) + if (banshee.vga[0x3c4 & 0x1f] < std::size(banshee.seq)) result = banshee.seq[banshee.vga[0x3c4 & 0x1f]]; if (LOG_REGISTERS) logerror("%s:banshee_seq_r(%X)\n", machine().describe_context(), banshee.vga[0x3c4 & 0x1f]); @@ -4916,7 +4916,7 @@ u8 voodoo_banshee_device::banshee_vga_r(offs_t offset) /* Graphics controller access */ case 0x3cf: - if (banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(banshee.gc)) + if (banshee.vga[0x3ce & 0x1f] < std::size(banshee.gc)) result = banshee.gc[banshee.vga[0x3ce & 0x1f]]; if (LOG_REGISTERS) logerror("%s:banshee_gc_r(%X)\n", machine().describe_context(), banshee.vga[0x3ce & 0x1f]); @@ -4924,7 +4924,7 @@ u8 voodoo_banshee_device::banshee_vga_r(offs_t offset) /* CRTC access */ case 0x3d5: - if (banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(banshee.crtc)) + if (banshee.vga[0x3d4 & 0x1f] < std::size(banshee.crtc)) result = banshee.crtc[banshee.vga[0x3d4 & 0x1f]]; if (LOG_REGISTERS) logerror("%s:banshee_crtc_r(%X)\n", machine().describe_context(), banshee.vga[0x3d4 & 0x1f]); @@ -5440,7 +5440,7 @@ void voodoo_banshee_device::banshee_vga_w(offs_t offset, u8 data) } else { - if (banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(banshee.att)) + if (banshee.vga[0x3c1 & 0x1f] < std::size(banshee.att)) banshee.att[banshee.vga[0x3c1 & 0x1f]] = data; if (LOG_REGISTERS) logerror("%s:banshee_att_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3c1 & 0x1f], data); @@ -5450,7 +5450,7 @@ void voodoo_banshee_device::banshee_vga_w(offs_t offset, u8 data) /* Sequencer access */ case 0x3c5: - if (banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(banshee.seq)) + if (banshee.vga[0x3c4 & 0x1f] < std::size(banshee.seq)) banshee.seq[banshee.vga[0x3c4 & 0x1f]] = data; if (LOG_REGISTERS) logerror("%s:banshee_seq_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3c4 & 0x1f], data); @@ -5458,7 +5458,7 @@ void voodoo_banshee_device::banshee_vga_w(offs_t offset, u8 data) /* Graphics controller access */ case 0x3cf: - if (banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(banshee.gc)) + if (banshee.vga[0x3ce & 0x1f] < std::size(banshee.gc)) banshee.gc[banshee.vga[0x3ce & 0x1f]] = data; if (LOG_REGISTERS) logerror("%s:banshee_gc_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3ce & 0x1f], data); @@ -5466,7 +5466,7 @@ void voodoo_banshee_device::banshee_vga_w(offs_t offset, u8 data) /* CRTC access */ case 0x3d5: - if (banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(banshee.crtc)) + if (banshee.vga[0x3d4 & 0x1f] < std::size(banshee.crtc)) banshee.crtc[banshee.vga[0x3d4 & 0x1f]] = data; if (LOG_REGISTERS) logerror("%s:banshee_crtc_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3d4 & 0x1f], data); @@ -5840,7 +5840,6 @@ int32_t voodoo_device::fastfill(voodoo_device *vd) uint16_t dithermatrix[16]; uint16_t *drawbuf = nullptr; uint32_t pixels = 0; - int extnum, x, y; /* if we're not clearing either, take no time */ if (!FBZMODE_RGB_BUFFER_MASK(vd->reg[fbzMode].u) && !FBZMODE_AUX_BUFFER_MASK(vd->reg[fbzMode].u)) @@ -5866,11 +5865,11 @@ int32_t voodoo_device::fastfill(voodoo_device *vd) } /* determine the dither pattern */ - for (y = 0; y < 4; y++) + for (int y = 0; y < 4; y++) { DECLARE_DITHER_POINTERS_NO_DITHER_VAR; COMPUTE_DITHER_POINTERS_NO_DITHER_VAR(vd->reg[fbzMode].u, y); - for (x = 0; x < 4; x++) + for (int x = 0; x < 4; x++) { int r = vd->reg[color1].rgb.r; int g = vd->reg[color1].rgb.g; @@ -5885,14 +5884,13 @@ int32_t voodoo_device::fastfill(voodoo_device *vd) /* fill in a block of extents */ extents[0].startx = sx; extents[0].stopx = ex; - for (extnum = 1; extnum < ARRAY_LENGTH(extents); extnum++) - extents[extnum] = extents[0]; + std::fill(std::begin(extents) + 1, std::end(extents), extents[0]); /* iterate over blocks of extents */ - for (y = sy; y < ey; y += ARRAY_LENGTH(extents)) + for (int y = sy; y < ey; y += std::size(extents)) { poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(vd->poly); - int count = (std::min)(ey - y, int(ARRAY_LENGTH(extents))); + int count = (std::min)(ey - y, int(std::size(extents))); extra->device = vd; memcpy(extra->dither, dithermatrix, sizeof(extra->dither)); diff --git a/src/emu/bookkeeping.cpp b/src/emu/bookkeeping.cpp index 439dfe74f6b..a26cf771c7e 100644 --- a/src/emu/bookkeeping.cpp +++ b/src/emu/bookkeeping.cpp @@ -157,7 +157,7 @@ void bookkeeping_manager::config_save(config_type cfg_type, util::xml::data_node void bookkeeping_manager::coin_counter_w(int num, int on) { - if (num >= ARRAY_LENGTH(m_coin_count)) + if (num >= std::size(m_coin_count)) return; /* Count it only if the data has changed from 0 to non-zero */ @@ -174,7 +174,7 @@ void bookkeeping_manager::coin_counter_w(int num, int on) int bookkeeping_manager::coin_counter_get_count(int num) { - if (num >= ARRAY_LENGTH(m_coin_count)) + if (num >= std::size(m_coin_count)) return 0; return m_coin_count[num]; } @@ -186,7 +186,7 @@ int bookkeeping_manager::coin_counter_get_count(int num) void bookkeeping_manager::coin_lockout_w(int num,int on) { - if (num >= ARRAY_LENGTH(m_coinlockedout)) + if (num >= std::size(m_coinlockedout)) return; m_coinlockedout[num] = on; } @@ -199,7 +199,7 @@ void bookkeeping_manager::coin_lockout_w(int num,int on) int bookkeeping_manager::coin_lockout_get_state(int num) { - if (num >= ARRAY_LENGTH(m_coinlockedout)) + if (num >= std::size(m_coinlockedout)) return false; return m_coinlockedout[num]; } @@ -212,6 +212,6 @@ int bookkeeping_manager::coin_lockout_get_state(int num) void bookkeeping_manager::coin_lockout_global_w(int on) { - for (int i = 0; i < ARRAY_LENGTH(m_coinlockedout); i++) + for (int i = 0; i < std::size(m_coinlockedout); i++) coin_lockout_w(i, on); } diff --git a/src/emu/crsshair.cpp b/src/emu/crsshair.cpp index 0e570bb9eaf..c8b50afbf4c 100644 --- a/src/emu/crsshair.cpp +++ b/src/emu/crsshair.cpp @@ -172,7 +172,7 @@ void render_crosshair::set_default_bitmap() void render_crosshair::create_bitmap() { - rgb_t color = m_player < ARRAY_LENGTH(crosshair_colors) ? crosshair_colors[m_player] : rgb_t::white(); + rgb_t color = m_player < std::size(crosshair_colors) ? crosshair_colors[m_player] : rgb_t::white(); // if we have a bitmap and texture for this player, kill it if (!m_bitmap) diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index 2b631e99ad3..dc5e2e6539d 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -3820,7 +3820,7 @@ void debugger_commands::execute_symlist(int ref, const std::vector if (!entry.second->is_function()) { namelist[count++] = entry.second->name(); - if (count >= ARRAY_LENGTH(namelist)) + if (count >= std::size(namelist)) break; } } diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index da0a1f72ce1..422ff9fbca4 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -1380,7 +1380,7 @@ offs_t device_debug::history_pc(int index) const index = 0; if (index <= -HISTORY_SIZE) index = -HISTORY_SIZE + 1; - return m_pc_history[(m_pc_history_index + ARRAY_LENGTH(m_pc_history) - 1 + index) % ARRAY_LENGTH(m_pc_history)]; + return m_pc_history[(m_pc_history_index + std::size(m_pc_history) - 1 + index) % std::size(m_pc_history)]; } diff --git a/src/emu/debug/debughlp.cpp b/src/emu/debug/debughlp.cpp index e3106c647e5..473de3249ce 100644 --- a/src/emu/debug/debughlp.cpp +++ b/src/emu/debug/debughlp.cpp @@ -1637,7 +1637,7 @@ const char *debug_get_help(const char *tag) size_t taglen = strlen(tag); /* find a match */ - for (i = 0; i < ARRAY_LENGTH(static_help_list); i++) + for (i = 0; i < std::size(static_help_list); i++) if (!core_strnicmp(static_help_list[i].tag, tag, taglen)) { foundcount++; @@ -1659,7 +1659,7 @@ const char *debug_get_help(const char *tag) /* otherwise, indicate ambiguous help */ msglen = sprintf(ambig_message, "Ambiguous help request, did you mean:\n"); - for (i = 0; i < ARRAY_LENGTH(static_help_list); i++) + for (i = 0; i < std::size(static_help_list); i++) if (!core_strnicmp(static_help_list[i].tag, tag, taglen)) msglen += sprintf(&ambig_message[msglen], " help %s?\n", static_help_list[i].tag); return ambig_message; diff --git a/src/emu/debug/dvbpoints.cpp b/src/emu/debug/dvbpoints.cpp index ba99c147a72..258d1dff020 100644 --- a/src/emu/debug/dvbpoints.cpp +++ b/src/emu/debug/dvbpoints.cpp @@ -217,7 +217,7 @@ void debug_view_breakpoints::view_update() gather_breakpoints(); // Set the view region so the scroll bars update - m_total.x = tableBreaks[ARRAY_LENGTH(tableBreaks) - 1]; + m_total.x = tableBreaks[std::size(tableBreaks) - 1]; m_total.y = m_buffer.size() + 1; if (m_total.y < 10) m_total.y = 10; @@ -225,7 +225,7 @@ void debug_view_breakpoints::view_update() // Draw debug_view_char *dest = &m_viewdata[0]; util::ovectorstream linebuf; - linebuf.reserve(ARRAY_LENGTH(tableBreaks) - 1); + linebuf.reserve(std::size(tableBreaks) - 1); // Header if (m_visible.y > 0) diff --git a/src/emu/debug/dvwpoints.cpp b/src/emu/debug/dvwpoints.cpp index 605dcf8fe42..76e74233988 100644 --- a/src/emu/debug/dvwpoints.cpp +++ b/src/emu/debug/dvwpoints.cpp @@ -239,7 +239,7 @@ void debug_view_watchpoints::view_update() gather_watchpoints(); // Set the view region so the scroll bars update - m_total.x = tableBreaks[ARRAY_LENGTH(tableBreaks) - 1]; + m_total.x = tableBreaks[std::size(tableBreaks) - 1]; m_total.y = m_buffer.size() + 1; if (m_total.y < 10) m_total.y = 10; @@ -247,7 +247,7 @@ void debug_view_watchpoints::view_update() // Draw debug_view_char *dest = &m_viewdata[0]; util::ovectorstream linebuf; - linebuf.reserve(ARRAY_LENGTH(tableBreaks) - 1); + linebuf.reserve(std::size(tableBreaks) - 1); // Header if (m_visible.y > 0) diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp index 55613cf90f2..49dee5f650e 100644 --- a/src/emu/diexec.cpp +++ b/src/emu/diexec.cpp @@ -416,7 +416,7 @@ void device_execute_interface::interface_post_start() device().save_item(STRUCT_MEMBER(m_input, m_curstate)); // fill in the input states and IRQ callback information - for (int line = 0; line < ARRAY_LENGTH(m_input); line++) + for (int line = 0; line < std::size(m_input); line++) m_input[line].start(*this, line); } @@ -679,7 +679,7 @@ if (TEMPLOG) printf("setline(%s,%d,%d,%d)\n", m_execute->device().tag(), m_linen // if we're full of events, flush the queue and log a message int event_index = m_qindex++; - if (event_index >= ARRAY_LENGTH(m_queue)) + if (event_index >= std::size(m_queue)) { m_qindex--; empty_event_queue(nullptr,0); @@ -688,7 +688,7 @@ if (TEMPLOG) printf("setline(%s,%d,%d,%d)\n", m_execute->device().tag(), m_linen } // enqueue the event - if (event_index < ARRAY_LENGTH(m_queue)) + if (event_index < std::size(m_queue)) { if (vector == USE_STORED_VECTOR) vector = m_stored_vector; diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 0fbee95dce8..3c610e66319 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -130,17 +130,16 @@ void device_image_interface::interface_config_complete() //------------------------------------------------- -// find_device_type - search trough list of +// find_device_type - search through list of // device types to extract data //------------------------------------------------- const image_device_type_info *device_image_interface::find_device_type(iodevice_t type) { - int i; - for (i = 0; i < ARRAY_LENGTH(device_image_interface::m_device_info_array); i++) + for (const image_device_type_info &info : m_device_info_array) { - if (m_device_info_array[i].m_type == type) - return &m_device_info_array[i]; + if (info.m_type == type) + return &info; } return nullptr; } @@ -172,11 +171,10 @@ const char *device_image_interface::device_brieftypename(iodevice_t type) iodevice_t device_image_interface::device_typeid(const char *name) { - int i; - for (i = 0; i < ARRAY_LENGTH(device_image_interface::m_device_info_array); i++) + for (const image_device_type_info &info : m_device_info_array) { - if (!core_stricmp(name, m_device_info_array[i].m_name) || !core_stricmp(name, m_device_info_array[i].m_shortname)) - return m_device_info_array[i].m_type; + if (!core_stricmp(name, info.m_name) || !core_stricmp(name, info.m_shortname)) + return info.m_type; } return (iodevice_t)-1; } @@ -333,7 +331,7 @@ void device_image_interface::message(const char *format, ...) /* format the message */ va_start(args, format); - vsnprintf(buffer, ARRAY_LENGTH(buffer), format, args); + vsnprintf(buffer, std::size(buffer), format, args); va_end(args); /* display the popup for a standard amount of time */ diff --git a/src/emu/dipalette.cpp b/src/emu/dipalette.cpp index b5ceeb05d4c..7cd58665a4d 100644 --- a/src/emu/dipalette.cpp +++ b/src/emu/dipalette.cpp @@ -491,7 +491,7 @@ void device_palette_interface::configure_rgb_shadows(int mode, float factor) assert(m_format != BITMAP_FORMAT_IND16); // verify the shadow table - assert(mode >= 0 && mode < ARRAY_LENGTH(m_shadow_tables)); + assert(mode >= 0 && mode < std::size(m_shadow_tables)); shadow_table_data &stable = m_shadow_tables[mode]; assert(stable.base != nullptr); diff --git a/src/emu/diserial.h b/src/emu/diserial.h index 7d7717c5158..62b13c028a1 100644 --- a/src/emu/diserial.h +++ b/src/emu/diserial.h @@ -201,8 +201,8 @@ protected: virtual void tra_complete() override { assert(!m_empty || (m_head == m_tail)); - assert(m_head < ARRAY_LENGTH(m_fifo)); - assert(m_tail < ARRAY_LENGTH(m_fifo)); + assert(m_head < std::size(m_fifo)); + assert(m_tail < std::size(m_fifo)); if (!m_empty) { @@ -227,8 +227,8 @@ protected: void transmit_byte(u8 byte) { assert(!m_empty || (m_head == m_tail)); - assert(m_head < ARRAY_LENGTH(m_fifo)); - assert(m_tail < ARRAY_LENGTH(m_fifo)); + assert(m_head < std::size(m_fifo)); + assert(m_tail < std::size(m_fifo)); if (m_empty && is_transmit_register_empty()) { diff --git a/src/emu/distate.cpp b/src/emu/distate.cpp index cd47948abd2..215f140efd1 100644 --- a/src/emu/distate.cpp +++ b/src/emu/distate.cpp @@ -337,12 +337,12 @@ std::string device_state_entry::format(const char *string, bool maxout) const if (width == 0) throw emu_fatalerror("Width required for %%u formats\n"); hitnonzero = false; - while (leadzero && width > ARRAY_LENGTH(k_decimal_divisor)) + while (leadzero && width > std::size(k_decimal_divisor)) { dest.append(" "); width--; } - for (int digitnum = ARRAY_LENGTH(k_decimal_divisor) - 1; digitnum >= 0; digitnum--) + for (int digitnum = std::size(k_decimal_divisor) - 1; digitnum >= 0; digitnum--) { int digit = (result >= k_decimal_divisor[digitnum]) ? (result / k_decimal_divisor[digitnum]) % 10 : 0; if (digit != 0) diff --git a/src/emu/emucore.h b/src/emu/emucore.h index b0df89343ec..a05eab2cd5e 100644 --- a/src/emu/emucore.h +++ b/src/emu/emucore.h @@ -80,9 +80,6 @@ using util::iabs; using util::string_format; -// genf is a generic function pointer; cast function pointers to this instead of void * -typedef void genf(void); - // pen_t is used to represent pixel values in bitmaps typedef u32 pen_t; diff --git a/src/emu/fileio.cpp b/src/emu/fileio.cpp index 7d5954b2739..293c23045b4 100644 --- a/src/emu/fileio.cpp +++ b/src/emu/fileio.cpp @@ -719,12 +719,12 @@ osd_file::error emu_file::attempt_zipped() { typedef util::archive_file::error (*open_func)(const std::string &filename, util::archive_file::ptr &result); char const *const suffixes[] = { ".zip", ".7z" }; - open_func const open_funcs[ARRAY_LENGTH(suffixes)] = { &util::archive_file::open_zip, &util::archive_file::open_7z }; + open_func const open_funcs[std::size(suffixes)] = { &util::archive_file::open_zip, &util::archive_file::open_7z }; // loop over archive types std::string const savepath(m_fullpath); std::string filename; - for (unsigned i = 0; i < ARRAY_LENGTH(suffixes); i++, m_fullpath = savepath, filename.clear()) + for (unsigned i = 0; i < std::size(suffixes); i++, m_fullpath = savepath, filename.clear()) { // loop over directory parts up to the start of filename while (1) diff --git a/src/emu/input.cpp b/src/emu/input.cpp index e22e443cc83..25ecd238d05 100644 --- a/src/emu/input.cpp +++ b/src/emu/input.cpp @@ -668,7 +668,7 @@ bool input_manager::code_pressed_once(input_code code) // look for the code in the memory bool curvalue = code_pressed(code); int empty = -1; - for (int memnum = 0; memnum < ARRAY_LENGTH(m_switch_memory); memnum++) + for (int memnum = 0; memnum < std::size(m_switch_memory); memnum++) { // were we previous pressed on the last time through here? if (m_switch_memory[memnum] == code) @@ -876,7 +876,7 @@ input_code input_manager::code_from_token(std::string_view _token) // copy the token and break it into pieces std::string token[6]; int numtokens = 0; - while (numtokens < ARRAY_LENGTH(token)) + while (numtokens < std::size(token)) { // make a token up to the next underscore std::string_view::size_type score = _token.find('_'); @@ -1327,7 +1327,7 @@ bool input_manager::map_device_to_controller(const devicemap_table_type *devicem std::string token[2]; int numtokens = 0; std::string_view _token = controllername; - while (numtokens < ARRAY_LENGTH(token)) + while (numtokens < std::size(token)) { // make a token up to the next underscore std::string_view::size_type score = _token.find('_'); diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 9a220b9c12f..4f3d5b2c7ac 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -633,7 +633,7 @@ ioport_field::ioport_field(ioport_port &port, ioport_type type, ioport_value def for (input_seq_type seqtype = SEQ_TYPE_STANDARD; seqtype < SEQ_TYPE_TOTAL; ++seqtype) m_seq[seqtype].set_default(); - for (int i = 0; i < ARRAY_LENGTH(m_chars); i++) + for (int i = 0; i < std::size(m_chars); i++) std::fill(std::begin(m_chars[i]), std::end(m_chars[i]), char32_t(0)); // for DIP switches and configs, look for a default value from the owner @@ -782,11 +782,11 @@ ioport_type_class ioport_field::type_class() const noexcept std::vector ioport_field::keyboard_codes(int which) const { - if (which >= ARRAY_LENGTH(m_chars)) + if (which >= std::size(m_chars)) throw emu_fatalerror("Tried to access keyboard_code with out-of-range index %d\n", which); std::vector result; - for (int i = 0; i < ARRAY_LENGTH(m_chars[which]) && m_chars[which][i] != 0; i++) + for (int i = 0; i < std::size(m_chars[which]) && m_chars[which][i] != 0; i++) result.push_back(m_chars[which][i]); return result; @@ -3012,12 +3012,9 @@ const char *ioport_configurer::string_from_token(const char *string) #if false // Set true, If you want to take care missing-token or wrong-sorting // otherwise, scan the list for a matching string and return it - { - int index; - for (index = 0; index < ARRAY_LENGTH(input_port_default_strings); index++) + for (int index = 0; index < std::size(input_port_default_strings); index++) if (input_port_default_strings[index].id == uintptr_t(string)) return input_port_default_strings[index].string; - } return "(Unknown Default)"; #else @@ -3096,10 +3093,10 @@ ioport_configurer& ioport_configurer::field_alloc(ioport_type type, ioport_value ioport_configurer& ioport_configurer::field_add_char(std::initializer_list charlist) { - for (int index = 0; index < ARRAY_LENGTH(m_curfield->m_chars); index++) + for (int index = 0; index < std::size(m_curfield->m_chars); index++) if (m_curfield->m_chars[index][0] == 0) { - const size_t char_count = ARRAY_LENGTH(m_curfield->m_chars[index]); + const size_t char_count = std::size(m_curfield->m_chars[index]); assert(charlist.size() > 0 && charlist.size() <= char_count); for (size_t i = 0; i < char_count; i++) @@ -3782,7 +3779,7 @@ std::string ioport_manager::input_type_to_token(ioport_type type, int player) input_seq_type ioport_manager::token_to_seq_type(const char *string) { // look up the string in the table of possible sequence types and return the index - for (int seqindex = 0; seqindex < ARRAY_LENGTH(seqtypestrings); seqindex++) + for (int seqindex = 0; seqindex < std::size(seqtypestrings); seqindex++) if (!core_stricmp(string, seqtypestrings[seqindex])) return input_seq_type(seqindex); return SEQ_TYPE_INVALID; diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp index e686e6385a8..e5dcdc93dbc 100644 --- a/src/emu/natkeyboard.cpp +++ b/src/emu/natkeyboard.cpp @@ -1066,7 +1066,7 @@ const char_info *char_info::find(char32_t target) { // perform a simple binary search to find the proper alternate int low = 0; - int high = ARRAY_LENGTH(charinfo); + int high = std::size(charinfo); while (high > low) { int middle = (high + low) / 2; @@ -1096,7 +1096,7 @@ bool validate_natural_keyboard_statics(void) const char_info *ci; // check to make sure that charinfo is in order - for (i = 0; i < ARRAY_LENGTH(charinfo); i++) + for (i = 0; i < std::size(charinfo); i++) { if (last_char >= charinfo[i].ch) { @@ -1107,7 +1107,7 @@ bool validate_natural_keyboard_statics(void) } // check to make sure that I can look up everything on alternate_charmap - for (i = 0; i < ARRAY_LENGTH(charinfo); i++) + for (i = 0; i < std::size(charinfo); i++) { ci = char_info::find(charinfo[i].ch); if (ci != &charinfo[i]) diff --git a/src/emu/profiler.h b/src/emu/profiler.h index cff0801f65c..8341e075eae 100644 --- a/src/emu/profiler.h +++ b/src/emu/profiler.h @@ -117,7 +117,7 @@ private: ATTR_FORCE_INLINE void real_start(profile_type type) { // fail if we overflow - if (m_filoptr >= &m_filo[ARRAY_LENGTH(m_filo) - 1]) + if (m_filoptr >= &m_filo[std::size(m_filo) - 1]) throw emu_fatalerror("Profiler FILO overflow (type = %d)\n", type); // get current tick count diff --git a/src/emu/render.cpp b/src/emu/render.cpp index 5e2c023bf4e..b7a66b7bd2a 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -442,7 +442,7 @@ void render_texture::get_scaled(u32 dwidth, u32 dheight, render_texinfo &texinfo // is it a size we already have? scaled_texture *scaled = nullptr; int scalenum; - for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++) + for (scalenum = 0; scalenum < std::size(m_scaled); scalenum++) { scaled = &m_scaled[scalenum]; @@ -452,12 +452,12 @@ void render_texture::get_scaled(u32 dwidth, u32 dheight, render_texinfo &texinfo } // did we get one? - if (scalenum == ARRAY_LENGTH(m_scaled)) + if (scalenum == std::size(m_scaled)) { int lowest = -1; // didn't find one -- take the entry with the lowest seqnum - for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++) + for (scalenum = 0; scalenum < std::size(m_scaled); scalenum++) if ((lowest == -1 || m_scaled[scalenum].seqid < m_scaled[lowest].seqid) && !primlist.has_reference(m_scaled[scalenum].bitmap.get())) lowest = scalenum; if (-1 == lowest) @@ -697,7 +697,7 @@ const rgb_t *render_container::bcg_lookup_table(int texformat, u32 &out_length, case TEXFORMAT_RGB32: case TEXFORMAT_ARGB32: case TEXFORMAT_YUY16: - out_length = ARRAY_LENGTH(m_bcglookup256); + out_length = std::size(m_bcglookup256); return m_bcglookup256; default: @@ -1318,7 +1318,7 @@ render_primitive_list &render_target::get_primitives() // switch to the next primitive list render_primitive_list &list = m_primlist[m_listindex]; - m_listindex = (m_listindex + 1) % ARRAY_LENGTH(m_primlist); + m_listindex = (m_listindex + 1) % std::size(m_primlist); list.acquire_lock(); // free any previous primitives diff --git a/src/emu/rendfont.cpp b/src/emu/rendfont.cpp index 8fa59c20257..c20a7979bbc 100644 --- a/src/emu/rendfont.cpp +++ b/src/emu/rendfont.cpp @@ -478,7 +478,7 @@ inline render_font::glyph &render_font::get_char(char32_t chnum) static glyph dummy_glyph; unsigned const page(chnum / 256); - if (page >= ARRAY_LENGTH(m_glyphs)) + if (page >= std::size(m_glyphs)) { if ((0 <= m_defchar) && (chnum != m_defchar)) return get_char(m_defchar); @@ -1292,7 +1292,7 @@ bool render_font::load_bdf() { LOG("render_font::load_bdf: ignoring character with negative x advance\n"); } - else if ((256 * ARRAY_LENGTH(m_glyphs)) <= encoding) + else if ((256 * std::size(m_glyphs)) <= encoding) { LOG("render_font::load_bdf: ignoring character with encoding outside range\n"); } @@ -1505,7 +1505,7 @@ bool render_font::save_cached(const char *filename, u64 length, u32 hash) // loop over all characters bdc_table_entry table_entry(chartable.empty() ? nullptr : &chartable[0]); - for (unsigned chnum = 0; chnum < (256 * ARRAY_LENGTH(m_glyphs)); chnum++) + for (unsigned chnum = 0; chnum < (256 * std::size(m_glyphs)); chnum++) { if (m_glyphs[chnum / 256] && (0 < m_glyphs[chnum / 256][chnum % 256].width)) { diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index e6ee818b449..4da6c9069b0 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -218,7 +218,7 @@ void software_list_device::display_matches(const machine_config &config, const c { // get the top 16 approximate matches for the selected device interface (i.e. only carts for cartslot, etc.) const software_info *matches[16] = { nullptr }; - swlistdev.find_approx_matches(name, ARRAY_LENGTH(matches), matches, interface); + swlistdev.find_approx_matches(name, std::size(matches), matches, interface); // if we found some, print them if (matches[0] != nullptr) diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp index 625f0e989e6..7ee663aba69 100644 --- a/src/emu/sound.cpp +++ b/src/emu/sound.cpp @@ -105,7 +105,7 @@ void stream_buffer::set_sample_rate(u32 rate, bool resample) // voice when jumping off the edge in Q*Bert; without this extra effort // it is crackly and/or glitchy at times sample_t buffer[64]; - int buffered_samples = std::min(m_sample_rate, std::min(rate, u32(ARRAY_LENGTH(buffer)))); + int buffered_samples = std::min(m_sample_rate, std::min(rate, u32(std::size(buffer)))); // if the new rate is lower, downsample into our holding buffer; // otherwise just copy into our holding buffer for later upsampling @@ -203,12 +203,12 @@ void stream_buffer::flush_wav() // iterate over chunks for conversion s16 buffer[1024]; - for (int samplebase = 0; samplebase < view.samples(); samplebase += ARRAY_LENGTH(buffer)) + for (int samplebase = 0; samplebase < view.samples(); samplebase += std::size(buffer)) { // clamp to the buffer size int cursamples = view.samples() - samplebase; - if (cursamples > ARRAY_LENGTH(buffer)) - cursamples = ARRAY_LENGTH(buffer); + if (cursamples > std::size(buffer)) + cursamples = std::size(buffer); // convert and fill for (int sampindex = 0; sampindex < cursamples; sampindex++) diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp index a5470505f12..497ce3e7030 100644 --- a/src/emu/uiinput.cpp +++ b/src/emu/uiinput.cpp @@ -138,11 +138,11 @@ bool ui_input_manager::push_event(ui_event evt) } // is the queue filled up? - if ((m_events_end + 1) % ARRAY_LENGTH(m_events) == m_events_start) + if ((m_events_end + 1) % std::size(m_events) == m_events_start) return false; m_events[m_events_end++] = evt; - m_events_end %= ARRAY_LENGTH(m_events); + m_events_end %= std::size(m_events); return true; } @@ -156,7 +156,7 @@ bool ui_input_manager::pop_event(ui_event *evt) if (m_events_start != m_events_end) { *evt = m_events[m_events_start++]; - m_events_start %= ARRAY_LENGTH(m_events); + m_events_start %= std::size(m_events); return true; } else diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 710473b85f9..f9523f29411 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1844,7 +1844,7 @@ void validity_checker::validate_dip_settings(ioport_field &field) if (coin_error) { output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, " Note proper coin sort order should be:\n"); - for (int entry = 0; entry < ARRAY_LENGTH(coin_list); entry++) + for (int entry = 0; entry < std::size(coin_list); entry++) if (coin_list[entry]) output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, " %s\n", ioport_string_from_index(__input_string_coinage_start + entry)); } diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 1c2ba0d809c..69807778d1b 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -296,7 +296,7 @@ int cli_frontend::execute(std::vector &args) // get the top 16 approximate matches driver_enumerator drivlist(m_options); int matches[16]; - drivlist.find_approximate_matches(m_options.attempted_system_name(), ARRAY_LENGTH(matches), matches); + drivlist.find_approximate_matches(m_options.attempted_system_name(), std::size(matches), matches); // work out how wide the titles need to be int titlelen(0); diff --git a/src/frontend/mame/ui/custui.cpp b/src/frontend/mame/ui/custui.cpp index 7ae182928e7..c748bee1e7c 100644 --- a/src/frontend/mame/ui/custui.cpp +++ b/src/frontend/mame/ui/custui.cpp @@ -125,7 +125,7 @@ void menu_custom_ui::handle() } else if (menu_event->iptkey == IPT_UI_SELECT) { - std::vector s_sel(ARRAY_LENGTH(HIDE_STATUS)); + std::vector s_sel(std::size(HIDE_STATUS)); std::transform(std::begin(HIDE_STATUS), std::end(HIDE_STATUS), s_sel.begin(), [](auto &s) { return _(s); }); menu::stack_push( ui(), container(), std::move(s_sel), ui_globals::panels_status, @@ -985,7 +985,7 @@ void menu_palette_sel::handle() void menu_palette_sel::populate(float &customtop, float &custombottom) { - for (unsigned x = 0; x < ARRAY_LENGTH(s_palette); ++x) + for (unsigned x = 0; x < std::size(s_palette); ++x) item_append(_(s_palette[x].first), s_palette[x].second, FLAG_COLOR_BOX, (void *)(uintptr_t)(x + 1)); item_append(menu_item_type::SEPARATOR); diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp index 0bf8c6548f5..089d58f3e77 100644 --- a/src/frontend/mame/ui/inifile.cpp +++ b/src/frontend/mame/ui/inifile.cpp @@ -99,7 +99,7 @@ void inifile_manager::init_category(std::string &&filename, emu_file &file) categoryindex index; char rbuf[MAX_CHAR_INFO]; std::string name; - while (file.gets(rbuf, ARRAY_LENGTH(rbuf))) + while (file.gets(rbuf, std::size(rbuf))) { if ('[' == rbuf[0]) { @@ -143,7 +143,7 @@ bool favorite_manager::favorite_compare::operator()(ui_software_info const &lhs, return true; } - return 0 > std::strncmp(lhs.driver->name, rhs.driver->name, ARRAY_LENGTH(lhs.driver->name)); + return 0 > std::strncmp(lhs.driver->name, rhs.driver->name, std::size(lhs.driver->name)); } bool favorite_manager::favorite_compare::operator()(ui_software_info const &lhs, game_driver const &rhs) const @@ -153,7 +153,7 @@ bool favorite_manager::favorite_compare::operator()(ui_software_info const &lhs, if (!lhs.startempty) return false; else - return 0 > std::strncmp(lhs.driver->name, rhs.name, ARRAY_LENGTH(rhs.name)); + return 0 > std::strncmp(lhs.driver->name, rhs.name, std::size(rhs.name)); } bool favorite_manager::favorite_compare::operator()(game_driver const &lhs, ui_software_info const &rhs) const @@ -163,7 +163,7 @@ bool favorite_manager::favorite_compare::operator()(game_driver const &lhs, ui_s if (!rhs.startempty) return true; else - return 0 > std::strncmp(lhs.name, rhs.driver->name, ARRAY_LENGTH(lhs.name)); + return 0 > std::strncmp(lhs.name, rhs.driver->name, std::size(lhs.name)); } bool favorite_manager::favorite_compare::operator()(ui_software_info const &lhs, running_software_key const &rhs) const @@ -182,7 +182,7 @@ bool favorite_manager::favorite_compare::operator()(ui_software_info const &lhs, else if (lhs.shortname > std::get<2>(rhs)) return false; else - return 0 > std::strncmp(lhs.driver->name, std::get<0>(rhs).name, ARRAY_LENGTH(lhs.driver->name)); + return 0 > std::strncmp(lhs.driver->name, std::get<0>(rhs).name, std::size(lhs.driver->name)); } bool favorite_manager::favorite_compare::operator()(running_software_key const &lhs, ui_software_info const &rhs) const @@ -201,7 +201,7 @@ bool favorite_manager::favorite_compare::operator()(running_software_key const & else if (std::get<2>(lhs) > rhs.shortname) return false; else - return 0 > std::strncmp(std::get<0>(lhs).name, rhs.driver->name, ARRAY_LENGTH(rhs.driver->name)); + return 0 > std::strncmp(std::get<0>(lhs).name, rhs.driver->name, std::size(rhs.driver->name)); } diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 1ac1a2f1523..aa6abf66e1f 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -653,7 +653,7 @@ void menu_select_game::build_available_list() char const *src; // build a name for it - for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[ARRAY_LENGTH(drivername) - 1]; ++src) + for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[std::size(drivername) - 1]; ++src) *dst++ = tolower(uint8_t(*src)); *dst = 0; diff --git a/src/frontend/mame/ui/simpleselgame.cpp b/src/frontend/mame/ui/simpleselgame.cpp index 7625e5519d3..d434db8b572 100644 --- a/src/frontend/mame/ui/simpleselgame.cpp +++ b/src/frontend/mame/ui/simpleselgame.cpp @@ -84,7 +84,7 @@ void simple_menu_select_game::build_driver_list() const char *src; // build a name for it - for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[ARRAY_LENGTH(drivername) - 1]; src++) + for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[std::size(drivername) - 1]; src++) *dst++ = tolower((uint8_t)*src); *dst = 0; @@ -366,7 +366,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float tempbuf[line++] = string_format("%s %s", emulator_info::get_appname(), build_version); // output message - while (line < ARRAY_LENGTH(tempbuf)) + while (line < std::size(tempbuf)) { if (!(*s == 0 || *s == '\n')) tempbuf[line].push_back(*s); diff --git a/src/frontend/mame/ui/sndmenu.cpp b/src/frontend/mame/ui/sndmenu.cpp index 01397bd8f74..a3c65e7f6c9 100644 --- a/src/frontend/mame/ui/sndmenu.cpp +++ b/src/frontend/mame/ui/sndmenu.cpp @@ -29,7 +29,7 @@ menu_sound_options::menu_sound_options(mame_ui_manager &mui, render_container &c m_sound = (strcmp(options.sound(), OSDOPTVAL_NONE) && strcmp(options.sound(), "0")); m_samples = mui.machine().options().samples(); - int total = ARRAY_LENGTH(m_sound_rate); + int total = std::size(m_sound_rate); for (m_cur_rates = 0; m_cur_rates < total; m_cur_rates++) if (m_sample_rate == m_sound_rate[m_cur_rates]) @@ -92,7 +92,7 @@ void menu_sound_options::handle() } else if (menu_event->iptkey == IPT_UI_SELECT) { - int total = ARRAY_LENGTH(m_sound_rate); + int total = std::size(m_sound_rate); std::vector s_sel(total); for (int index = 0; index < total; index++) s_sel[index] = std::to_string(m_sound_rate[index]); @@ -128,7 +128,7 @@ void menu_sound_options::handle() void menu_sound_options::populate(float &customtop, float &custombottom) { - uint32_t arrow_flags = get_arrow_flags(uint16_t(0), uint16_t(ARRAY_LENGTH(m_sound_rate) - 1), m_cur_rates); + uint32_t arrow_flags = get_arrow_flags(uint16_t(0), uint16_t(std::size(m_sound_rate) - 1), m_cur_rates); m_sample_rate = m_sound_rate[m_cur_rates]; // add options items diff --git a/src/frontend/mame/ui/toolbar.ipp b/src/frontend/mame/ui/toolbar.ipp index 933bf9c2d40..1822c6daef6 100644 --- a/src/frontend/mame/ui/toolbar.ipp +++ b/src/frontend/mame/ui/toolbar.ipp @@ -113,7 +113,7 @@ uint32_t const toolbar_bitmap_bmp[][1024] = { } }; -#define UI_TOOLBAR_BUTTONS (ARRAY_LENGTH(toolbar_bitmap_bmp)) +#define UI_TOOLBAR_BUTTONS (std::size(toolbar_bitmap_bmp)) } // anonymous namespace } // namespace ui diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index f13d8ea846b..f5e04284cd7 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -210,7 +210,7 @@ void mame_ui_manager::init() draw_text_box(container, messagebox_text, ui::text_layout::LEFT, 0.5f, 0.5f, colors().background_color()); return 0; }); - m_non_char_keys_down = std::make_unique((ARRAY_LENGTH(non_char_keys) + 7) / 8); + m_non_char_keys_down = std::make_unique((std::size(non_char_keys) + 7) / 8); m_mouse_show = machine().system().flags & machine_flags::CLICKABLE_ARTWORK ? true : false; // request notification callbacks @@ -981,11 +981,6 @@ bool mame_ui_manager::is_menu_active(void) void mame_ui_manager::process_natural_keyboard() { ui_event event; - int i, pressed; - input_item_id itemid; - input_code code; - uint8_t *key_down_ptr; - uint8_t key_down_mask; // loop while we have interesting events while (machine().ui_input().pop_event(&event)) @@ -996,18 +991,18 @@ void mame_ui_manager::process_natural_keyboard() } // process natural keyboard keys that don't get UI_EVENT_CHARs - for (i = 0; i < ARRAY_LENGTH(non_char_keys); i++) + for (int i = 0; i < std::size(non_char_keys); i++) { // identify this keycode - itemid = non_char_keys[i]; - code = machine().input().code_from_itemid(itemid); + input_item_id itemid = non_char_keys[i]; + input_code code = machine().input().code_from_itemid(itemid); // ...and determine if it is pressed - pressed = machine().input().code_pressed(code); + bool pressed = machine().input().code_pressed(code); // figure out whey we are in the key_down map - key_down_ptr = &m_non_char_keys_down[i / 8]; - key_down_mask = 1 << (i % 8); + uint8_t *key_down_ptr = &m_non_char_keys_down[i / 8]; + uint8_t key_down_mask = 1 << (i % 8); if (pressed && !(*key_down_ptr & key_down_mask)) { diff --git a/src/frontend/mame/ui/utils.cpp b/src/frontend/mame/ui/utils.cpp index 8cb109e955c..95e76944d61 100644 --- a/src/frontend/mame/ui/utils.cpp +++ b/src/frontend/mame/ui/utils.cpp @@ -1672,7 +1672,7 @@ machine_filter::ptr machine_filter::create(type n, machine_filter_data const &da machine_filter::ptr machine_filter::create(emu_file &file, machine_filter_data const &data, unsigned indent) { char buffer[MAX_CHAR_INFO]; - if (!file.gets(buffer, ARRAY_LENGTH(buffer))) + if (!file.gets(buffer, std::size(buffer))) return nullptr; // split it into a key/value or bail @@ -1780,7 +1780,7 @@ software_filter::ptr software_filter::create(type n, software_filter_data const software_filter::ptr software_filter::create(emu_file &file, software_filter_data const &data, unsigned indent) { char buffer[MAX_CHAR_INFO]; - if (!file.gets(buffer, ARRAY_LENGTH(buffer))) + if (!file.gets(buffer, std::size(buffer))) return nullptr; // split it into a key/value or bail diff --git a/src/lib/formats/ap2_dsk.cpp b/src/lib/formats/ap2_dsk.cpp index 1a2e2a65e68..84b87a06e47 100644 --- a/src/lib/formats/ap2_dsk.cpp +++ b/src/lib/formats/ap2_dsk.cpp @@ -67,7 +67,7 @@ static const uint8_t *get_untranslate6_map(void) if (!map_inited) { memset(map, 0xff, sizeof(map)); - for (i = 0; i < ARRAY_LENGTH(translate6); i++) + for (i = 0; i < std::size(translate6); i++) map[translate6[i]] = i; map_inited = 1; } diff --git a/src/lib/formats/ap_dsk35.cpp b/src/lib/formats/ap_dsk35.cpp index 235d9f3d0c2..cecf105c189 100644 --- a/src/lib/formats/ap_dsk35.cpp +++ b/src/lib/formats/ap_dsk35.cpp @@ -225,7 +225,7 @@ int apple35_sectors_per_track(floppy_image_legacy *image, int track) int sectors; assert(track >= 0); - assert(track < ARRAY_LENGTH(apple35_tracklen_800kb)); + assert(track < std::size(apple35_tracklen_800kb)); if (get_apple35_tag(image)->is_1440k) sectors = 18; @@ -454,7 +454,7 @@ static uint32_t apple35_get_offset(floppy_image_legacy *floppy, int head, int tr tag = get_apple35_tag(floppy); - if (track >= ARRAY_LENGTH(apple35_tracklen_800kb)) + if (track >= std::size(apple35_tracklen_800kb)) return ~0; if (head >= tag->sides) return ~0; @@ -616,7 +616,7 @@ static floperr_t apple35_read_track(floppy_image_legacy *floppy, int head, int t tag = get_apple35_tag(floppy); - if (track >= ARRAY_LENGTH(apple35_tracklen_800kb)) + if (track >= std::size(apple35_tracklen_800kb)) return FLOPPY_ERROR_SEEKERROR; if (offset != 0) return FLOPPY_ERROR_UNSUPPORTED; @@ -628,7 +628,7 @@ static floperr_t apple35_read_track(floppy_image_legacy *floppy, int head, int t for (sector = 0; sector < sector_count; sector++) { /* read the sector */ - err = apple35_read_sector_td(floppy, head, track, sector, sector_data, ARRAY_LENGTH(sector_data)); + err = apple35_read_sector_td(floppy, head, track, sector, sector_data, std::size(sector_data)); if (err) { return err; @@ -636,7 +636,7 @@ static floperr_t apple35_read_track(floppy_image_legacy *floppy, int head, int t sony_nibblize35(sector_data, nibble_data, checksum); - for (i = 0; i < ARRAY_LENGTH(blk1); i++) + for (i = 0; i < std::size(blk1); i++) sony_filltrack((uint8_t*)buffer, buflen, &pos, blk1[i]); sum = (track ^ sector ^ side ^ tag->format_byte) & 0x3F; @@ -647,18 +647,18 @@ static floperr_t apple35_read_track(floppy_image_legacy *floppy, int head, int t sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[tag->format_byte]); sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[sum]); - for (i = 0; i < ARRAY_LENGTH(blk2); i++) + for (i = 0; i < std::size(blk2); i++) sony_filltrack((uint8_t*)buffer, buflen, &pos, blk2[i]); sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[sector]); - for (i = 0; i < ARRAY_LENGTH(nibble_data); i++) + for (i = 0; i < std::size(nibble_data); i++) sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[nibble_data[i]]); for (i = 3; i >= 0; i--) sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[checksum[i]]); - for (i = 0; i < ARRAY_LENGTH(blk3); i++) + for (i = 0; i < std::size(blk3); i++) sony_filltrack((uint8_t*)buffer, buflen, &pos, blk3[i]); } @@ -681,7 +681,7 @@ static floperr_t apple35_write_track(floppy_image_legacy *floppy, int head, int tag = get_apple35_tag(floppy); - if (track >= ARRAY_LENGTH(apple35_tracklen_800kb)) + if (track >= std::size(apple35_tracklen_800kb)) return FLOPPY_ERROR_SEEKERROR; if (offset != 0) return FLOPPY_ERROR_UNSUPPORTED; @@ -756,7 +756,7 @@ static floperr_t apple35_write_track(floppy_image_legacy *floppy, int head, int continue; j++; - for (i = 0; i < ARRAY_LENGTH(nibble_data); i++) + for (i = 0; i < std::size(nibble_data); i++) { nibble_data[i] = rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)]; j++; @@ -778,7 +778,7 @@ static floperr_t apple35_write_track(floppy_image_legacy *floppy, int head, int sony_denibblize35(sector_data, nibble_data, checksum); /* write the sector */ - err = apple35_write_sector_td(floppy, head, track, sector, sector_data, ARRAY_LENGTH(sector_data), 0); + err = apple35_write_sector_td(floppy, head, track, sector, sector_data, std::size(sector_data), 0); if (err) return err; diff --git a/src/lib/formats/cassimg.cpp b/src/lib/formats/cassimg.cpp index ee271abc8a7..527bfc884fb 100644 --- a/src/lib/formats/cassimg.cpp +++ b/src/lib/formats/cassimg.cpp @@ -94,12 +94,12 @@ const int8_t *choose_wave(const cassette_image::Modulation &modulation, size_t & if (modulation.flags & cassette_image::MODULATION_SINEWAVE) { - wave_bytes_length = ARRAY_LENGTH(sine_wave); + wave_bytes_length = std::size(sine_wave); return sine_wave; } else { - wave_bytes_length = ARRAY_LENGTH(square_wave); + wave_bytes_length = std::size(square_wave); return square_wave; } } diff --git a/src/lib/formats/cassimg.h b/src/lib/formats/cassimg.h index 09f6aaa0099..3a59870571a 100644 --- a/src/lib/formats/cassimg.h +++ b/src/lib/formats/cassimg.h @@ -14,7 +14,6 @@ #include "ioprocs.h" -#include "coretmpl.h" #include "osdcore.h" #include diff --git a/src/lib/formats/flopimg.cpp b/src/lib/formats/flopimg.cpp index 9322551124b..cb8d6ca1300 100644 --- a/src/lib/formats/flopimg.cpp +++ b/src/lib/formats/flopimg.cpp @@ -876,7 +876,7 @@ const char *floppy_error(floperr_t err) "Required parameter not specified" }; - if ((err < 0) || (err >= ARRAY_LENGTH(error_messages))) + if ((err < 0) || (err >= std::size(error_messages))) return nullptr; return error_messages[err]; } diff --git a/src/lib/formats/p2000t_cas.cpp b/src/lib/formats/p2000t_cas.cpp index 7bc0c6b21a9..de6652d41ad 100644 --- a/src/lib/formats/p2000t_cas.cpp +++ b/src/lib/formats/p2000t_cas.cpp @@ -3,6 +3,8 @@ #include "p2000t_cas.h" +#include "coretmpl.h" // BIT + #include #include @@ -294,7 +296,7 @@ static cassette_image::error p2000t_cas_load(cassette_image *cassette) // Insert sync header.. 0xAA, 0x00, 0x00, 0xAA CHR(p2000t_silence(cassette, &time_idx, P2000_BOB_GAP)); - CHR(p2000t_put_bytes(cassette, &time_idx, &unused, BLOCK_MARK, ARRAY_LENGTH(BLOCK_MARK))); + CHR(p2000t_put_bytes(cassette, &time_idx, &unused, BLOCK_MARK, std::size(BLOCK_MARK))); CHR(p2000t_silence(cassette, &time_idx, P2000_MARK_GAP)); // Insert data block diff --git a/src/lib/formats/pc_dsk.cpp b/src/lib/formats/pc_dsk.cpp index 75e05f87654..ef9efce3bf3 100644 --- a/src/lib/formats/pc_dsk.cpp +++ b/src/lib/formats/pc_dsk.cpp @@ -48,7 +48,7 @@ static floperr_t pc_dsk_compute_geometry(floppy_image_legacy *floppy, struct bas memset(geometry, 0, sizeof(*geometry)); size = floppy_image_size(floppy); - for (i = 0; i < ARRAY_LENGTH(disk_sizes); i++) + for (i = 0; i < std::size(disk_sizes); i++) { if (disk_sizes[i].image_size == size) { diff --git a/src/lib/util/chd.cpp b/src/lib/util/chd.cpp index 7d3e2c7c5c8..0de05849cdd 100644 --- a/src/lib/util/chd.cpp +++ b/src/lib/util/chd.cpp @@ -1626,7 +1626,7 @@ chd_error chd_file::codec_configure(chd_codec_type codec, int param, void *confi try { // find the codec and call its configuration - for (int codecnum = 0; codecnum < ARRAY_LENGTH(m_compression); codecnum++) + for (int codecnum = 0; codecnum < std::size(m_compression); codecnum++) if (m_compression[codecnum] == codec) { m_decompressor[codecnum]->configure(param, config); @@ -2453,7 +2453,7 @@ chd_error chd_file::open_common(bool writeable) void chd_file::create_open_common() { // verify the compression types and initialize the codecs - for (int decompnum = 0; decompnum < ARRAY_LENGTH(m_compression); decompnum++) + for (int decompnum = 0; decompnum < std::size(m_compression); decompnum++) { m_decompressor[decompnum] = chd_codec_list::new_decompressor(m_compression[decompnum], *this); if (m_decompressor[decompnum] == nullptr && m_compression[decompnum] != 0) @@ -3071,7 +3071,7 @@ void *chd_file_compressor::async_compress_hunk_static(void *param, int threadid) void chd_file_compressor::async_compress_hunk(work_item &item, int threadid) { // use our thread's codec - assert(threadid < ARRAY_LENGTH(m_codecs)); + assert(threadid < std::size(m_codecs)); item.m_codecs = m_codecs[threadid]; // compute CRC-16 and SHA-1 hashes @@ -3278,7 +3278,7 @@ uint64_t chd_file_compressor::hashmap::find(util::crc16_t crc16, util::sha1_t sh void chd_file_compressor::hashmap::add(uint64_t itemnum, util::crc16_t crc16, util::sha1_t sha1) { // add to the appropriate map - if (m_block_list->m_nextalloc == ARRAY_LENGTH(m_block_list->m_array)) + if (m_block_list->m_nextalloc == std::size(m_block_list->m_array)) m_block_list = new entry_block(m_block_list); entry_t *entry = &m_block_list->m_array[m_block_list->m_nextalloc++]; entry->m_itemnum = itemnum; diff --git a/src/lib/util/chdcodec.cpp b/src/lib/util/chdcodec.cpp index 7f6e0f018cd..4f5c23b3104 100644 --- a/src/lib/util/chdcodec.cpp +++ b/src/lib/util/chdcodec.cpp @@ -622,7 +622,7 @@ chd_compressor_group::chd_compressor_group(chd_file &chd, uint32_t compressor_li #endif { // verify the compression types and initialize the codecs - for (int codecnum = 0; codecnum < ARRAY_LENGTH(m_compressor); codecnum++) + for (int codecnum = 0; codecnum < std::size(m_compressor); codecnum++) { m_compressor[codecnum] = nullptr; if (compressor_list[codecnum] != CHD_CODEC_NONE) @@ -663,7 +663,7 @@ int8_t chd_compressor_group::find_best_compressor(const uint8_t *src, uint8_t *c // determine best compression technique complen = m_hunkbytes; int8_t compression = -1; - for (int codecnum = 0; codecnum < ARRAY_LENGTH(m_compressor); codecnum++) + for (int codecnum = 0; codecnum < std::size(m_compressor); codecnum++) if (m_compressor[codecnum] != nullptr) { // attempt to compress, swallowing errors diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp index 1149035045a..8cb8deea8f2 100644 --- a/src/lib/util/corefile.cpp +++ b/src/lib/util/corefile.cpp @@ -462,7 +462,7 @@ int core_text_file::getc() { // place the new character in the ring buffer m_back_char_head = 0; - m_back_char_tail = utf8_from_uchar(m_back_chars, ARRAY_LENGTH(m_back_chars), uchar); + m_back_char_tail = utf8_from_uchar(m_back_chars, std::size(m_back_chars), uchar); //assert(file->back_char_tail != -1); } } @@ -473,7 +473,7 @@ int core_text_file::getc() else { result = m_back_chars[m_back_char_head++]; - m_back_char_head %= ARRAY_LENGTH(m_back_chars); + m_back_char_head %= std::size(m_back_chars); } return result; @@ -488,7 +488,7 @@ int core_text_file::getc() int core_text_file::ungetc(int c) { m_back_chars[m_back_char_tail++] = char(c); - m_back_char_tail %= ARRAY_LENGTH(m_back_chars); + m_back_char_tail %= std::size(m_back_chars); return c; } @@ -577,7 +577,7 @@ int core_text_file::puts(std::string_view s) *pconvbuf++ = ch; // if we overflow, break into chunks - if (pconvbuf >= convbuf + ARRAY_LENGTH(convbuf) - 10) + if (pconvbuf >= convbuf + std::size(convbuf) - 10) { count += write(convbuf, pconvbuf - convbuf); pconvbuf = convbuf; diff --git a/src/lib/util/coretmpl.h b/src/lib/util/coretmpl.h index 438f7134fd2..18b64e7c0ff 100644 --- a/src/lib/util/coretmpl.h +++ b/src/lib/util/coretmpl.h @@ -535,6 +535,16 @@ std::basic_string_view buf_to_string_view(basic_ovectorstream struct equivalent_array_or_type { typedef T type; }; +template struct equivalent_array_or_type { typedef typename equivalent_array_or_type::type type[N]; }; +template using equivalent_array_or_type_t = typename equivalent_array_or_type::type; +template struct equivalent_array { }; +template struct equivalent_array { typedef equivalent_array_or_type_t type[N]; }; +template using equivalent_array_t = typename equivalent_array::type; +#define EQUIVALENT_ARRAY(a, T) util::equivalent_array_t > + + template using enable_enum_t = typename std::enable_if_t::value, typename std::underlying_type_t >; diff --git a/src/lib/util/flac.cpp b/src/lib/util/flac.cpp index 5b912b89279..13bf7aed8eb 100644 --- a/src/lib/util/flac.cpp +++ b/src/lib/util/flac.cpp @@ -10,7 +10,7 @@ #include "flac.h" -#include "osdcomm.h" +#include "corefile.h" #include #include @@ -129,7 +129,7 @@ bool flac_encoder::encode_interleaved(const int16_t *samples, uint32_t samples_p // process in batches of 2k samples FLAC__int32 converted_buffer[2048]; FLAC__int32 *dest = converted_buffer; - uint32_t cur_samples = (std::min)(ARRAY_LENGTH(converted_buffer) / num_channels, samples_per_channel); + uint32_t cur_samples = (std::min)(std::size(converted_buffer) / num_channels, samples_per_channel); // convert a buffers' worth for (uint32_t sampnum = 0; sampnum < cur_samples; sampnum++) @@ -162,7 +162,7 @@ bool flac_encoder::encode(int16_t *const *samples, uint32_t samples_per_channel, // process in batches of 2k samples FLAC__int32 converted_buffer[2048]; FLAC__int32 *dest = converted_buffer; - uint32_t cur_samples = (std::min)(ARRAY_LENGTH(converted_buffer) / num_channels, samples_per_channel); + uint32_t cur_samples = (std::min)(std::size(converted_buffer) / num_channels, samples_per_channel); // convert a buffers' worth for (uint32_t sampnum = 0; sampnum < cur_samples; sampnum++, srcindex++) @@ -464,7 +464,7 @@ bool flac_decoder::decode(int16_t **samples, uint32_t num_samples, bool swap_end { // make sure we don't have too many channels int chans = channels(); - if (chans > ARRAY_LENGTH(m_uncompressed_start)) + if (chans > std::size(m_uncompressed_start)) return false; // configure the uncompressed buffer diff --git a/src/lib/util/flac.h b/src/lib/util/flac.h index 2b814437cd5..ad667320b41 100644 --- a/src/lib/util/flac.h +++ b/src/lib/util/flac.h @@ -13,15 +13,17 @@ #pragma once -#include "corefile.h" - #include +#include + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** +namespace util { class core_file; } + // ======================> flac_encoder class flac_encoder @@ -64,18 +66,18 @@ private: // internal state FLAC__StreamEncoder * m_encoder; // actual encoder util::core_file * m_file; // output file - uint32_t m_compressed_offset; // current offset with the compressed stream + uint32_t m_compressed_offset; // current offset with the compressed stream FLAC__byte * m_compressed_start; // start of compressed data - uint32_t m_compressed_length; // length of the compressed stream - + uint32_t m_compressed_length; // length of the compressed stream + // parameters - uint32_t m_sample_rate; // sample rate - uint8_t m_channels; // number of channels - uint32_t m_block_size; // block size + uint32_t m_sample_rate; // sample rate + uint8_t m_channels; // number of channels + uint32_t m_block_size; // block size // header stripping bool m_strip_metadata; // strip the metadata? - uint32_t m_ignore_bytes; // how many bytes to ignore when writing + uint32_t m_ignore_bytes; // how many bytes to ignore when writing bool m_found_audio; // have we hit the audio yet? }; diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp index e1674a88fe1..bf1a4e45b20 100644 --- a/src/lib/util/options.cpp +++ b/src/lib/util/options.cpp @@ -12,7 +12,6 @@ #include "corefile.h" #include "corestr.h" -#include "osdcomm.h" #include #include @@ -732,7 +731,7 @@ void core_options::parse_ini_file(util::core_file &inifile, int priority, bool i // loop over lines in the file char buffer[4096]; - while (inifile.gets(buffer, ARRAY_LENGTH(buffer)) != nullptr) + while (inifile.gets(buffer, std::size(buffer)) != nullptr) { // find the extent of the name char *optionname; diff --git a/src/lib/util/plaparse.cpp b/src/lib/util/plaparse.cpp index 76fbbad6983..09b7724375e 100644 --- a/src/lib/util/plaparse.cpp +++ b/src/lib/util/plaparse.cpp @@ -12,8 +12,6 @@ #include "plaparse.h" -#include "osdcomm.h" - #include #include #include @@ -214,11 +212,11 @@ static bool process_field(jed_data *data, const uint8_t **src, const uint8_t *sr // find keyword char dest[0x10]; - memset(dest, 0, ARRAY_LENGTH(dest)); + memset(dest, 0, sizeof(dest)); const uint8_t *seek = *src; int destptr = 0; - while (seek < srcend && isalpha(*seek) && destptr < ARRAY_LENGTH(dest) - 1) + while (seek < srcend && isalpha(*seek) && destptr < sizeof(dest) - 1) { dest[destptr] = tolower(*seek); seek++; diff --git a/src/lib/util/png.cpp b/src/lib/util/png.cpp index 67e3366606b..0605206bbf1 100644 --- a/src/lib/util/png.cpp +++ b/src/lib/util/png.cpp @@ -123,7 +123,7 @@ private: png_error process(std::list const &idata) { // do some basic checks for unsupported images - if (!pnginfo.bit_depth || (ARRAY_LENGTH(samples) <= pnginfo.color_type) || !samples[pnginfo.color_type]) + if (!pnginfo.bit_depth || (std::size(samples) <= pnginfo.color_type) || !samples[pnginfo.color_type]) return png_error::UNSUPPORTED_FORMAT; // unknown colour format if ((0 != pnginfo.interlace_method) && (1 != pnginfo.interlace_method)) return png_error::UNSUPPORTED_FORMAT; // unknown interlace method @@ -474,7 +474,7 @@ public: // do some basic checks for unsupported images if ((8 > pnginfo.bit_depth) || (pnginfo.bit_depth % 8)) return png_error::UNSUPPORTED_FORMAT; // only do multiples of 8bps here - expand lower bit depth first - if ((ARRAY_LENGTH(samples) <= pnginfo.color_type) || !samples[pnginfo.color_type]) + if ((std::size(samples) <= pnginfo.color_type) || !samples[pnginfo.color_type]) return png_error::UNSUPPORTED_FORMAT; // unknown colour sample format if ((0 != pnginfo.interlace_method) && (1 != pnginfo.interlace_method)) return png_error::UNSUPPORTED_FORMAT; // unknown interlace method @@ -721,7 +721,7 @@ public: static png_error verify_header(core_file &fp) { - EQUIVALENT_ARRAY(PNG_SIGNATURE, std::uint8_t) signature; + std::uint8_t signature[sizeof(PNG_SIGNATURE)]; // read 8 bytes if (fp.read(signature, sizeof(signature)) != sizeof(signature)) diff --git a/src/lib/util/pool.cpp b/src/lib/util/pool.cpp index faf1de170ae..509c4f76984 100644 --- a/src/lib/util/pool.cpp +++ b/src/lib/util/pool.cpp @@ -14,8 +14,8 @@ #include "osdcomm.h" #include -#include #include +#include /*************************************************************************** @@ -35,7 +35,7 @@ struct objtype_entry { objtype_entry * next; - uint32_t type; + uint32_t type; const char * friendly; void (*destructor)(void *, size_t); }; @@ -296,7 +296,7 @@ void *pool_object_add_file_line(object_pool *pool, object_type _type, void *obje pool->blocklist = block; /* add all entries to the free list */ - for (entrynum = 0; entrynum < ARRAY_LENGTH(block->entry); entrynum++) + for (entrynum = 0; entrynum < std::size(block->entry); entrynum++) { block->entry[entrynum].next = pool->freelist; pool->freelist = &block->entry[entrynum]; @@ -615,8 +615,8 @@ bool test_memory_pools() /* some heavier stress tests */ for (i = 0; i < 512; i++) { - ptrs[i % ARRAY_LENGTH(ptrs)] = pool_realloc_lib(pool, - ptrs[i % ARRAY_LENGTH(ptrs)], rand() % 1000); + ptrs[i % std::size(ptrs)] = pool_realloc_lib(pool, + ptrs[i % std::size(ptrs)], rand() % 1000); } pool_free_lib(pool); diff --git a/src/lib/util/unicode.cpp b/src/lib/util/unicode.cpp index de6ef06e5c9..c4ee6c56cde 100644 --- a/src/lib/util/unicode.cpp +++ b/src/lib/util/unicode.cpp @@ -384,7 +384,7 @@ int utf8_from_uchar(char *utf8string, size_t count, char32_t uchar) std::string utf8_from_uchar(char32_t uchar) { char buffer[UTF8_CHAR_MAX]; - auto len = utf8_from_uchar(buffer, ARRAY_LENGTH(buffer), uchar); + auto len = utf8_from_uchar(buffer, std::size(buffer), uchar); return std::string(buffer, len); } diff --git a/src/mame/audio/meadows.cpp b/src/mame/audio/meadows.cpp index be547a23978..a62279cf982 100644 --- a/src/mame/audio/meadows.cpp +++ b/src/mame/audio/meadows.cpp @@ -37,9 +37,9 @@ SAMPLES_START_CB_MEMBER(meadows_state::meadows_sh_start) m_latched_0c01 = m_latched_0c02 = m_latched_0c03 = 0; m_samples->set_volume(0,0); - m_samples->start_raw(0,waveform,ARRAY_LENGTH(waveform),m_freq1,true); + m_samples->start_raw(0,waveform,std::size(waveform),m_freq1,true); m_samples->set_volume(1,0); - m_samples->start_raw(1,waveform,ARRAY_LENGTH(waveform),m_freq2,true); + m_samples->start_raw(1,waveform,std::size(waveform),m_freq2,true); } /************************************/ diff --git a/src/mame/audio/svis_snd.cpp b/src/mame/audio/svis_snd.cpp index ed80d459821..90c08fe84f8 100644 --- a/src/mame/audio/svis_snd.cpp +++ b/src/mame/audio/svis_snd.cpp @@ -62,7 +62,7 @@ void svision_sound_device::sound_stream_update(sound_stream &stream, std::vector { s32 lsum = 0; s32 rsum = 0; - for (int j = 0; j < ARRAY_LENGTH(m_channel); j++) + for (int j = 0; j < std::size(m_channel); j++) { CHANNEL &channel(m_channel[j]); if (channel.size != 0) diff --git a/src/mame/drivers/a2600.cpp b/src/mame/drivers/a2600.cpp index 4ccc07a7ab9..485a7607929 100644 --- a/src/mame/drivers/a2600.cpp +++ b/src/mame/drivers/a2600.cpp @@ -226,7 +226,7 @@ static const rectangle visarea[4] = { void a2600_base_state::a2600_tia_vsync_callback(uint16_t data) { - for ( int i = 0; i < ARRAY_LENGTH(supported_screen_heights); i++ ) + for ( int i = 0; i < std::size(supported_screen_heights); i++ ) { if ( data >= supported_screen_heights[i] - 3 && data <= supported_screen_heights[i] + 3 ) { @@ -241,7 +241,7 @@ void a2600_base_state::a2600_tia_vsync_callback(uint16_t data) void a2600_base_state::a2600_tia_vsync_callback_pal(uint16_t data) { - for ( int i = 0; i < ARRAY_LENGTH(supported_screen_heights); i++ ) + for ( int i = 0; i < std::size(supported_screen_heights); i++ ) { if ( data >= supported_screen_heights[i] - 3 && data <= supported_screen_heights[i] + 3 ) { diff --git a/src/mame/drivers/a7800.cpp b/src/mame/drivers/a7800.cpp index 2db5ebc4376..e8253127cd4 100644 --- a/src/mame/drivers/a7800.cpp +++ b/src/mame/drivers/a7800.cpp @@ -1387,7 +1387,7 @@ void a7800_state::a7800_ntsc(machine_config &config) m_screen->set_screen_update("maria", FUNC(atari_maria_device::screen_update)); m_screen->set_palette("palette"); - PALETTE(config, "palette", FUNC(a7800_state::a7800_palette), ARRAY_LENGTH(a7800_colors)); + PALETTE(config, "palette", FUNC(a7800_state::a7800_palette), std::size(a7800_colors)); ATARI_MARIA(config, m_maria, 0); m_maria->set_dmacpu_tag(m_maincpu); diff --git a/src/mame/drivers/apexc.cpp b/src/mame/drivers/apexc.cpp index 407b2615360..36b6ddcb4e7 100644 --- a/src/mame/drivers/apexc.cpp +++ b/src/mame/drivers/apexc.cpp @@ -377,7 +377,7 @@ void apexc_state::apexc(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_apexc); - PALETTE(config, m_palette, FUNC(apexc_state::apexc_palette), ARRAY_LENGTH(palette_table)); + PALETTE(config, m_palette, FUNC(apexc_state::apexc_palette), std::size(palette_table)); APEXC_CYLINDER(config, m_cylinder); APEXC_TAPE_PUNCHER(config, m_tape_puncher); diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index 16a910bab3c..7c196b98294 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -929,7 +929,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(apple2gs_state::ay3600_repeat) u8 apple2gs_state::adb_read_memory(u32 address) { - if (address < ARRAY_LENGTH(m_adb_memory)) + if (address < std::size(m_adb_memory)) return m_adb_memory[address]; else return 0x00; @@ -937,7 +937,7 @@ u8 apple2gs_state::adb_read_memory(u32 address) void apple2gs_state::adb_write_memory(u32 address, u8 data) { - if (address < ARRAY_LENGTH(m_adb_memory)) + if (address < std::size(m_adb_memory)) m_adb_memory[address] = data; } @@ -953,7 +953,7 @@ void apple2gs_state::adb_set_config(u8 b1, u8 b2, u8 b3) void apple2gs_state::adb_post_response(const u8 *bytes, size_t length) { - assert(length < ARRAY_LENGTH(m_adb_response_bytes)); + assert(length < std::size(m_adb_response_bytes)); memcpy(m_adb_response_bytes, bytes, length); m_adb_state = ADBSTATE_INRESPONSE; @@ -1261,7 +1261,7 @@ void apple2gs_state::adb_write_datareg(u8 data) break; case ADBSTATE_INCOMMAND: - assert(m_adb_command_pos < ARRAY_LENGTH(m_adb_command_bytes)); + assert(m_adb_command_pos < std::size(m_adb_command_bytes)); // printf("ADB param %02x\n", data); m_adb_command_bytes[m_adb_command_pos++] = data; break; diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index 157438a3e3e..388d1084cd8 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -491,7 +491,7 @@ void arcadia_state::arcadia(machine_config &config) m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_arcadia); - PALETTE(config, m_palette, FUNC(arcadia_state::palette_init), ARRAY_LENGTH(arcadia_palette), 8); + PALETTE(config, m_palette, FUNC(arcadia_state::palette_init), std::size(arcadia_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -795,10 +795,10 @@ void arcadia_state::init_arcadia() }; #if 1 FILE *f = fopen("chartest.bin","wb"); - fwrite(prog, ARRAY_LENGTH(prog), sizeof(prog[0]), f); + fwrite(prog, std::size(prog), sizeof(prog[0]), f); fclose(f); #endif - for (int i = 0; i < ARRAY_LENGTH(prog); i++) rom[i] = prog[i]; + for (int i = 0; i < std::size(prog); i++) rom[i] = prog[i]; } #endif diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp index 29f28455d75..08ca8a2705f 100644 --- a/src/mame/drivers/atari400.cpp +++ b/src/mame/drivers/atari400.cpp @@ -1119,7 +1119,7 @@ static const uint8_t atari_colors[256*3] = /* Initialise the palette */ void a400_state::a400_palette(palette_device &palette) const { - for (unsigned i = 0; i < ARRAY_LENGTH(atari_colors) / 3; i++) + for (unsigned i = 0; i < std::size(atari_colors) / 3; i++) palette.set_pen_color(i, atari_colors[i * 3], atari_colors[i * 3 + 1], atari_colors[i * 3 + 2]); } /****************************************************************** @@ -2103,7 +2103,7 @@ void a400_state::atari_common_nodac(machine_config &config) m_screen->set_screen_update("antic", FUNC(antic_device::screen_update)); m_screen->set_palette("palette"); - PALETTE(config, "palette", FUNC(a400_state::a400_palette), ARRAY_LENGTH(atari_colors) / 3); + PALETTE(config, "palette", FUNC(a400_state::a400_palette), std::size(atari_colors) / 3); PIA6821(config, m_pia, 0); m_pia->readpa_handler().set_ioport("djoy_0_1"); diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp index 17f434fce48..3033a5f6bec 100644 --- a/src/mame/drivers/attache.cpp +++ b/src/mame/drivers/attache.cpp @@ -345,8 +345,8 @@ uint32_t attache_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma for(uint8_t x=0;x<(bitmap.width()-1)/8;x++) // columns { - assert(((y*128)+x) >= 0 && ((y*128)+x) < ARRAY_LENGTH(m_char_ram)); - assert(((vy*128)+x) >= 0 && ((vy*128)+x) < ARRAY_LENGTH(m_char_ram)); + assert(((y*128)+x) >= 0 && ((y*128)+x) < std::size(m_char_ram)); + assert(((vy*128)+x) >= 0 && ((vy*128)+x) < std::size(m_char_ram)); uint8_t ch = m_char_ram[(vy*128)+x]; pen_t fg = m_palette->pen(m_attr_ram[(vy*128)+x] & 0x08 ? 2 : 1); // brightness if(m_attr_ram[(vy*128)+x] & 0x10) // double-size diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp index d615f34538d..b39561cde6e 100644 --- a/src/mame/drivers/bmcbowl.cpp +++ b/src/mame/drivers/bmcbowl.cpp @@ -312,9 +312,9 @@ void bmcbowl_state::machine_reset() for (int i = 0; i < m_stats_ram.bytes()/2; i++) m_stats_ram[i] = 0xffff; - init_stats(bmc_nv1,ARRAY_LENGTH(bmc_nv1),0); - init_stats(bmc_nv2,ARRAY_LENGTH(bmc_nv2),0x3b0/2); - init_stats(bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2/2); + init_stats(bmc_nv1,std::size(bmc_nv1),0); + init_stats(bmc_nv2,std::size(bmc_nv2),0x3b0/2); + init_stats(bmc_nv3,std::size(bmc_nv3),0xfe2/2); #endif } diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp index b0311905988..ceeac8df9f8 100644 --- a/src/mame/drivers/busicom.cpp +++ b/src/mame/drivers/busicom.cpp @@ -81,9 +81,9 @@ void busicom_state::printer_w(uint8_t data) if (BIT(data, 3)) { - for (u8 j = 0; j < (ARRAY_LENGTH(m_printer_line) - 1); j++) + for (u8 j = 0; j < (std::size(m_printer_line) - 1); j++) std::copy(std::begin(m_printer_line[j + 1]), std::end(m_printer_line[j + 1]), std::begin(m_printer_line[j])); - std::copy_n(&m_printer_line_color[1], ARRAY_LENGTH(m_printer_line_color) - 1, &m_printer_line_color[0]); + std::copy_n(&m_printer_line_color[1], std::size(m_printer_line_color) - 1, &m_printer_line_color[0]); std::fill(std::begin(m_printer_line[10]), std::end(m_printer_line[10]), 0); m_printer_line_color[10] = 0; @@ -226,7 +226,7 @@ void busicom_state::machine_reset() m_keyboard_shifter = 0; m_printer_shifter = 0; - for (int i = 0; i < ARRAY_LENGTH(m_printer_line); i++) + for (int i = 0; i < std::size(m_printer_line); i++) std::fill(std::begin(m_printer_line[i]), std::end(m_printer_line[i]), 0); std::fill(std::begin(m_printer_line_color), std::end(m_printer_line_color), 0); } diff --git a/src/mame/drivers/clickstart.cpp b/src/mame/drivers/clickstart.cpp index e46cc3d3d7d..81576749176 100644 --- a/src/mame/drivers/clickstart.cpp +++ b/src/mame/drivers/clickstart.cpp @@ -186,7 +186,7 @@ void clickstart_state::machine_reset() m_mouse_dx = 0; m_mouse_dy = 0; - memset(m_uart_tx_fifo, 0, ARRAY_LENGTH(m_uart_tx_fifo)); + std::fill(std::begin(m_uart_tx_fifo), std::end(m_uart_tx_fifo), 0); m_uart_tx_fifo_start = 0; m_uart_tx_fifo_end = 0; m_uart_tx_fifo_count = 0; @@ -219,19 +219,19 @@ void clickstart_state::handle_uart_tx() return; m_maincpu->uart_rx(m_uart_tx_fifo[m_uart_tx_fifo_start]); - m_uart_tx_fifo_start = (m_uart_tx_fifo_start + 1) % ARRAY_LENGTH(m_uart_tx_fifo); + m_uart_tx_fifo_start = (m_uart_tx_fifo_start + 1) % std::size(m_uart_tx_fifo); m_uart_tx_fifo_count--; } void clickstart_state::uart_tx_fifo_push(uint8_t value) { - if (m_uart_tx_fifo_count >= ARRAY_LENGTH(m_uart_tx_fifo)) + if (m_uart_tx_fifo_count >= std::size(m_uart_tx_fifo)) { logerror("Warning: Trying to push too much data onto the mouse Tx FIFO, data will be lost.\n"); } m_uart_tx_fifo[m_uart_tx_fifo_end] = value; - m_uart_tx_fifo_end = (m_uart_tx_fifo_end + 1) % ARRAY_LENGTH(m_uart_tx_fifo); + m_uart_tx_fifo_end = (m_uart_tx_fifo_end + 1) % std::size(m_uart_tx_fifo); m_uart_tx_fifo_count++; } diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp index efae8655fcb..345a426a83c 100644 --- a/src/mame/drivers/dai.cpp +++ b/src/mame/drivers/dai.cpp @@ -210,7 +210,7 @@ void dai_state::dai(machine_config &config) screen.set_palette(m_palette); GFXDECODE(config, "gfxdecode", m_palette, gfx_dai); - PALETTE(config, m_palette, FUNC(dai_state::dai_palette), ARRAY_LENGTH(s_palette)); + PALETTE(config, m_palette, FUNC(dai_state::dai_palette), std::size(s_palette)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index a72fd82bdae..72f1b38e2a1 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -9701,7 +9701,7 @@ MACHINE_RESET_MEMBER(ddenlovr_state,ddenlovr) m_quiz365_protection[0] = 0; m_quiz365_protection[1] = 0; - memset(m_palram, 0, ARRAY_LENGTH(m_palram)); + std::fill(std::begin(m_palram), std::end(m_palram), 0); m_blitter_irq_handler(1); } diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp index 60cb20ed0dc..24d1b99c805 100644 --- a/src/mame/drivers/dgn_beta.cpp +++ b/src/mame/drivers/dgn_beta.cpp @@ -320,7 +320,7 @@ void dgn_beta_state::dgnbeta(machine_config &config) screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); GFXDECODE(config, "gfxdecode", m_palette, gfx_dgnbeta); - PALETTE(config, m_palette, FUNC(dgn_beta_state::dgn_beta_palette), ARRAY_LENGTH(dgnbeta_pens)); + PALETTE(config, m_palette, FUNC(dgn_beta_state::dgn_beta_palette), std::size(dgnbeta_pens)); /* PIA 0 at $FC20-$FC23 I46 */ PIA6821(config, m_pia_0, 0); diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index 212797eb82e..e6c6cdff1d5 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -4162,7 +4162,7 @@ MACHINE_RESET_MEMBER(dynax_state,dynax) m_gekisha_val[0] = 0; m_gekisha_val[1] = 0; - memset(m_palette_ram, 0, ARRAY_LENGTH(m_palette_ram)); + std::fill(std::begin(m_palette_ram), std::end(m_palette_ram), 0); } MACHINE_START_MEMBER(dynax_state,hjingi) diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp index a81cdfd43eb..acd9af219a0 100644 --- a/src/mame/drivers/fccpu30.cpp +++ b/src/mame/drivers/fccpu30.cpp @@ -428,8 +428,8 @@ uint32_t cpu30_state::bootvect_r(offs_t offset){ void cpu30_state::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask){ LOG("%s\n", FUNCNAME); - m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; - m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); + m_sysram[offset % std::size(m_sysram)] &= ~mem_mask; + m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask); m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. } diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp index 53b1360858f..c323f210f87 100644 --- a/src/mame/drivers/flicker.cpp +++ b/src/mame/drivers/flicker.cpp @@ -306,7 +306,7 @@ WRITE_LINE_MEMBER(flicker_state::cm_ram1_w) { m_mux_col = m_ram0_output; m_digits[m_mux_col] = led_digits[m_rom0_output]; - if (ARRAY_LENGTH(lamp_matrix) > m_mux_col) + if (std::size(lamp_matrix) > m_mux_col) { if (lamp_matrix[m_mux_col][0]) output().set_value(lamp_matrix[m_mux_col][0], BIT(m_rom1_output, 0)); diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp index d3ba1e8c5e5..bd0ebd5465f 100644 --- a/src/mame/drivers/funworld.cpp +++ b/src/mame/drivers/funworld.cpp @@ -8402,7 +8402,7 @@ void chinatow_state::init_rcdino4() decrypt_rcdino4(rom, memregion("maincpu")->bytes(), memregion("gfx1")->base(), memregion("gfx1")->bytes(), memregion( "gfx1" )->base()); int j = 0; - for (int i = 0x40; i < (0x40 + ARRAY_LENGTH(rcdino4_keys40));) + for (int i = 0x40; i < (0x40 + std::size(rcdino4_keys40));) { uint8_t key = rcdino4_keys40[i - 0x40]; @@ -8492,10 +8492,10 @@ void chinatow_state::init_rcdino4() j &= 0xff; - do {} while (((++i - 0x81) < ARRAY_LENGTH(rcdino4_keys80)) + do {} while (((++i - 0x81) < std::size(rcdino4_keys80)) && !rcdino4_keys80[i - 0x81]); - if ((i - 0x81) == ARRAY_LENGTH(rcdino4_keys80)) + if ((i - 0x81) == std::size(rcdino4_keys80)) { break; } diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp index 92e99b89ea9..44f57d7d88a 100644 --- a/src/mame/drivers/gaiden.cpp +++ b/src/mame/drivers/gaiden.cpp @@ -194,7 +194,7 @@ void gaiden_state::wildfang_protection_w(offs_t offset, uint16_t data, uint16_t break; case 0x20: /* low 4 bits of jump code */ m_jumpcode |= data & 0x0f; - if (m_jumpcode >= ARRAY_LENGTH(wildfang_jumppoints)) + if (m_jumpcode >= std::size(wildfang_jumppoints)) { logerror("unknown jumpcode %02x\n", m_jumpcode); m_jumpcode = 0; diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp index 469e7fb3bc7..8d398756c38 100644 --- a/src/mame/drivers/gameking.cpp +++ b/src/mame/drivers/gameking.cpp @@ -299,7 +299,7 @@ void gameking_state::gameking(machine_config &config) screen.set_screen_update(FUNC(gameking_state::screen_update_gameking)); screen.set_palette(m_palette); - PALETTE(config, m_palette, FUNC(gameking_state::gameking_palette), ARRAY_LENGTH(gameking_pens)); + PALETTE(config, m_palette, FUNC(gameking_state::gameking_palette), std::size(gameking_pens)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index 98701148912..e2fc3927e64 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -727,7 +727,7 @@ uint32_t gba_state::gba_io_r(offs_t offset, uint32_t mem_mask) break; } -// assert_always(offset < ARRAY_LENGTH(reg_names) / 2, "Not enough register names in gba_state"); +// assert_always(offset < std::size(reg_names) / 2, "Not enough register names in gba_state"); if (ACCESSING_BITS_0_15) { @@ -749,7 +749,7 @@ void gba_state::gba_io_w(offs_t offset, uint32_t data, uint32_t mem_mask) COMBINE_DATA(&m_regs[offset]); -// assert_always(offset < ARRAY_LENGTH(reg_names) / 2, "Not enough register names in gba_state"); +// assert_always(offset < std::size(reg_names) / 2, "Not enough register names in gba_state"); if (ACCESSING_BITS_0_15) { diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp index c3fdc7e3661..57e9c0e3624 100644 --- a/src/mame/drivers/gimix.cpp +++ b/src/mame/drivers/gimix.cpp @@ -721,7 +721,7 @@ offs_t gimix_state::os9_dasm_override(std::ostream &stream, offs_t pc, const uti if ((opcodes.r8(pc) == 0x10) && (opcodes.r8(pc+1) == 0x3F)) { call = opcodes.r8(pc+2); - if ((call < ARRAY_LENGTH(os9syscalls)) && (os9syscalls[call] != nullptr)) + if ((call < std::size(os9syscalls)) && (os9syscalls[call] != nullptr)) { util::stream_format(stream, "OS9 %s", os9syscalls[call]); result = 3; diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp index cd798155887..52a84db50eb 100644 --- a/src/mame/drivers/gmaster.cpp +++ b/src/mame/drivers/gmaster.cpp @@ -135,7 +135,7 @@ void gmaster_state::gmaster_io_w(offs_t offset, uint8_t data) break; case 1: m_video.delayed = false; - if (m_video.x < ARRAY_LENGTH(m_video.pixels[0])) // continental galaxy flutlicht + if (m_video.x < std::size(m_video.pixels[0])) // continental galaxy flutlicht { m_video.pixels[m_video.y][m_video.x] = data; } @@ -280,9 +280,9 @@ void gmaster_state::gmaster_palette(palette_device &palette) const uint32_t gmaster_state::screen_update_gmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - for (int y = 0; y < ARRAY_LENGTH(m_video.pixels); y++) + for (int y = 0; y < std::size(m_video.pixels); y++) { - for (int x = 0; x < ARRAY_LENGTH(m_video.pixels[0]); x++) + for (int x = 0; x < std::size(m_video.pixels[0]); x++) { uint8_t const d = m_video.pixels[y][x]; @@ -339,7 +339,7 @@ void gmaster_state::gmaster(machine_config &config) screen.set_screen_update(FUNC(gmaster_state::screen_update_gmaster)); screen.set_palette("palette"); - PALETTE(config, "palette", FUNC(gmaster_state::gmaster_palette), ARRAY_LENGTH(gmaster_pens)); + PALETTE(config, "palette", FUNC(gmaster_state::gmaster_palette), std::size(gmaster_pens)); SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(0, "mono", 0.50); diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp index 714b404274d..e3fa57afd90 100644 --- a/src/mame/drivers/gunpey.cpp +++ b/src/mame/drivers/gunpey.cpp @@ -712,7 +712,7 @@ void state_s::set_o(unsigned char v) assert(oy < 256); unsigned char a = v; - for (int i = 0; i < ARRAY_LENGTH(colour); i++) + for (int i = 0; i < std::size(colour); i++) { unsigned char b = colour[i]; colour[i] = a; diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp index b9f3b502e50..fe4bb280584 100644 --- a/src/mame/drivers/hk68v10.cpp +++ b/src/mame/drivers/hk68v10.cpp @@ -281,8 +281,8 @@ uint16_t hk68v10_state::bootvect_r(offs_t offset){ void hk68v10_state::bootvect_w(offs_t offset, uint16_t data, uint16_t mem_mask){ LOG (("%s offset %08x, mask %08x, data %04x\n", FUNCNAME, offset, mem_mask, data)); - m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; - m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); + m_sysram[offset % std::size(m_sysram)] &= ~mem_mask; + m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask); m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. } diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp index 91c35a909ec..3de88cb8ee7 100644 --- a/src/mame/drivers/homelab.cpp +++ b/src/mame/drivers/homelab.cpp @@ -690,7 +690,7 @@ QUICKLOAD_LOAD_MEMBER(homelab_state::quickload_cb) while((ch = image.fgetc())) { - if (i >= (ARRAY_LENGTH(pgmname) - 1)) + if (i >= (std::size(pgmname) - 1)) { image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File name too long"); image.message(" File name too long"); @@ -731,7 +731,7 @@ QUICKLOAD_LOAD_MEMBER(homelab_state::quickload_cb) if (image.fread(&ch, 1) != 1) { char message[512]; - snprintf(message, ARRAY_LENGTH(message), "%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); + snprintf(message, std::size(message), "%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); image.seterror(IMAGE_ERROR_INVALIDIMAGE, message); image.message("%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); return image_init_result::FAIL; diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp index 96e26a2abd4..ee3c60c0c2f 100644 --- a/src/mame/drivers/jalmah.cpp +++ b/src/mame/drivers/jalmah.cpp @@ -1509,7 +1509,7 @@ uint16_t jalmah_state::urashima_mcu_r() int res; res = resp[m_respcount++]; - if (m_respcount >= ARRAY_LENGTH(resp)) m_respcount = 0; + if (m_respcount >= std::size(resp)) m_respcount = 0; // logerror("%s: mcu_r %02x\n",machine().dscribe_context(),res); @@ -1568,7 +1568,7 @@ uint16_t jalmah_state::daireika_mcu_r() int res; res = resp[m_respcount++]; - if (m_respcount >= ARRAY_LENGTH(resp)) m_respcount = 0; + if (m_respcount >= std::size(resp)) m_respcount = 0; // logerror("%s: mcu_r %02x\n",machine().describe_context(),res); @@ -1636,7 +1636,7 @@ uint16_t jalmah_state::mjzoomin_mcu_r() int res; res = resp[m_respcount++]; - if (m_respcount >= ARRAY_LENGTH(resp)) m_respcount = 0; + if (m_respcount >= std::size(resp)) m_respcount = 0; // logerror("%04x: mcu_r %02x\n",machine().describe_context(),res); @@ -1689,7 +1689,7 @@ uint16_t jalmah_state::kakumei_mcu_r() int res; res = resp[m_respcount++]; - if (m_respcount >= ARRAY_LENGTH(resp)) m_respcount = 0; + if (m_respcount >= std::size(resp)) m_respcount = 0; // popmessage("%s: mcu_r %02x",machine().describe_context(),res); @@ -1710,7 +1710,7 @@ uint16_t jalmah_state::suchiesp_mcu_r() int res; res = resp[m_respcount++]; - if (m_respcount >= ARRAY_LENGTH(resp)) m_respcount = 0; + if (m_respcount >= std::size(resp)) m_respcount = 0; // popmessage("%s: mcu_r %02x",machine().describe_context(),res); diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp index f17caa47a11..0f767796d9d 100644 --- a/src/mame/drivers/laser3k.cpp +++ b/src/mame/drivers/laser3k.cpp @@ -967,7 +967,7 @@ void laser3k_state::laser3k(machine_config &config) m_screen->set_screen_update(FUNC(laser3k_state::screen_update)); m_screen->set_palette("palette"); - PALETTE(config, "palette", FUNC(laser3k_state::laser3k_palette), ARRAY_LENGTH(laser3k_pens)); + PALETTE(config, "palette", FUNC(laser3k_state::laser3k_palette), std::size(laser3k_pens)); /* memory banking */ ADDRESS_MAP_BANK(config, "bank0").set_map(&laser3k_state::banks_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000); diff --git a/src/mame/drivers/ldplayer.cpp b/src/mame/drivers/ldplayer.cpp index 6ff2df2b9c2..e0d92cf5997 100644 --- a/src/mame/drivers/ldplayer.cpp +++ b/src/mame/drivers/ldplayer.cpp @@ -345,8 +345,8 @@ void ldplayer_state::machine_reset() void pr8210_state::add_command(uint8_t command) { - m_command_buffer[m_command_buffer_in++ % ARRAY_LENGTH(m_command_buffer)] = (command & 0x1f) | 0x20; - m_command_buffer[m_command_buffer_in++ % ARRAY_LENGTH(m_command_buffer)] = 0x00 | 0x20; + m_command_buffer[m_command_buffer_in++ % std::size(m_command_buffer)] = (command & 0x1f) | 0x20; + m_command_buffer[m_command_buffer_in++ % std::size(m_command_buffer)] = 0x00 | 0x20; } @@ -376,7 +376,7 @@ void pr8210_state::device_timer(emu_timer &timer, device_timer_id id, int param, // if we're out of bits, queue up the next command else if (bitsleft == 0 && m_command_buffer_in != m_command_buffer_out) { - data = m_command_buffer[m_command_buffer_out++ % ARRAY_LENGTH(m_command_buffer)]; + data = m_command_buffer[m_command_buffer_out++ % std::size(m_command_buffer)]; bitsleft = 12; } m_bit_timer->adjust(duration, (bitsleft << 16) | data); @@ -416,7 +416,7 @@ void pr8210_state::execute_command(int command) { case CMD_SCAN_REVERSE: if (m_command_buffer_in == m_command_buffer_out || - m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) + m_command_buffer_in == (m_command_buffer_out + 1) % std::size(m_command_buffer)) { add_command(0x1c); m_playing = true; @@ -435,7 +435,7 @@ void pr8210_state::execute_command(int command) case CMD_FAST_REVERSE: if (m_command_buffer_in == m_command_buffer_out || - m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) + m_command_buffer_in == (m_command_buffer_out + 1) % std::size(m_command_buffer)) { add_command(0x0c); m_playing = true; @@ -444,7 +444,7 @@ void pr8210_state::execute_command(int command) case CMD_SCAN_FORWARD: if (m_command_buffer_in == m_command_buffer_out || - m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) + m_command_buffer_in == (m_command_buffer_out + 1) % std::size(m_command_buffer)) { add_command(0x08); m_playing = true; @@ -463,7 +463,7 @@ void pr8210_state::execute_command(int command) case CMD_FAST_FORWARD: if (m_command_buffer_in == m_command_buffer_out || - m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) + m_command_buffer_in == (m_command_buffer_out + 1) % std::size(m_command_buffer)) { add_command(0x10); m_playing = true; diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp index d7463e23fd7..75e16f938ef 100644 --- a/src/mame/drivers/liberate.cpp +++ b/src/mame/drivers/liberate.cpp @@ -733,7 +733,7 @@ MACHINE_START_MEMBER(liberate_state,liberate) MACHINE_RESET_MEMBER(liberate_state,liberate) { - memset(m_io_ram, 0, ARRAY_LENGTH(m_io_ram)); + std::fill(std::begin(m_io_ram), std::end(m_io_ram), 0); m_background_disable = 0; m_background_color = 0; diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp index 67f19c0392d..79488e4b86a 100644 --- a/src/mame/drivers/lviv.cpp +++ b/src/mame/drivers/lviv.cpp @@ -453,7 +453,7 @@ void lviv_state::lviv(machine_config &config) m_screen->set_screen_update(FUNC(lviv_state::screen_update)); m_screen->set_palette(m_palette); - PALETTE(config, m_palette, FUNC(lviv_state::lviv_palette), ARRAY_LENGTH(s_palette)); + PALETTE(config, m_palette, FUNC(lviv_state::lviv_palette), std::size(s_palette)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index d6091fecb56..9c91f7eca59 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -950,7 +950,7 @@ void mediagx_state::report_speedups() void mediagx_state::install_speedups(const speedup_entry *entries, int count) { - assert(count < ARRAY_LENGTH(s_speedup_handlers)); + assert(count < std::size(s_speedup_handlers)); m_speedup_table = entries; m_speedup_count = count; @@ -984,7 +984,7 @@ void mediagx_state::init_a51site4() init_mediagx(); #if SPEEDUP_HACKS - install_speedups(a51site4_speedups, ARRAY_LENGTH(a51site4_speedups)); + install_speedups(a51site4_speedups, std::size(a51site4_speedups)); #endif } diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp index ee0b47a755a..741ba1106b2 100644 --- a/src/mame/drivers/mvme147.cpp +++ b/src/mame/drivers/mvme147.cpp @@ -290,8 +290,8 @@ uint32_t mvme147_state::bootvect_r(offs_t offset){ } void mvme147_state::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask){ - m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; - m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); + m_sysram[offset % std::size(m_sysram)] &= ~mem_mask; + m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask); m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. } diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index fcfa62aae28..938fa174e6a 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -297,8 +297,8 @@ void nc_state::nc_refresh_memory_bank_config(int bank) int mem_bank; char bank1[20]; char bank5[20]; - snprintf(bank1,ARRAY_LENGTH(bank1),"bank%d",bank+1); - snprintf(bank5,ARRAY_LENGTH(bank5),"bank%d",bank+5); + snprintf(bank1,std::size(bank1),"bank%d",bank+1); + snprintf(bank5,std::size(bank5),"bank%d",bank+5); mem_type = (m_memory_config[bank]>>6) & 0x03; mem_bank = m_memory_config[bank] & 0x03f; diff --git a/src/mame/drivers/news_38xx.cpp b/src/mame/drivers/news_38xx.cpp index cf4868a30dc..e0cedd2bb04 100644 --- a/src/mame/drivers/news_38xx.cpp +++ b/src/mame/drivers/news_38xx.cpp @@ -273,7 +273,7 @@ void news_38xx_state::int_check() static int const int_line[] = { INPUT_LINE_IRQ7, INPUT_LINE_IRQ4, INPUT_LINE_IRQ3 }; static u8 const int_mask[] = { 0x80, 0x78, 0x07 }; - for (unsigned i = 0; i < ARRAY_LENGTH(m_int_state); i++) + for (unsigned i = 0; i < std::size(m_int_state); i++) { bool const int_state = m_intst & m_inten & int_mask[i]; diff --git a/src/mame/drivers/news_68k.cpp b/src/mame/drivers/news_68k.cpp index 961f9f2beea..5b49e6d93e0 100644 --- a/src/mame/drivers/news_68k.cpp +++ b/src/mame/drivers/news_68k.cpp @@ -277,7 +277,7 @@ void news_68k_state::int_check() static int const int_line[] = { INPUT_LINE_IRQ3, INPUT_LINE_IRQ4 }; static u8 const int_mask[] = { 0x71, 0x8e }; - for (unsigned i = 0; i < ARRAY_LENGTH(m_int_state); i++) + for (unsigned i = 0; i < std::size(m_int_state); i++) { bool const int_state = m_intst & int_mask[i]; diff --git a/src/mame/drivers/news_r3k.cpp b/src/mame/drivers/news_r3k.cpp index 9cd7060e20a..1d77742cb51 100644 --- a/src/mame/drivers/news_r3k.cpp +++ b/src/mame/drivers/news_r3k.cpp @@ -333,7 +333,7 @@ void news_r3k_state::int_check() static int const int_line[] = { INPUT_LINE_IRQ0, INPUT_LINE_IRQ1, INPUT_LINE_IRQ2, INPUT_LINE_IRQ4 }; static u16 const int_mask[] = { 0x001f, 0x00e0, 0x1f00, 0xe000 }; - for (unsigned i = 0; i < ARRAY_LENGTH(m_int_state); i++) + for (unsigned i = 0; i < std::size(m_int_state); i++) { bool const int_state = m_intst & m_inten & int_mask[i]; diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 99ad00d2a4a..e50a6a5f9e2 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -780,7 +780,7 @@ void nightgal_state::machine_reset() m_z80_latch = 0; m_mux_data = 0; - memset(m_blit_raw_data, 0, ARRAY_LENGTH(m_blit_raw_data)); + std::fill(std::begin(m_blit_raw_data), std::end(m_blit_raw_data), 0); } void nightgal_state::royalqn(machine_config &config) diff --git a/src/mame/drivers/palm_dbg.hxx b/src/mame/drivers/palm_dbg.hxx index 13d4a18e0ac..ab7ee3625a2 100644 --- a/src/mame/drivers/palm_dbg.hxx +++ b/src/mame/drivers/palm_dbg.hxx @@ -1154,7 +1154,7 @@ static const char *lookup_trap(uint16_t opcode) int i; - for (i = 0; i < ARRAY_LENGTH(traps); i++) + for (i = 0; i < std::size(traps); i++) { if (traps[i].trap == opcode) return traps[i].name; diff --git a/src/mame/drivers/pdp1.cpp b/src/mame/drivers/pdp1.cpp index 384c86596b9..504bbbc7d62 100644 --- a/src/mame/drivers/pdp1.cpp +++ b/src/mame/drivers/pdp1.cpp @@ -1825,7 +1825,7 @@ void pdp1_state::pdp1(machine_config &config) PDP1_CYLINDER(config, m_parallel_drum); GFXDECODE(config, m_gfxdecode, m_palette, gfx_pdp1); - PALETTE(config, m_palette, FUNC(pdp1_state::pdp1_palette), total_colors_needed + ARRAY_LENGTH(pdp1_pens), total_colors_needed); + PALETTE(config, m_palette, FUNC(pdp1_state::pdp1_palette), total_colors_needed + std::size(pdp1_pens), total_colors_needed); } /* diff --git a/src/mame/drivers/psikyosh.cpp b/src/mame/drivers/psikyosh.cpp index d051260f434..3f7283040a7 100644 --- a/src/mame/drivers/psikyosh.cpp +++ b/src/mame/drivers/psikyosh.cpp @@ -432,12 +432,12 @@ P1KEY11 29|30 P2KEY11 // HACK: read IPT_START1 from "INPUTS" to avoid listing it twice or having two independent STARTs listed u32 const start_depressed = ~value & 0x01000000; - keys |= start_depressed ? 1 << (ARRAY_LENGTH(key_codes) - 1) : 0; // and bung it in at the end + keys |= start_depressed ? 1 << (std::size(key_codes) - 1) : 0; // and bung it in at the end value |= 0xFFFF0000; // set top word do { // since we can't handle multiple keys, just return the first one depressed - if ((keys & which_key) && (count < ARRAY_LENGTH(key_codes))) + if ((keys & which_key) && (count < std::size(key_codes))) { value &= ~((u32)(key_codes[count]) << 16); // mask in selected word as IP_ACTIVE_LOW break; diff --git a/src/mame/drivers/psion5.cpp b/src/mame/drivers/psion5.cpp index 9cd4b7413a8..60e4caab063 100644 --- a/src/mame/drivers/psion5.cpp +++ b/src/mame/drivers/psion5.cpp @@ -88,7 +88,7 @@ void psion5mx_state::machine_start() void psion5mx_state::machine_reset() { - memset(m_memcfg, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_memcfg)); + std::fill(std::begin(m_memcfg), std::end(m_memcfg), 0); m_dramcfg = 0; m_timers[0]->adjust(attotime::never); @@ -107,7 +107,7 @@ void psion5mx_state::machine_reset() m_ssi_read_counter = 0; m_kbd_scan = 0; - memset(m_ports, 0, ARRAY_LENGTH(m_ports)); + std::fill(std::begin(m_ports), std::end(m_ports), 0); m_periodic->adjust(attotime::from_hz(64), 0, attotime::from_hz(64)); diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp index 55955c765e3..ed4e35742eb 100644 --- a/src/mame/drivers/seibuspi.cpp +++ b/src/mame/drivers/seibuspi.cpp @@ -1233,7 +1233,7 @@ CUSTOM_INPUT_MEMBER(seibuspi_state::ejanhs_encode) static const u8 encoding[] = { 6, 5, 4, 3, 2, 7 }; ioport_value state = ~m_key[N]->read(); - for (int bit = 0; bit < ARRAY_LENGTH(encoding); bit++) + for (int bit = 0; bit < std::size(encoding); bit++) if (state & (1 << bit)) return encoding[bit]; return 0; diff --git a/src/mame/drivers/skydiver.cpp b/src/mame/drivers/skydiver.cpp index 2d0cb744059..4cf1db44455 100644 --- a/src/mame/drivers/skydiver.cpp +++ b/src/mame/drivers/skydiver.cpp @@ -118,9 +118,9 @@ static constexpr unsigned colortable_source[] = void skydiver_state::skydiver_palette(palette_device &palette) const { constexpr rgb_t colors[]{ rgb_t::black(), rgb_t::white(), rgb_t(0xa0, 0xa0, 0xa0) }; // black, white, grey - for (unsigned i = 0; i < ARRAY_LENGTH(colortable_source); i++) + for (unsigned i = 0; i < std::size(colortable_source); i++) { - assert(colortable_source[i] < ARRAY_LENGTH(colors)); + assert(colortable_source[i] < std::size(colors)); palette.set_pen_color(i, colors[colortable_source[i]]); } } @@ -378,7 +378,7 @@ void skydiver_state::skydiver(machine_config &config) screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_skydiver); - PALETTE(config, m_palette, FUNC(skydiver_state::skydiver_palette), ARRAY_LENGTH(colortable_source)); + PALETTE(config, m_palette, FUNC(skydiver_state::skydiver_palette), std::size(colortable_source)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/spcforce.cpp b/src/mame/drivers/spcforce.cpp index b3f24e82b1f..f4045df77b1 100644 --- a/src/mame/drivers/spcforce.cpp +++ b/src/mame/drivers/spcforce.cpp @@ -264,7 +264,7 @@ static constexpr int COLORTABLE_SOURCE[] = void spcforce_state::spcforce_palette(palette_device &palette) const { - for (int i = 0; i < ARRAY_LENGTH(COLORTABLE_SOURCE); i++) + for (int i = 0; i < std::size(COLORTABLE_SOURCE); i++) { int const data = COLORTABLE_SOURCE[i]; rgb_t const color = rgb_t(pal1bit(data >> 0), pal1bit(data >> 1), pal1bit(data >> 2)); @@ -311,7 +311,7 @@ void spcforce_state::spcforce(machine_config &config) screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_spcforce); - PALETTE(config, m_palette, FUNC(spcforce_state::spcforce_palette), ARRAY_LENGTH(COLORTABLE_SOURCE)); + PALETTE(config, m_palette, FUNC(spcforce_state::spcforce_palette), std::size(COLORTABLE_SOURCE)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp index b7a18d06bd6..20f115db5dd 100644 --- a/src/mame/drivers/superdq.cpp +++ b/src/mame/drivers/superdq.cpp @@ -170,7 +170,6 @@ void superdq_state::superdq_videoram_w(offs_t offset, uint8_t data) void superdq_state::superdq_io_w(uint8_t data) { - int i; static const uint8_t black_color_entries[] = {7,15,16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; if ( data & 0x40 ) /* bit 6 = irqack */ @@ -181,7 +180,7 @@ void superdq_state::superdq_io_w(uint8_t data) m_color_bank = ( data & 2 ) ? 1 : 0; - for( i = 0; i < ARRAY_LENGTH( black_color_entries ); i++ ) + for (int i = 0; i < std::size(black_color_entries); i++) { int index = black_color_entries[i]; if (data & 0x80) diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp index 6b34d781084..608ef93fabc 100644 --- a/src/mame/drivers/supracan.cpp +++ b/src/mame/drivers/supracan.cpp @@ -1968,11 +1968,11 @@ void supracan_state::machine_reset() m_soundcpu_irq_enable = 0; m_soundcpu_irq_source = 0; m_sound_cpu_shift_ctrl = 0; - memset(m_sound_cpu_shift_regs, 0, ARRAY_LENGTH(m_sound_cpu_shift_regs)); - memset(m_latched_controls, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_latched_controls)); + std::fill(std::begin(m_sound_cpu_shift_regs), std::end(m_sound_cpu_shift_regs), 0); + std::fill(std::begin(m_latched_controls), std::end(m_latched_controls), 0); m_sound_status = 0; m_sound_reg_addr = 0; - memset(m_sound_regs, 0, ARRAY_LENGTH(m_sound_regs)); + std::fill(std::begin(m_sound_regs), std::end(m_sound_regs), 0); m_soundcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp index ac21a4fef14..ce3e08c94b1 100644 --- a/src/mame/drivers/svision.cpp +++ b/src/mame/drivers/svision.cpp @@ -527,7 +527,7 @@ void svision_state::svision(machine_config &config) m_screen->set_palette(m_palette); m_screen->screen_vblank().set(FUNC(svision_state::frame_int_w)); - PALETTE(config, m_palette, FUNC(svision_state::svision_palette), ARRAY_LENGTH(svision_pens)); + PALETTE(config, m_palette, FUNC(svision_state::svision_palette), std::size(svision_pens)); } void svision_state::svisions(machine_config &config) diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp index a20fa5332a3..43caeada1b0 100644 --- a/src/mame/drivers/tecnbras.cpp +++ b/src/mame/drivers/tecnbras.cpp @@ -79,7 +79,7 @@ void tecnbras_state::print_column_w(offs_t offset, uint8_t data) { int const x = m_xcoord + offset; int const ch = x / 5; - if (ch < ARRAY_LENGTH(m_digit)) { + if (ch < std::size(m_digit)) { int const row = x % 5; for (int i = 0; i < 7; i++) { m_digit[ch][i] &= ~(1 << row); @@ -101,7 +101,7 @@ void tecnbras_state::machine_start() std::fill(std::begin(elem), std::end(elem), 0); #if 0 - for (int x = 0; x < ARRAY_LENGTH(m_digit); x++) + for (int x = 0; x < std::size(m_digit); x++) for (int y = 0; y < 7; y++) m_dmds[(x * 7) + y] = y; #endif diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp index 8554531dcc2..ef7e1d9f3ce 100644 --- a/src/mame/drivers/ti89.cpp +++ b/src/mame/drivers/ti89.cpp @@ -488,8 +488,8 @@ void ti68k_state::machine_reset() m_lcd_height = 0; m_lcd_on = 0; m_lcd_contrast = 0; - memset(m_io_hw1, 0, ARRAY_LENGTH(m_io_hw1) * sizeof(uint16_t)); - memset(m_io_hw2, 0, ARRAY_LENGTH(m_io_hw2) * sizeof(uint16_t)); + std::fill(std::begin(m_io_hw1), std::end(m_io_hw1), 0); + std::fill(std::begin(m_io_hw2), std::end(m_io_hw2), 0); m_timer_on = 0; m_timer_mask = 0xf; m_timer_val = 0; diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index 12d4dfda871..8b2799d6700 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -304,13 +304,13 @@ uint8_t tutor_state::key_r(offs_t offset) char port[12]; uint8_t value; - snprintf(port, ARRAY_LENGTH(port), "LINE%d", (offset & 0x007e) >> 3); + snprintf(port, std::size(port), "LINE%d", (offset & 0x007e) >> 3); value = ioport(port)->read(); /* hack for ports overlapping with joystick */ if (offset >= 32 && offset < 48) { - snprintf(port, ARRAY_LENGTH(port), "LINE%d_alt", (offset & 0x007e) >> 3); + snprintf(port, std::size(port), "LINE%d_alt", (offset & 0x007e) >> 3); value |= ioport(port)->read(); } diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp index 777b26364c7..efbc06bf8fd 100644 --- a/src/mame/drivers/vegas.cpp +++ b/src/mame/drivers/vegas.cpp @@ -519,7 +519,7 @@ void vegas_state::machine_reset() m_dcs->reset_w(1); // Clear CPU IO registers - memset(m_cpuio_data, 0, ARRAY_LENGTH(m_cpuio_data)); + std::fill(std::begin(m_cpuio_data), std::end(m_cpuio_data), 0); // Clear SIO registers reset_sio(); m_duart_irq_state = 0; diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index 1258ce54f1c..68640ae0b2c 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -538,7 +538,7 @@ void vis_vga_device::vga_w(offs_t offset, uint8_t data) break; case 0x05: case 0x25: - assert(vga.crtc.index < ARRAY_LENGTH(m_crtc_regs)); + assert(vga.crtc.index < std::size(m_crtc_regs)); m_crtc_regs[vga.crtc.index] = data; switch(vga.crtc.index) { diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp index 0b677efd3a6..1477b0a7a17 100644 --- a/src/mame/drivers/wpc_dot.cpp +++ b/src/mame/drivers/wpc_dot.cpp @@ -257,7 +257,7 @@ uint32_t wpc_dot_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma { for(uint8_t bit=0;bit<8;bit++) // bits { - assert(offset >= 0 && offset < ARRAY_LENGTH(m_dmdram)); + assert(offset >= 0 && offset < std::size(m_dmdram)); uint32_t col; if(m_dmdram[offset] & (1< m_out_lcd; // common handlers - void clear_lcd() { std::fill_n(m_lcd_data, ARRAY_LENGTH(m_lcd_data), 0); } + void clear_lcd() { std::fill(std::begin(m_lcd_data), std::end(m_lcd_data), 0); } void update_lcd(); void power_off(); void set_cpu_freq(); diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp index 3457be3348b..aef00e0f979 100644 --- a/src/mame/machine/amstrad.cpp +++ b/src/mame/machine/amstrad.cpp @@ -313,7 +313,7 @@ The Amstrad Plus has a 4096 colour palette void amstrad_state::amstrad_plus_palette(palette_device &palette) const { - palette.set_pen_colors(0, amstrad_palette, ARRAY_LENGTH(amstrad_palette) / 3); // FIXME: isn't this overwritten by the loop? + palette.set_pen_colors(0, amstrad_palette, std::size(amstrad_palette) / 3); // FIXME: isn't this overwritten by the loop? for (int i = 0; i < 0x1000; i++) { int const g = ( i >> 8 ) & 0x0f; diff --git a/src/mame/machine/bebox.cpp b/src/mame/machine/bebox.cpp index 2b7b219ce28..b34b2837b89 100644 --- a/src/mame/machine/bebox.cpp +++ b/src/mame/machine/bebox.cpp @@ -206,15 +206,15 @@ void bebox_state::bebox_crossproc_interrupts_w(offs_t offset, uint64_t data, uin { 0x08000000, 0, 0, 0/*PPC_INPUT_LINE_TLBISYNC*/ }, { 0x04000000, 1, 0, 0/*PPC_INPUT_LINE_TLBISYNC*/ } }; - int i, line; uint32_t old_crossproc_interrupts = m_crossproc_interrupts; bebox_mbreg32_w(&m_crossproc_interrupts, data, mem_mask); - for (i = 0; i < ARRAY_LENGTH(crossproc_map); i++) + for (int i = 0; i < std::size(crossproc_map); i++) { if ((old_crossproc_interrupts ^ m_crossproc_interrupts) & crossproc_map[i].mask) { + int line; if (m_crossproc_interrupts & crossproc_map[i].mask) line = crossproc_map[i].active_high ? ASSERT_LINE : CLEAR_LINE; else @@ -306,7 +306,7 @@ void bebox_state::bebox_set_irq_bit(unsigned int interrupt_bit, int val) if (LOG_INTERRUPTS) { /* make sure that we don't shoot ourself in the foot */ - if ((interrupt_bit >= ARRAY_LENGTH(interrupt_names)) || !interrupt_names[interrupt_bit]) + if ((interrupt_bit >= std::size(interrupt_names)) || !interrupt_names[interrupt_bit]) throw emu_fatalerror("bebox_state::bebox_set_irq_bit: Raising invalid interrupt"); logerror("bebox_set_irq_bit(): pc[0]=0x%08x pc[1]=0x%08x %s interrupt #%u (%s)\n", diff --git a/src/mame/machine/bfm_sc45_helper.cpp b/src/mame/machine/bfm_sc45_helper.cpp index 7e735e59dc7..fb58d9ca056 100644 --- a/src/mame/machine/bfm_sc45_helper.cpp +++ b/src/mame/machine/bfm_sc45_helper.cpp @@ -215,7 +215,7 @@ int find_input_strings(running_machine &machine) //if (pos <= 5) { - assert(pos >= 0 && pos < ARRAY_LENGTH(sc4inputs[port])); + assert(pos >= 0 && pos < std::size(sc4inputs[port])); if (sc4inputs[port][pos].used == false) { sc4inputs[port][pos].used = true; @@ -614,9 +614,9 @@ int find_lamp_strings(running_machine &machine) { char tempname2[64]; - if (pos == 0) snprintf(tempname2, ARRAY_LENGTH(tempname2), "%stop", tempname); - if (pos == 1) snprintf(tempname2, ARRAY_LENGTH(tempname2), "%smid", tempname); - if (pos == 2) snprintf(tempname2, ARRAY_LENGTH(tempname2), "%sbot", tempname); + if (pos == 0) snprintf(tempname2, std::size(tempname2), "%stop", tempname); + if (pos == 1) snprintf(tempname2, std::size(tempname2), "%smid", tempname); + if (pos == 2) snprintf(tempname2, std::size(tempname2), "%sbot", tempname); for (auto & lamp : lamps) diff --git a/src/mame/machine/coco.cpp b/src/mame/machine/coco.cpp index 5b343750a87..665d60c3a9f 100644 --- a/src/mame/machine/coco.cpp +++ b/src/mame/machine/coco.cpp @@ -1275,7 +1275,7 @@ offs_t coco_state::os9_dasm_override(std::ostream &stream, offs_t pc, const util if ((opcodes.r8(pc) == 0x10) && (opcodes.r8(pc+1) == 0x3F)) { call = opcodes.r8(pc+2); - if ((call < ARRAY_LENGTH(os9syscalls)) && (os9syscalls[call] != nullptr)) + if ((call < std::size(os9syscalls)) && (os9syscalls[call] != nullptr)) { util::stream_format(stream, "OS9 %s", os9syscalls[call]); result = 3; diff --git a/src/mame/machine/decocass_tape.cpp b/src/mame/machine/decocass_tape.cpp index 8686be2cb06..199a11c1e47 100644 --- a/src/mame/machine/decocass_tape.cpp +++ b/src/mame/machine/decocass_tape.cpp @@ -91,7 +91,7 @@ void decocass_tape_device::device_start() if (m_tape_data[offs] != 0) break; numblocks = ((offs | 0xff) + 1) / 256; - assert(numblocks < ARRAY_LENGTH(m_crc16)); + assert(numblocks < std::size(m_crc16)); /* compute the total length */ m_numclocks = REGION_BOT_GAP_END_CLOCK + numblocks * BYTE_BLOCK_TOTAL * 16 + REGION_BOT_GAP_END_CLOCK; diff --git a/src/mame/machine/etna.cpp b/src/mame/machine/etna.cpp index a92cede47a4..fbdadf10347 100644 --- a/src/mame/machine/etna.cpp +++ b/src/mame/machine/etna.cpp @@ -54,8 +54,8 @@ void etna_device::device_reset() m_pending_ints = 0; - memset(m_regs, 0, ARRAY_LENGTH(m_regs)); - memset(m_prom, 0, ARRAY_LENGTH(m_prom)); + std::fill(std::begin(m_regs), std::end(m_regs), 0); + std::fill(std::begin(m_prom), std::end(m_prom), 0); // defaults expected by the touchscreen code m_prom[0x0a] = 20; @@ -237,7 +237,7 @@ WRITE_LINE_MEMBER(etna_device::eeprom_clk_in) if (m_prom_addr_count == 10) { LOGMASKED(LOG_PROM, "PROM Address: %03x\n", m_prom_addr); - uint16_t byte_addr = (m_prom_addr << 1) % ARRAY_LENGTH(m_prom); + uint16_t byte_addr = (m_prom_addr << 1) % std::size(m_prom); m_prom_value = m_prom[byte_addr] | (m_prom[byte_addr + 1] << 8); LOGMASKED(LOG_PROM, "PROM Value: %04x\n", m_prom_value); } diff --git a/src/mame/machine/fddebug.cpp b/src/mame/machine/fddebug.cpp index 1e186468e12..572741083c9 100644 --- a/src/mame/machine/fddebug.cpp +++ b/src/mame/machine/fddebug.cpp @@ -571,7 +571,7 @@ static void set_default_key_params(running_machine &machine) int keynum; /* look for a matching game and set the key appropriately */ - for (keynum = 0; keynum < ARRAY_LENGTH(default_keys); keynum++) + for (keynum = 0; keynum < std::size(default_keys); keynum++) if (strcmp(machine.system().name, default_keys[keynum].gamename) == 0) { fd1094_global = default_keys[keynum].global; @@ -1873,8 +1873,8 @@ static uint32_t reconstruct_base_seed(int keybaseaddr, uint32_t startseed) { seed = seed * 0x29; seed += seed << 16; - window[index++ % ARRAY_LENGTH(window)] = seed; - } while (((startseed ^ seed) & 0x3fffff) != 0 || index < ARRAY_LENGTH(window)); + window[index++ % std::size(window)] = seed; + } while (((startseed ^ seed) & 0x3fffff) != 0 || index < std::size(window)); /* when we break, we have overshot */ index--; @@ -1882,10 +1882,10 @@ static uint32_t reconstruct_base_seed(int keybaseaddr, uint32_t startseed) /* back up to where we would have been at address 3 */ index -= keybaseaddr - 3; if (index < 0) - index += ARRAY_LENGTH(window); + index += std::size(window); /* return the value from the window at that location */ - return window[index % ARRAY_LENGTH(window)] & 0x3fffff; + return window[index % std::size(window)] & 0x3fffff; } @@ -2095,7 +2095,7 @@ static void build_optable(running_machine &machine) } /* now iterate over entries in our intruction table */ - for (inum = 0; inum < ARRAY_LENGTH(instr_table); inum++) + for (inum = 0; inum < std::size(instr_table); inum++) { const char *bitstring = instr_table[inum].bitstring; const char *eastring = instr_table[inum].eastring; diff --git a/src/mame/machine/imm6_76.cpp b/src/mame/machine/imm6_76.cpp index b30a1c5e9da..db4cdcbd236 100644 --- a/src/mame/machine/imm6_76.cpp +++ b/src/mame/machine/imm6_76.cpp @@ -50,9 +50,9 @@ void intel_imm6_76_device::device_start() image_init_result intel_imm6_76_device::call_load() { - if (length() != ARRAY_LENGTH(m_data)) + if (length() != std::size(m_data)) return image_init_result::FAIL; - else if (fread(m_data, ARRAY_LENGTH(m_data)) != ARRAY_LENGTH(m_data)) + else if (fread(m_data, std::size(m_data)) != std::size(m_data)) return image_init_result::FAIL; else return image_init_result::PASS; @@ -61,7 +61,7 @@ image_init_result intel_imm6_76_device::call_load() image_init_result intel_imm6_76_device::call_create(int format_type, util::option_resolution *format_options) { std::fill(std::begin(m_data), std::end(m_data), 0U); - if (fwrite(m_data, ARRAY_LENGTH(m_data)) != ARRAY_LENGTH(m_data)) + if (fwrite(m_data, std::size(m_data)) != std::size(m_data)) return image_init_result::FAIL; else return image_init_result::PASS; @@ -72,7 +72,7 @@ void intel_imm6_76_device::call_unload() if (!is_readonly()) { fseek(0, SEEK_SET); - fwrite(m_data, ARRAY_LENGTH(m_data)); + fwrite(m_data, std::size(m_data)); } std::fill(std::begin(m_data), std::end(m_data), 0U); } diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp index 7395938cec4..7c5ee1b61ec 100644 --- a/src/mame/machine/mac.cpp +++ b/src/mame/machine/mac.cpp @@ -2334,7 +2334,7 @@ const char *lookup_trap(uint16_t opcode) int i; - for (i = 0; i < ARRAY_LENGTH(traps); i++) + for (i = 0; i < std::size(traps); i++) { if (traps[i].trap == opcode) return traps[i].name; @@ -2431,7 +2431,7 @@ void mac_state::mac_tracetrap(const char *cpu_name_local, int addr, int trap) csCode = *((uint16_t*) (mem + a0 + 26)); sprintf(s->state().state_int(" ioVRefNum=%i ioCRefNum=%i csCode=%i", ioVRefNum, ioCRefNum, csCode); - for (i = 0; i < ARRAY_LENGTH(cscodes); i++) + for (i = 0; i < std::size(cscodes); i++) { if (cscodes[i].csCode == csCode) { @@ -2467,7 +2467,7 @@ void mac_state::mac_tracetrap(const char *cpu_name_local, int addr, int trap) case 0xa815: /* _SCSIDispatch */ i = *((uint16_t*) (mem + a7)); - if (i < ARRAY_LENGTH(scsisels)) + if (i < std::size(scsisels)) if (scsisels[i]) sprintf(s, " (%s)", scsisels[i]); break; diff --git a/src/mame/machine/rosetta.cpp b/src/mame/machine/rosetta.cpp index 12b6d5ec036..29972776c52 100644 --- a/src/mame/machine/rosetta.cpp +++ b/src/mame/machine/rosetta.cpp @@ -860,7 +860,7 @@ u8 rosetta_device::compute_ecc(u32 const data) const { u8 result = 0; - for (unsigned i = 0; i < ARRAY_LENGTH(ecc_bits); i++) + for (unsigned i = 0; i < std::size(ecc_bits); i++) result ^= BIT(data, 31 - i) ? ecc_bits[i] : 0; return result; @@ -872,7 +872,7 @@ unsigned rosetta_device::check_ecc(u32 &data, u8 const ecc) const if (error) { - for (unsigned i = 0; i < ARRAY_LENGTH(ecc_bits); i++) + for (unsigned i = 0; i < std::size(ecc_bits); i++) { if (error == ecc_bits[i]) { diff --git a/src/mame/machine/sorcerer.cpp b/src/mame/machine/sorcerer.cpp index 0d5f0d4ecee..f7da7b114d1 100644 --- a/src/mame/machine/sorcerer.cpp +++ b/src/mame/machine/sorcerer.cpp @@ -613,7 +613,6 @@ QUICKLOAD_LOAD_MEMBER(sorcerer_state::quickload_cb) if (((start_address == 0x1d5) || (execute_address == 0xc858)) && (space.read_byte(0xdffa) == 0xc3)) { - u8 i; static const u8 data[]={ 0xcd, 0x26, 0xc4, // CALL C426 ;set up other pointers 0x21, 0xd4, 1, // LD HL,01D4 ;start of program address (used by C689) @@ -621,7 +620,7 @@ QUICKLOAD_LOAD_MEMBER(sorcerer_state::quickload_cb) 0xc3, 0x89, 0xc6 // JP C689 ;run program }; - for (i = 0; i < ARRAY_LENGTH(data); i++) + for (u8 i = 0; i < std::size(data); i++) space.write_byte(0xf01f + i, data[i]); if (!autorun) diff --git a/src/mame/machine/taitoio.cpp b/src/mame/machine/taitoio.cpp index 756442468a5..cac89ce09ed 100644 --- a/src/mame/machine/taitoio.cpp +++ b/src/mame/machine/taitoio.cpp @@ -185,7 +185,7 @@ u8 tc0040ioc_device::portreg_r() void tc0040ioc_device::portreg_w(u8 data) { - if (m_port < ARRAY_LENGTH(m_regs)) + if (m_port < std::size(m_regs)) m_regs[m_port] = data; switch (m_port) { diff --git a/src/mame/machine/z80bin.cpp b/src/mame/machine/z80bin.cpp index 9fdf4183e1a..ba24d545d1f 100644 --- a/src/mame/machine/z80bin.cpp +++ b/src/mame/machine/z80bin.cpp @@ -30,7 +30,7 @@ image_init_result z80bin_load_file(device_image_interface &image, address_space if (ch != '\0') { - if (i >= (ARRAY_LENGTH(pgmname) - 1)) + if (i >= (std::size(pgmname) - 1)) { image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File name too long"); image.message(" File name too long"); @@ -65,7 +65,7 @@ image_init_result z80bin_load_file(device_image_interface &image, address_space j = (start_addr + i) & 0xffff; if (image.fread(&data, 1) != 1) { - snprintf(message, ARRAY_LENGTH(message), "%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); + snprintf(message, std::size(message), "%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); image.seterror(IMAGE_ERROR_INVALIDIMAGE, message); image.message("%s: Unexpected EOF while writing byte to %04X", pgmname, (unsigned) j); return image_init_result::FAIL; diff --git a/src/mame/video/911_vdt.cpp b/src/mame/video/911_vdt.cpp index a2a82a48a16..46d2383b644 100644 --- a/src/mame/video/911_vdt.cpp +++ b/src/mame/video/911_vdt.cpp @@ -106,10 +106,10 @@ static const unsigned short vdt911_pens[] = */ void vdt911_device::vdt911_palette(palette_device &palette) const { - for (int i = 0; i < ARRAY_LENGTH(vdt911_colors); i++) + for (int i = 0; i < std::size(vdt911_colors); i++) palette.set_indirect_color(i, vdt911_colors[i]); - for (int i = 0; i < ARRAY_LENGTH(vdt911_pens); i++) + for (int i = 0; i < std::size(vdt911_pens); i++) palette.set_pen_indirect(i, vdt911_pens[i]); } @@ -804,7 +804,7 @@ void vdt911_device::device_add_mconfig(machine_config &config) SPEAKER(config, "speaker").front_center(); BEEP(config, m_beeper, 3250).add_route(ALL_OUTPUTS, "speaker", 0.50); - PALETTE(config, "palette", FUNC(vdt911_device::vdt911_palette), ARRAY_LENGTH(vdt911_pens), ARRAY_LENGTH(vdt911_colors)); + PALETTE(config, "palette", FUNC(vdt911_device::vdt911_palette), std::size(vdt911_pens), std::size(vdt911_colors)); } ioport_constructor vdt911_device::device_input_ports() const diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp index 5079b7fc449..154dfaa7ded 100644 --- a/src/mame/video/apple2.cpp +++ b/src/mame/video/apple2.cpp @@ -1451,13 +1451,13 @@ static const rgb_t apple2_palette[] = void a2_video_device::init_palette() { - for (int i = 0; i < ARRAY_LENGTH(apple2_palette); i++) + for (int i = 0; i < std::size(apple2_palette); i++) set_pen_color(i, apple2_palette[i]); } uint32_t a2_video_device::palette_entries() const { - return ARRAY_LENGTH(apple2_palette); + return std::size(apple2_palette); } uint32_t a2_video_device::screen_update_GS(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/darkmist.cpp b/src/mame/video/darkmist.cpp index 4a213bf967d..7d82d6b817e 100644 --- a/src/mame/video/darkmist.cpp +++ b/src/mame/video/darkmist.cpp @@ -71,7 +71,7 @@ void darkmist_state::darkmist_palette(palette_device &palette) const { &m_spr_clut[0], 0x40 }, { &m_tx_clut[0], 0xc0 } }; - for (unsigned plane = 0; ARRAY_LENGTH(planes) > plane; ++plane) + for (unsigned plane = 0; std::size(planes) > plane; ++plane) { for (unsigned i = 0; 0x100 > i; ++i) { diff --git a/src/mame/video/firetrk.cpp b/src/mame/video/firetrk.cpp index 800cb5dd5e2..5998473c148 100644 --- a/src/mame/video/firetrk.cpp +++ b/src/mame/video/firetrk.cpp @@ -34,7 +34,7 @@ void firetrk_state::firetrk_palette(palette_device &palette) m_color1_mask = m_color2_mask = 0; - for (int i = 0; i < ARRAY_LENGTH(colortable_source); i++) + for (int i = 0; i < std::size(colortable_source); i++) { uint8_t color = colortable_source[i]; @@ -93,7 +93,7 @@ void firetrk_state::montecar_palette(palette_device &palette) m_color1_mask = m_color2_mask = 0; - for (int i = 0; i < ARRAY_LENGTH(colortable_source); i++) + for (int i = 0; i < std::size(colortable_source); i++) { uint8_t color = colortable_source[i]; @@ -105,8 +105,8 @@ void firetrk_state::montecar_palette(palette_device &palette) prom_to_palette(i, color_prom[0x100 + colortable_source[i]]); } - palette.set_pen_color(ARRAY_LENGTH(colortable_source) + 0, rgb_t::black()); - palette.set_pen_color(ARRAY_LENGTH(colortable_source) + 1, rgb_t::white()); + palette.set_pen_color(std::size(colortable_source) + 0, rgb_t::black()); + palette.set_pen_color(std::size(colortable_source) + 1, rgb_t::white()); } diff --git a/src/mame/video/gaelco3d.cpp b/src/mame/video/gaelco3d.cpp index 6a10b3d4ec9..9f74915570c 100644 --- a/src/mame/video/gaelco3d.cpp +++ b/src/mame/video/gaelco3d.cpp @@ -170,7 +170,7 @@ void gaelco3d_state::gaelco3d_renderer::render_poly(screen_device &screen, uint3 /* extract vertices */ data = 0; - for (vertnum = 0; vertnum < ARRAY_LENGTH(vert) && !IS_POLYEND(data); vertnum++) + for (vertnum = 0; vertnum < std::size(vert) && !IS_POLYEND(data); vertnum++) { /* extract vertex data */ data = polydata[13 + vertnum * 2]; diff --git a/src/mame/video/gime.cpp b/src/mame/video/gime.cpp index 976616d73d7..7eefa59dc66 100644 --- a/src/mame/video/gime.cpp +++ b/src/mame/video/gime.cpp @@ -154,13 +154,13 @@ void gime_device::device_start(void) m_gime_clock_timer = timer_alloc(TIMER_GIME_CLOCK); // setup banks - assert(ARRAY_LENGTH(m_read_banks) == ARRAY_LENGTH(m_write_banks)); - for (int i = 0; i < ARRAY_LENGTH(m_read_banks); i++) + assert(std::size(m_read_banks) == std::size(m_write_banks)); + for (int i = 0; i < std::size(m_read_banks); i++) { char buffer[8]; - snprintf(buffer, ARRAY_LENGTH(buffer), "rbank%d", i); + snprintf(buffer, std::size(buffer), "rbank%d", i); m_read_banks[i] = machine().root_device().membank(buffer); - snprintf(buffer, ARRAY_LENGTH(buffer), "wbank%d", i); + snprintf(buffer, std::size(buffer), "wbank%d", i); m_write_banks[i] = machine().root_device().membank(buffer); } @@ -180,8 +180,8 @@ void gime_device::device_start(void) update_composite_palette(); // set up save states - save_pointer(NAME(m_gime_registers), ARRAY_LENGTH(m_gime_registers)); - save_pointer(NAME(m_mmu), ARRAY_LENGTH(m_mmu)); + save_item(NAME(m_gime_registers)); + save_item(NAME(m_mmu)); save_item(NAME(m_sam_state)); save_item(NAME(m_ff22_value)); save_item(NAME(m_interrupt_value)); @@ -506,7 +506,7 @@ inline void gime_device::update_memory(void) void gime_device::update_memory(int bank) { // choose bank - assert((bank >= 0) && (bank < ARRAY_LENGTH(m_read_banks)) && (bank < ARRAY_LENGTH(m_write_banks))); + assert((bank >= 0) && (bank < std::size(m_read_banks)) && (bank < std::size(m_write_banks))); memory_bank *read_bank = m_read_banks[bank]; memory_bank *write_bank = m_write_banks[bank]; @@ -1036,10 +1036,10 @@ inline void gime_device::write_palette_register(offs_t offset, uint8_t data) if (m_palette_rotated_position_used) { /* identify the new position */ - uint16_t new_palette_rotated_position = (m_palette_rotated_position + 1) % ARRAY_LENGTH(m_palette_rotated); + uint16_t new_palette_rotated_position = (m_palette_rotated_position + 1) % std::size(m_palette_rotated); /* copy the palette */ - for (int i = 0; i < ARRAY_LENGTH(m_palette_rotated[0]); i++) + for (int i = 0; i < std::size(m_palette_rotated[0]); i++) m_palette_rotated[new_palette_rotated_position][i] = m_palette_rotated[m_palette_rotated_position][i]; /* and advance */ diff --git a/src/mame/video/k054156_k054157_k056832.cpp b/src/mame/video/k054156_k054157_k056832.cpp index 0d50a5a3933..7824e3a26a6 100644 --- a/src/mame/video/k054156_k054157_k056832.cpp +++ b/src/mame/video/k054156_k054157_k056832.cpp @@ -1069,7 +1069,7 @@ void k056832_device::word_w(offs_t offset, u16 data, u16 mem_mask) void k056832_device::b_word_w(offs_t offset, u16 data, u16 mem_mask) { - assert(offset < ARRAY_LENGTH(m_regsb)); + assert(offset < std::size(m_regsb)); COMBINE_DATA(&m_regsb[offset]); } diff --git a/src/mame/video/lordgun.cpp b/src/mame/video/lordgun.cpp index 84b686eda1b..ec3b479611e 100644 --- a/src/mame/video/lordgun.cpp +++ b/src/mame/video/lordgun.cpp @@ -145,7 +145,7 @@ float lordgun_crosshair_mapper(ioport_field *field, float linear_value) { int x = linear_value - 0x3c; - if ( (x < 0) || (x > ARRAY_LENGTH(lordgun_gun_x_table)) ) + if ( (x < 0) || (x > std::size(lordgun_gun_x_table)) ) x = 0; return lordgun_gun_x_table[x] * 1.0f / 0x1BF; @@ -157,7 +157,7 @@ void lordgun_state::lorddgun_calc_gun_scr(int i) int x = ioport(gunnames[i])->read() - 0x3c; - if ( (x < 0) || (x > ARRAY_LENGTH(lordgun_gun_x_table)) ) + if ( (x < 0) || (x > std::size(lordgun_gun_x_table)) ) x = 0; m_gun[i].scr_x = lordgun_gun_x_table[x]; diff --git a/src/mame/video/midzeus.cpp b/src/mame/video/midzeus.cpp index f03b9d7e3f6..555beb10995 100644 --- a/src/mame/video/midzeus.cpp +++ b/src/mame/video/midzeus.cpp @@ -1466,14 +1466,14 @@ void midzeus_state::log_waveram(uint32_t length_and_base) for (i = 0; i < numoctets; i++) checksum += ptr[i*2] + ptr[i*2+1]; - for (i = 0; i < ARRAY_LENGTH(recent_entries); i++) + for (i = 0; i < std::size(recent_entries); i++) if (recent_entries[i].lab == length_and_base && recent_entries[i].checksum == checksum) { foundit = true; break; } - if (i == ARRAY_LENGTH(recent_entries)) + if (i == std::size(recent_entries)) i--; if (i != 0) { diff --git a/src/mame/video/namcos22.cpp b/src/mame/video/namcos22.cpp index c13e47ce725..483acb7ca12 100644 --- a/src/mame/video/namcos22.cpp +++ b/src/mame/video/namcos22.cpp @@ -261,7 +261,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit } clipverts = zclip_if_less(4, v, clipv, 4, 10.0f); - assert(clipverts <= ARRAY_LENGTH(clipv)); + assert(clipverts <= std::size(clipv)); if (clipverts < 3) return; diff --git a/src/mame/video/nemesis.cpp b/src/mame/video/nemesis.cpp index ec253dad307..7645a6d0702 100644 --- a/src/mame/video/nemesis.cpp +++ b/src/mame/video/nemesis.cpp @@ -262,7 +262,7 @@ void nemesis_state::video_start() m_foreground->set_scroll_rows(256); memset(m_charram, 0, m_charram.bytes()); - memset(m_blank_tile, 0, ARRAY_LENGTH(m_blank_tile)); + std::fill(std::begin(m_blank_tile), std::end(m_blank_tile), 0); /* Set up save state */ machine().save().register_postload(save_prepost_delegate(FUNC(nemesis_state::nemesis_postload), this)); diff --git a/src/mame/video/pocketc.cpp b/src/mame/video/pocketc.cpp index 2226b23bbbd..0f2044ad79a 100644 --- a/src/mame/video/pocketc.cpp +++ b/src/mame/video/pocketc.cpp @@ -29,10 +29,10 @@ const int pocketc_state::colortable[8][2] = void pocketc_state::pocketc_palette(palette_device &palette) const { - for (int i = 0; i < ARRAY_LENGTH(indirect_palette); i++) + for (int i = 0; i < std::size(indirect_palette); i++) palette.set_indirect_color(i, indirect_palette[i]); - for (int i = 0; i < ARRAY_LENGTH(colortable); i++) + for (int i = 0; i < std::size(colortable); i++) { palette.set_pen_indirect(i*2, colortable[i][0]); palette.set_pen_indirect(i*2+1, colortable[i][1]); diff --git a/src/mame/video/sega16sp.cpp b/src/mame/video/sega16sp.cpp index 3eed24e8e7b..bcc324317fa 100644 --- a/src/mame/video/sega16sp.cpp +++ b/src/mame/video/sega16sp.cpp @@ -41,7 +41,7 @@ sega_16bit_sprite_device::sega_16bit_sprite_device(const machine_config &mconfig , m_flip(false) { // default to 1:1 bank mapping - for (int bank = 0; bank < ARRAY_LENGTH(m_bank); bank++) + for (int bank = 0; bank < std::size(m_bank); bank++) m_bank[bank] = bank; } diff --git a/src/mame/video/sgi_ge5.cpp b/src/mame/video/sgi_ge5.cpp index 21c2dbac2e6..2016d43c026 100644 --- a/src/mame/video/sgi_ge5.cpp +++ b/src/mame/video/sgi_ge5.cpp @@ -342,17 +342,17 @@ void sgi_ge5_device::execute_run() */ if (space(1).read_dword(0x50b) == 0x004d0003) { - if (token < ARRAY_LENGTH(token_puc)) + if (token < std::size(token_puc)) string = token_puc[token]; } else if (space(1).read_dword(0x50d) == 0x004d0005 || space(1).read_dword(0x536) == 0x12345678 || space(1).read_dword(0x540) == 0x12345678) { - if (token < ARRAY_LENGTH(token_gl)) + if (token < std::size(token_gl)) string = token_gl[token]; } - else if (token < ARRAY_LENGTH(token_diag)) + else if (token < std::size(token_diag)) string = token_diag[token]; if (string) diff --git a/src/mame/video/sgi_re2.cpp b/src/mame/video/sgi_re2.cpp index 2dd2e810e6b..76ed188d433 100644 --- a/src/mame/video/sgi_re2.cpp +++ b/src/mame/video/sgi_re2.cpp @@ -71,7 +71,7 @@ void sgi_re2_device::device_start() m_dram = std::make_unique(1280 * 1024); // save state - for (unsigned i = 0; i < ARRAY_LENGTH(m_reg); i++) + for (unsigned i = 0; i < std::size(m_reg); i++) if (regmask[i]) save_item(m_reg[i], regname[i]); diff --git a/src/mame/video/starshp1.cpp b/src/mame/video/starshp1.cpp index 504325c542f..d10266753fd 100644 --- a/src/mame/video/starshp1.cpp +++ b/src/mame/video/starshp1.cpp @@ -37,7 +37,7 @@ void starshp1_state::starshp1_palette(palette_device &palette) const 5, 7 // 0x11 - circle }; - for (unsigned i = 0; i < ARRAY_LENGTH(colortable_source); i++) + for (unsigned i = 0; i < std::size(colortable_source); i++) palette.set_pen_indirect(i, colortable_source[i]); } diff --git a/src/mame/video/stic.cpp b/src/mame/video/stic.cpp index 55331e94abd..b1c48627406 100644 --- a/src/mame/video/stic.cpp +++ b/src/mame/video/stic.cpp @@ -1314,7 +1314,7 @@ void stic_device::write(offs_t offset, uint16_t data) break; } - if (offset < ARRAY_LENGTH(m_stic_registers)) + if (offset < std::size(m_stic_registers)) m_stic_registers[offset] = data; } diff --git a/src/mame/video/vc4000.cpp b/src/mame/video/vc4000.cpp index 29248a12523..8caf09fb779 100644 --- a/src/mame/video/vc4000.cpp +++ b/src/mame/video/vc4000.cpp @@ -574,7 +574,7 @@ INTERRUPT_GEN_MEMBER(vc4000_state::vc4000_video_line) { uint8_t collision[400]={0}; // better alloca or gcc feature of non constant long automatic arrays const rectangle &visarea = m_screen->visible_area(); - assert(ARRAY_LENGTH(collision) >= m_screen->width()); + assert(std::size(collision) >= m_screen->width()); m_video.line++; if (m_irq_pause) m_irq_pause++; diff --git a/src/osd/modules/debugger/win/editwininfo.cpp b/src/osd/modules/debugger/win/editwininfo.cpp index bff429a4f7a..d7959afd5f1 100644 --- a/src/osd/modules/debugger/win/editwininfo.cpp +++ b/src/osd/modules/debugger/win/editwininfo.cpp @@ -185,7 +185,7 @@ LRESULT editwin_info::edit_proc(UINT message, WPARAM wparam, LPARAM lparam) case 13: // carriage return { // fetch the text - SendMessage(m_editwnd, WM_GETTEXT, WPARAM(ARRAY_LENGTH(buffer)), LPARAM(buffer)); + SendMessage(m_editwnd, WM_GETTEXT, WPARAM(std::size(buffer)), LPARAM(buffer)); // add to the history if it's not a repeat of the last one if (buffer[0] && (m_history.empty() || _tcscmp(buffer, m_history[0].c_str()))) diff --git a/src/osd/modules/file/winrtfile.cpp b/src/osd/modules/file/winrtfile.cpp index cab2c75d5a5..bc45ead48ae 100644 --- a/src/osd/modules/file/winrtfile.cpp +++ b/src/osd/modules/file/winrtfile.cpp @@ -350,7 +350,7 @@ osd_file::error osd_get_full_path(std::string &dst, std::string const &path) // canonicalize the path TCHAR buffer[MAX_PATH]; - if (!GetFullPathName(t_path.c_str(), ARRAY_LENGTH(buffer), buffer, nullptr)) + if (!GetFullPathName(t_path.c_str(), std::size(buffer), buffer, nullptr)) return win_error_to_file_error(GetLastError()); // convert the result back to UTF-8 diff --git a/src/osd/modules/font/font_osx.cpp b/src/osd/modules/font/font_osx.cpp index 327c6f1244b..c357f8992e3 100644 --- a/src/osd/modules/font/font_osx.cpp +++ b/src/osd/modules/font/font_osx.cpp @@ -241,8 +241,8 @@ private: bool font_osx::get_font_families(std::string const &font_path, std::vector > &result) { CFStringRef keys[] = { kCTFontCollectionRemoveDuplicatesOption }; - std::uintptr_t values[ARRAY_LENGTH(keys)] = { 1 }; - CFDictionaryRef const options = CFDictionaryCreate(kCFAllocatorDefault, (void const **)keys, (void const **)values, ARRAY_LENGTH(keys), &kCFTypeDictionaryKeyCallBacks, nullptr); + std::uintptr_t values[std::size(keys)] = { 1 }; + CFDictionaryRef const options = CFDictionaryCreate(kCFAllocatorDefault, (void const **)keys, (void const **)values, std::size(keys), &kCFTypeDictionaryKeyCallBacks, nullptr); CTFontCollectionRef const collection = CTFontCollectionCreateFromAvailableFonts(nullptr); CFRelease(options); if (!collection) return false; diff --git a/src/osd/modules/font/font_sdl.cpp b/src/osd/modules/font/font_sdl.cpp index 56663bb7df7..a17b87cdc13 100644 --- a/src/osd/modules/font/font_sdl.cpp +++ b/src/osd/modules/font/font_sdl.cpp @@ -161,7 +161,7 @@ bool osd_font_sdl::get_bitmap(char32_t chnum, bitmap_argb32 &bitmap, std::int32_ { SDL_Color const fcol = { 0xff, 0xff, 0xff }; char ustr[16]; - ustr[utf8_from_uchar(ustr, ARRAY_LENGTH(ustr), chnum)] = '\0'; + ustr[utf8_from_uchar(ustr, std::size(ustr), chnum)] = '\0'; std::unique_ptr const drawsurf(TTF_RenderUTF8_Solid(m_font.get(), ustr, fcol), &SDL_FreeSurface); // was nothing returned? diff --git a/src/osd/modules/font/font_windows.cpp b/src/osd/modules/font/font_windows.cpp index 4387c6522c1..2d4a7a93eda 100644 --- a/src/osd/modules/font/font_windows.cpp +++ b/src/osd/modules/font/font_windows.cpp @@ -86,7 +86,7 @@ bool osd_font_windows::open(std::string const &font_path, std::string const &_na // copy in the face name osd::text::tstring face = osd::text::to_tstring(name); - _tcsncpy(logfont.lfFaceName, face.c_str(), ARRAY_LENGTH(logfont.lfFaceName)); + _tcsncpy(logfont.lfFaceName, face.c_str(), std::size(logfont.lfFaceName)); logfont.lfFaceName[sizeof(logfont.lfFaceName) / sizeof(TCHAR)-1] = 0; // create the font @@ -201,7 +201,7 @@ bool osd_font_windows::get_bitmap(char32_t chnum, bitmap_argb32 &bitmap, int32_t // now draw the character char16_t tempchar[UTF16_CHAR_MAX]; - UINT const count = INT(utf16_from_uchar(tempchar, ARRAY_LENGTH(tempchar), chnum)); + UINT const count = INT(utf16_from_uchar(tempchar, std::size(tempchar), chnum)); SetTextColor(dummyDC, RGB(0xff, 0xff, 0xff)); SetBkColor(dummyDC, RGB(0x00, 0x00, 0x00)); ExtTextOutW(dummyDC, 50 + abc.abcA, 50, ETO_OPAQUE, nullptr, reinterpret_cast(tempchar), count, nullptr); diff --git a/src/osd/modules/input/input_common.cpp b/src/osd/modules/input/input_common.cpp index ab51b6bbe34..3c27f9ae276 100644 --- a/src/osd/modules/input/input_common.cpp +++ b/src/osd/modules/input/input_common.cpp @@ -193,7 +193,7 @@ key_trans_entry keyboard_trans_table::s_default_table[] = keyboard_trans_table::keyboard_trans_table() { m_table = s_default_table; - m_table_size = ARRAY_LENGTH(s_default_table); + m_table_size = std::size(s_default_table); } #else keyboard_trans_table::keyboard_trans_table() diff --git a/src/osd/modules/input/input_common.h b/src/osd/modules/input/input_common.h index b4005a6b76a..830b5154745 100644 --- a/src/osd/modules/input/input_common.h +++ b/src/osd/modules/input/input_common.h @@ -547,7 +547,7 @@ int generic_axis_get_state(void *device_internal, void *item_internal) inline static const char *default_button_name(int which) { static char buffer[20]; - snprintf(buffer, ARRAY_LENGTH(buffer), "B%d", which); + snprintf(buffer, std::size(buffer), "B%d", which); return buffer; } @@ -558,7 +558,7 @@ inline static const char *default_button_name(int which) inline static const char *default_pov_name(int which) { static char buffer[20]; - snprintf(buffer, ARRAY_LENGTH(buffer), "POV%d", which); + snprintf(buffer, std::size(buffer), "POV%d", which); return buffer; } diff --git a/src/osd/modules/input/input_dinput.cpp b/src/osd/modules/input/input_dinput.cpp index e694cd8c63c..fcee640981c 100644 --- a/src/osd/modules/input/input_dinput.cpp +++ b/src/osd/modules/input/input_dinput.cpp @@ -312,7 +312,7 @@ public: std::string name; // generate/fetch the name - snprintf(defname, ARRAY_LENGTH(defname), "Scan%03d", keynum); + snprintf(defname, std::size(defname), "Scan%03d", keynum); name = device_item_name(devinfo, keynum, defname, nullptr); // add the item to the device diff --git a/src/osd/modules/input/input_dinput.h b/src/osd/modules/input/input_dinput.h index a2b6c2edcbb..01c37250c81 100644 --- a/src/osd/modules/input/input_dinput.h +++ b/src/osd/modules/input/input_dinput.h @@ -173,7 +173,7 @@ public: char guid_string[37]; snprintf( - guid_string, ARRAY_LENGTH(guid_string), + guid_string, std::size(guid_string), "%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], diff --git a/src/osd/modules/input/input_rawinput.cpp b/src/osd/modules/input/input_rawinput.cpp index 8859de8f6e4..e023ca6eab3 100644 --- a/src/osd/modules/input/input_rawinput.cpp +++ b/src/osd/modules/input/input_rawinput.cpp @@ -82,7 +82,7 @@ public: std::wstring enum_key(int index) const { WCHAR keyname[256]; - DWORD namelen = ARRAY_LENGTH(keyname); + DWORD namelen = std::size(keyname); if (RegEnumKeyEx(m_key, index, keyname, &namelen, nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS) return std::wstring(keyname, namelen); else @@ -653,8 +653,8 @@ protected: WCHAR keyname[100]; // generate the name - if (GetKeyNameTextW(((keynum & 0x7f) << 16) | ((keynum & 0x80) << 17), keyname, ARRAY_LENGTH(keyname)) == 0) - _snwprintf(keyname, ARRAY_LENGTH(keyname), L"Scan%03d", keynum); + if (GetKeyNameTextW(((keynum & 0x7f) << 16) | ((keynum & 0x80) << 17), keyname, std::size(keyname)) == 0) + _snwprintf(keyname, std::size(keyname), L"Scan%03d", keynum); std::string name = osd::text::from_wstring(keyname); // add the item to the device diff --git a/src/osd/modules/input/input_sdl.cpp b/src/osd/modules/input/input_sdl.cpp index 248f720d485..102987b3094 100644 --- a/src/osd/modules/input/input_sdl.cpp +++ b/src/osd/modules/input/input_sdl.cpp @@ -786,7 +786,7 @@ public: static_cast(SDL_TEXTINPUT) }; - sdl_event_manager::instance().subscribe(event_types, ARRAY_LENGTH(event_types), this); + sdl_event_manager::instance().subscribe(event_types, std::size(event_types), this); sdl_keyboard_device *devinfo; @@ -921,7 +921,7 @@ public: static_cast(SDL_MOUSEWHEEL) }; - sdl_event_manager::instance().subscribe(event_types, ARRAY_LENGTH(event_types), this); + sdl_event_manager::instance().subscribe(event_types, std::size(event_types), this); sdl_mouse_device *devinfo; char defname[20]; @@ -1148,7 +1148,7 @@ public: static_cast(SDL_JOYBUTTONUP) }; - sdl_event_manager::instance().subscribe(event_types, ARRAY_LENGTH(event_types), this); + sdl_event_manager::instance().subscribe(event_types, std::size(event_types), this); osd_printf_verbose("Joystick: End initialization\n"); } @@ -1182,7 +1182,7 @@ private: // only map place holders if there were mappings specified if (devmap->initialized) { - snprintf(tempname, ARRAY_LENGTH(tempname), "NC%d", index); + snprintf(tempname, std::size(tempname), "NC%d", index); m_sixaxis_mode ? devicelist()->create_device(machine, tempname, guid_str, *this) : devicelist()->create_device(machine, tempname, guid_str, *this); diff --git a/src/osd/modules/input/input_uwp.cpp b/src/osd/modules/input/input_uwp.cpp index 6b3b8675cff..c201152b02a 100644 --- a/src/osd/modules/input/input_uwp.cpp +++ b/src/osd/modules/input/input_uwp.cpp @@ -246,7 +246,7 @@ internal: char temp[256]; if (keyname == nullptr) { - snprintf(temp, ARRAY_LENGTH(temp), "Scan%03d", keynum); + snprintf(temp, std::size(temp), "Scan%03d", keynum); keyname = temp; } diff --git a/src/osd/modules/input/input_win32.cpp b/src/osd/modules/input/input_win32.cpp index a28fb08ebed..7128cf45f14 100644 --- a/src/osd/modules/input/input_win32.cpp +++ b/src/osd/modules/input/input_win32.cpp @@ -83,8 +83,8 @@ public: TCHAR keyname[100]; // generate the name - if (GetKeyNameText(((keynum & 0x7f) << 16) | ((keynum & 0x80) << 17), keyname, ARRAY_LENGTH(keyname)) == 0) - _sntprintf(keyname, ARRAY_LENGTH(keyname), TEXT("Scan%03d"), keynum); + if (GetKeyNameText(((keynum & 0x7f) << 16) | ((keynum & 0x80) << 17), keyname, std::size(keyname)) == 0) + _sntprintf(keyname, std::size(keyname), TEXT("Scan%03d"), keynum); std::string name = osd::text::from_tstring(keyname); // add the item to the device diff --git a/src/osd/modules/input/input_x11.cpp b/src/osd/modules/input/input_x11.cpp index baa8cf2f56f..757424f3858 100644 --- a/src/osd/modules/input/input_x11.cpp +++ b/src/osd/modules/input/input_x11.cpp @@ -540,7 +540,7 @@ public: // register ourself to handle events from event manager int event_types[] = { motion_type, button_press_type, button_release_type }; osd_printf_verbose("Events types to register: motion:%d, press:%d, release:%d\n", motion_type, button_press_type, button_release_type); - x11_event_manager::instance().subscribe(event_types, ARRAY_LENGTH(event_types), this); + x11_event_manager::instance().subscribe(event_types, std::size(event_types), this); } osd_printf_verbose("Lightgun: End initialization\n"); @@ -604,7 +604,7 @@ private: { if (m_lightgun_map.initialized) { - snprintf(tempname, ARRAY_LENGTH(tempname), "NC%d", index); + snprintf(tempname, std::size(tempname), "NC%d", index); return devicelist()->create_device(machine, tempname, tempname, *this); } else return nullptr; diff --git a/src/osd/modules/lib/osdlib_macosx.cpp b/src/osd/modules/lib/osdlib_macosx.cpp index 27124b6ef2e..19b228b6369 100644 --- a/src/osd/modules/lib/osdlib_macosx.cpp +++ b/src/osd/modules/lib/osdlib_macosx.cpp @@ -67,7 +67,7 @@ void osd_break_into_debugger(const char *message) struct kinfo_proc info; info.kp_proc.p_flag = 0; std::size_t infosz = sizeof(info); - sysctl(mib, ARRAY_LENGTH(mib), &info, &infosz, nullptr, 0); + sysctl(mib, std::size(mib), &info, &infosz, nullptr, 0); if (info.kp_proc.p_flag & P_TRACED) { printf("MAME exception: %s\n", message); diff --git a/src/osd/osdcomm.h b/src/osd/osdcomm.h index aec11063583..75370f1b81b 100644 --- a/src/osd/osdcomm.h +++ b/src/osd/osdcomm.h @@ -13,11 +13,10 @@ #pragma once +#include #include #include -#include -#include #include @@ -81,19 +80,6 @@ constexpr uint64_t concat_64(uint32_t hi, uint32_t lo) { return (uint64_t(hi) << constexpr uint32_t extract_64hi(uint64_t val) { return uint32_t(val >> 32); } constexpr uint32_t extract_64lo(uint64_t val) { return uint32_t(val); } -// Highly useful template for compile-time knowledge of an array size -template constexpr size_t ARRAY_LENGTH(T (&)[N]) { return N;} -template constexpr size_t ARRAY_LENGTH(std::array const &) { return N; } - -// For declaring an array of the same dimensions as another array (including multi-dimensional arrays) -template struct equivalent_array_or_type { typedef T type; }; -template struct equivalent_array_or_type { typedef typename equivalent_array_or_type::type type[N]; }; -template using equivalent_array_or_type_t = typename equivalent_array_or_type::type; -template struct equivalent_array { }; -template struct equivalent_array { typedef equivalent_array_or_type_t type[N]; }; -template using equivalent_array_t = typename equivalent_array::type; -#define EQUIVALENT_ARRAY(a, T) equivalent_array_t > - // Macros for normalizing data into big or little endian formats constexpr uint16_t swapendian_int16(uint16_t val) { return (val << 8) | (val >> 8); } diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index c423108a0f0..57b43116bd4 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -97,7 +97,7 @@ public: char buffer[2048]; if (channel == OSD_OUTPUT_CHANNEL_ERROR) { - vsnprintf(buffer, ARRAY_LENGTH(buffer), msg, args); + vsnprintf(buffer, std::size(buffer), msg, args); std::wstring wcbuffer(osd::text::to_wstring(buffer)); std::wstring wcappname(osd::text::to_wstring(emulator_info::get_appname())); @@ -107,7 +107,7 @@ public: } else if (channel == OSD_OUTPUT_CHANNEL_VERBOSE) { - vsnprintf(buffer, ARRAY_LENGTH(buffer), msg, args); + vsnprintf(buffer, std::size(buffer), msg, args); std::wstring wcbuffer = osd::text::to_wstring(buffer); OutputDebugString(wcbuffer.c_str()); @@ -421,7 +421,7 @@ void MameMainApp::Run() GetModuleFileNameA(nullptr, exe_path, MAX_PATH); char* args[3] = { exe_path, (char*)"-verbose", (char*)"-mouse" }; - DWORD result = emulator_info::start_frontend(*m_options.get(), *m_osd.get(), ARRAY_LENGTH(args), args); + DWORD result = emulator_info::start_frontend(*m_options.get(), *m_osd.get(), std::size(args), args); osd_output::pop(&winerror); } diff --git a/src/osd/windows/winutf8.cpp b/src/osd/windows/winutf8.cpp index dcaa99ce7bc..cb6ab1a3dbc 100644 --- a/src/osd/windows/winutf8.cpp +++ b/src/osd/windows/winutf8.cpp @@ -108,7 +108,7 @@ std::string win_get_window_text_utf8(HWND window) { TCHAR t_buffer[256]; auto title = Windows::UI::ViewManagement::ApplicationView::GetForCurrentView()->Title; - wcsncpy(t_buffer, title->Data(), ARRAY_LENGTH(t_buffer)); + wcsncpy(t_buffer, title->Data(), std::size(t_buffer)); return osd::text::from_tstring(t_buffer); } #endif diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp index 6ea7648522c..b243a241c4f 100644 --- a/src/tools/chdman.cpp +++ b/src/tools/chdman.cpp @@ -504,8 +504,8 @@ public: uint32_t samples = (uint64_t(m_info.rate) * uint64_t(effframe + 1) * uint64_t(1000000) + m_info.fps_times_1million - 1) / uint64_t(m_info.fps_times_1million) - first_sample; // loop over channels and read the samples - int channels = unsigned((std::min)(m_info.channels, ARRAY_LENGTH(m_audio))); - EQUIVALENT_ARRAY(m_audio, int16_t *) samplesptr; + int channels = unsigned((std::min)(m_info.channels, std::size(m_audio))); + int16_t *samplesptr[std::size(m_audio)]; for (int chnum = 0; chnum < channels; chnum++) { // read the sound samples @@ -886,7 +886,7 @@ static int print_help(const std::string &argv0, const command_description &desc, // print usage for this command printf("Usage:\n"); printf(" %s %s [options], where valid options are:\n", argv0.c_str(), desc.name); - for (int valid = 0; valid < ARRAY_LENGTH(desc.valid_options); valid++) + for (int valid = 0; valid < std::size(desc.valid_options); valid++) { // determine whether we are required const char *option = desc.valid_options[valid]; @@ -1527,8 +1527,8 @@ static void do_info(parameters_map ¶ms) codec = CHD_CODEC_MINI + 1 + comptype; break; } - if (codec > ARRAY_LENGTH(compression_types)) - codec = ARRAY_LENGTH(compression_types) - 1; + if (codec >= std::size(compression_types)) + codec = std::size(compression_types) - 1; // count stats compression_types[codec]++; @@ -1538,7 +1538,7 @@ static void do_info(parameters_map ¶ms) printf("\n"); printf(" Hunks Percent Name\n"); printf("---------- ------- ------------------------------------\n"); - for (int comptype = 0; comptype < ARRAY_LENGTH(compression_types); comptype++) + for (int comptype = 0; comptype < std::size(compression_types); comptype++) if (compression_types[comptype] != 0) { // determine the name @@ -1847,7 +1847,7 @@ static void do_create_hd(parameters_map ¶ms) { uint32_t id = parse_number(template_str->second->c_str()); - if (id >= ARRAY_LENGTH(s_hd_templates)) + if (id >= std::size(s_hd_templates)) report_error(1, "Template '%d' is invalid\n", id); cylinders = s_hd_templates[id].cylinders; @@ -2668,7 +2668,7 @@ static void do_extract_ld(parameters_map ¶ms) avconfig.video = &avvideo; avconfig.maxsamples = max_samples_per_frame; avconfig.actsamples = &actsamples; - for (int chnum = 0; chnum < ARRAY_LENGTH(audio_data); chnum++) + for (int chnum = 0; chnum < std::size(audio_data); chnum++) { audio_data[chnum].resize(std::max(1U,max_samples_per_frame)); avconfig.audio[chnum] = &audio_data[chnum][0]; @@ -2928,7 +2928,7 @@ static void do_list_templates(parameters_map ¶ms) printf("ID Manufacturer Model Cylinders Heads Sectors Sector Size Total Size\n"); printf("------------------------------------------------------------------------------------\n"); - for (int id = 0; id < ARRAY_LENGTH(s_hd_templates); id++) + for (int id = 0; id < std::size(s_hd_templates); id++) { printf("%2d %-13s %-15s %9d %5d %7d %11d %7d MB\n", id, @@ -2990,7 +2990,7 @@ int CLIB_DECL main(int argc, char *argv[]) // iterate over valid options int valid; - for (valid = 0; valid < ARRAY_LENGTH(desc.valid_options); valid++) + for (valid = 0; valid < std::size(desc.valid_options); valid++) { // reduce to the option name const char *validname = desc.valid_options[valid]; @@ -3001,10 +3001,10 @@ int CLIB_DECL main(int argc, char *argv[]) // find the matching option description int optnum; - for (optnum = 0; optnum < ARRAY_LENGTH(s_options); optnum++) + for (optnum = 0; optnum < std::size(s_options); optnum++) if (strcmp(s_options[optnum].name, validname) == 0) break; - assert(optnum != ARRAY_LENGTH(s_options)); + assert(optnum != std::size(s_options)); // do we match? const option_description &odesc = s_options[optnum]; @@ -3028,12 +3028,12 @@ int CLIB_DECL main(int argc, char *argv[]) } // if not valid, error - if (valid == ARRAY_LENGTH(desc.valid_options)) + if (valid == std::size(desc.valid_options)) return print_help(args[0], desc, "Option not valid for this command"); } // make sure we got all our required parameters - for (int valid = 0; valid < ARRAY_LENGTH(desc.valid_options); valid++) + for (int valid = 0; valid < std::size(desc.valid_options); valid++) { const char *validname = desc.valid_options[valid]; if (validname == nullptr) diff --git a/src/tools/floptool.cpp b/src/tools/floptool.cpp index 534349e4089..4f1e0172444 100644 --- a/src/tools/floptool.cpp +++ b/src/tools/floptool.cpp @@ -131,7 +131,7 @@ void CLIB_DECL ATTR_PRINTF(1,2) logerror(const char *format, ...) va_end(arg); } -enum { FORMAT_COUNT = ARRAY_LENGTH(floppy_formats) }; +static constexpr size_t FORMAT_COUNT = std::size(floppy_formats); static floppy_image_format_t *formats[FORMAT_COUNT]; static std::vector variants; diff --git a/src/tools/imgtool/filtbas.cpp b/src/tools/imgtool/filtbas.cpp index b785403ee83..49dfeb57ddd 100644 --- a/src/tools/imgtool/filtbas.cpp +++ b/src/tools/imgtool/filtbas.cpp @@ -207,7 +207,7 @@ static imgtoolerr_t basic_writefile(const basictokens *tokens, if ((c == '\r') || (c == '\n')) break; - if (pos <= ARRAY_LENGTH(buf) - 1) + if (pos <= std::size(buf) - 1) { buf[pos++] = c; } @@ -2943,8 +2943,8 @@ static const char *const basic_100[] = /* "BASIC 10.0" - supported by c65 & clon static const basictoken_tableent cocobas_tokenents[] = { - { 0x00, 0x80, cocobas_statements, ARRAY_LENGTH(cocobas_statements) }, - { 0xff, 0x80, cocobas_functions, ARRAY_LENGTH(cocobas_functions) } + { 0x00, 0x80, cocobas_statements, std::size(cocobas_statements) }, + { 0xff, 0x80, cocobas_functions, std::size(cocobas_functions) } }; static const basictokens cocobas_tokens = @@ -2955,7 +2955,7 @@ static const basictokens cocobas_tokens = {0xFF, 0x00, 0x00}, true, cocobas_tokenents, - ARRAY_LENGTH(cocobas_tokenents) + std::size(cocobas_tokenents) }; static imgtoolerr_t cocobas_readfile(imgtool::partition &partition, const char *filename, @@ -2989,8 +2989,8 @@ void filter_cocobas_getinfo(uint32_t state, union filterinfo *info) static const basictoken_tableent dragonbas_tokenents[] = { - { 0x00, 0x80, dragonbas_statements, ARRAY_LENGTH(dragonbas_statements) }, - { 0xff, 0x80, dragonbas_functions, ARRAY_LENGTH(dragonbas_functions) } + { 0x00, 0x80, dragonbas_statements, std::size(dragonbas_statements) }, + { 0xff, 0x80, dragonbas_functions, std::size(dragonbas_functions) } }; static const basictokens dragonbas_tokens = @@ -3001,7 +3001,7 @@ static const basictokens dragonbas_tokens = {0x55, 0x01, 0x24, 0x01, 0x00, 0x2A, 0x8B, 0x8D, 0xAA}, true, dragonbas_tokenents, - ARRAY_LENGTH(dragonbas_tokenents) + std::size(dragonbas_tokenents) }; static imgtoolerr_t dragonbas_readfile(imgtool::partition &partition, const char *filename, @@ -3035,7 +3035,7 @@ void filter_dragonbas_getinfo(uint32_t state, union filterinfo *info) static const basictoken_tableent vzbas_tokenents[] = { - { 0x00, 0x80, vzbas, ARRAY_LENGTH(vzbas) } + { 0x00, 0x80, vzbas, std::size(vzbas) } }; @@ -3048,7 +3048,7 @@ static const basictokens vzbas_tokens = {0x00}, false, vzbas_tokenents, - ARRAY_LENGTH(vzbas_tokenents) + std::size(vzbas_tokenents) }; static imgtoolerr_t vzbas_readfile(imgtool::partition &partition, const char *filename, @@ -3082,8 +3082,8 @@ void filter_vzbas_getinfo(uint32_t state, union filterinfo *info) static const basictoken_tableent bml3bas_tokenents[] = { - { 0x00, 0x80, bml3bas_statements, ARRAY_LENGTH(bml3bas_statements) }, - { 0xff, 0x80, bml3bas_functions, ARRAY_LENGTH(bml3bas_functions) } + { 0x00, 0x80, bml3bas_statements, std::size(bml3bas_statements) }, + { 0xff, 0x80, bml3bas_functions, std::size(bml3bas_functions) } }; static const basictokens bml3bas_tokens = @@ -3094,7 +3094,7 @@ static const basictokens bml3bas_tokens = {0xFF, 0x00, 0x00}, true, bml3bas_tokenents, - ARRAY_LENGTH(bml3bas_tokenents) + std::size(bml3bas_tokenents) }; static imgtoolerr_t bml3bas_readfile(imgtool::partition &partition, const char *filename, diff --git a/src/tools/imgtool/imgterrs.cpp b/src/tools/imgtool/imgterrs.cpp index bd679440309..863e61e2d3e 100644 --- a/src/tools/imgtool/imgterrs.cpp +++ b/src/tools/imgtool/imgterrs.cpp @@ -10,7 +10,7 @@ #include "imgtool.h" #include "imgterrs.h" -#include "osdcomm.h" +#include static const char *const msgs[] = { @@ -50,6 +50,6 @@ const char *imgtool_error(imgtoolerr_t err) { err = (imgtoolerr_t)(ERRORCODE(err) - 1); assert(err >= 0); - assert(err < ARRAY_LENGTH(msgs)); + assert(err < std::size(msgs)); return msgs[err]; } diff --git a/src/tools/imgtool/imgtool.cpp b/src/tools/imgtool/imgtool.cpp index 6d14c90a369..4eaf97a1451 100644 --- a/src/tools/imgtool/imgtool.cpp +++ b/src/tools/imgtool/imgtool.cpp @@ -937,7 +937,7 @@ char *imgtool_temp_str(void) { static int index; static char temp_string_pool[32][256]; - return temp_string_pool[index++ % ARRAY_LENGTH(temp_string_pool)]; + return temp_string_pool[index++ % std::size(temp_string_pool)]; } @@ -1603,7 +1603,7 @@ imgtoolerr_t imgtool::partition::get_chain_string(const char *path, char *buffer chain[0].block = ~0; last_block = chain[0].block; - err = get_chain(path, chain, ARRAY_LENGTH(chain)); + err = get_chain(path, chain, std::size(chain)); if (err) return err; @@ -2362,7 +2362,7 @@ imgtoolerr_t imgtool::directory::get_next(imgtool_dirent &ent) { return imgtoolerr_t(IMGTOOLERR_BADFILENAME); } - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", new_fname.c_str()); + snprintf(ent.filename, std::size(ent.filename), "%s", new_fname.c_str()); } // don't trust the module! diff --git a/src/tools/imgtool/main.cpp b/src/tools/imgtool/main.cpp index 360f015b233..a0a9be24054 100644 --- a/src/tools/imgtool/main.cpp +++ b/src/tools/imgtool/main.cpp @@ -97,7 +97,7 @@ static int parse_options(int argc, char *argv[], int minunnamed, int maxunnamed, if (*fork) goto optionalreadyspecified; - snprintf(buf, ARRAY_LENGTH(buf), "%s", value); + snprintf(buf, std::size(buf), "%s", value); *fork = buf; } else @@ -564,7 +564,7 @@ static int cmd_identify(const struct command *c, int argc, char *argv[]) imgtoolerr_t err; int i; - err = imgtool::image::identify_file(argv[0], modules, ARRAY_LENGTH(modules)); + err = imgtool::image::identify_file(argv[0], modules, std::size(modules)); if (err) { reporterror(err, c, nullptr, argv[0], nullptr, nullptr, nullptr); @@ -895,7 +895,7 @@ int main(int argc, char *argv[]) if (argc > 1) { /* figure out what command they are running, and run it */ - for (i = 0; i < ARRAY_LENGTH(cmds); i++) + for (i = 0; i < std::size(cmds); i++) { c = &cmds[i]; if (!core_stricmp(c->name, argv[1])) @@ -934,7 +934,7 @@ int main(int argc, char *argv[]) // Usage util::stream_format(std::wcerr, L"imgtool - Generic image manipulation tool for use with MAME\n\n"); - for (i = 0; i < ARRAY_LENGTH(cmds); i++) + for (i = 0; i < std::size(cmds); i++) { writeusage(std::wcerr, (i == 0), &cmds[i], argv); } diff --git a/src/tools/imgtool/modules.cpp b/src/tools/imgtool/modules.cpp index 38c94d3eb35..a42ea6be6f0 100644 --- a/src/tools/imgtool/modules.cpp +++ b/src/tools/imgtool/modules.cpp @@ -29,8 +29,6 @@ static void (*const modules[])(const imgtool_class *imgclass, uint32_t state, un /* step 3: declare imgtool_create_canonical_library() */ imgtoolerr_t imgtool_create_canonical_library(bool omit_untested, std::unique_ptr &library) { - size_t i; - /* list of modules that we drop */ static const char *const irrelevant_modules[] = { @@ -42,14 +40,12 @@ imgtoolerr_t imgtool_create_canonical_library(bool omit_untested, std::unique_pt return IMGTOOLERR_OUTOFMEMORY; // create all modules - for (i = 0; i < ARRAY_LENGTH(modules); i++) - library->add(modules[i]); + for (auto &module : modules) + library->add(module); // remove irrelevant modules - for (i = 0; i < ARRAY_LENGTH(irrelevant_modules); i++) - { - library->unlink(irrelevant_modules[i]); - } + for (auto &module : irrelevant_modules) + library->unlink(module); // if we are omitting untested, go through and block out the functionality in question if (omit_untested) diff --git a/src/tools/imgtool/modules/bml3.cpp b/src/tools/imgtool/modules/bml3.cpp index 19c60570acc..579a1e6d137 100644 --- a/src/tools/imgtool/modules/bml3.cpp +++ b/src/tools/imgtool/modules/bml3.cpp @@ -604,8 +604,8 @@ eof: get_dirent_fname(fname, &rsent); - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", fname); - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%d %c", (int) rsent.ftype, (char) (rsent.asciiflag + 'B')); + snprintf(ent.filename, std::size(ent.filename), "%s", fname); + snprintf(ent.attr, std::size(ent.attr), "%d %c", (int) rsent.ftype, (char) (rsent.asciiflag + 'B')); } return IMGTOOLERR_SUCCESS; } diff --git a/src/tools/imgtool/modules/concept.cpp b/src/tools/imgtool/modules/concept.cpp index 18b80c73c23..71417b5aafb 100644 --- a/src/tools/imgtool/modules/concept.cpp +++ b/src/tools/imgtool/modules/concept.cpp @@ -357,8 +357,8 @@ static imgtoolerr_t concept_image_nextenum(imgtool::directory &enumeration, imgt int len = iter->image->dev_dir.file_dir[iter->index].filename[0]; const char *type; - if (len > ARRAY_LENGTH(ent.filename)) - len = ARRAY_LENGTH(ent.filename); + if (len > std::size(ent.filename)) + len = std::size(ent.filename); memcpy(ent.filename, iter->image->dev_dir.file_dir[iter->index].filename + 1, len); ent.filename[len] = 0; @@ -382,7 +382,7 @@ static imgtoolerr_t concept_image_nextenum(imgtool::directory &enumeration, imgt type = "???"; break; } - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%s", type); + snprintf(ent.attr, std::size(ent.attr), "%s", type); /* len in physrecs */ ent.filesize = get_UINT16xE(iter->image->dev_dir.vol_hdr.disk_flipped, iter->image->dev_dir.file_dir[iter->index].next_block) diff --git a/src/tools/imgtool/modules/dgndos.cpp b/src/tools/imgtool/modules/dgndos.cpp index a6ad25c3d5d..9542cc648c6 100644 --- a/src/tools/imgtool/modules/dgndos.cpp +++ b/src/tools/imgtool/modules/dgndos.cpp @@ -539,8 +539,8 @@ static imgtoolerr_t dgndos_diskimage_nextenum(imgtool::directory &enumeration, i err = dgndos_count_dirents(entire_track20, dgnent, &dir_ent_count); if (err) return err; - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", fname.c_str()); - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%c (%03d)", + snprintf(ent.filename, std::size(ent.filename), "%s", fname.c_str()); + snprintf(ent.attr, std::size(ent.attr), "%c (%03d)", (char) (dgnent.flag_byte & DGNDOS_PROTECT_BIT ? 'P' : '.'), dir_ent_count); } diff --git a/src/tools/imgtool/modules/fat.cpp b/src/tools/imgtool/modules/fat.cpp index 68110275e07..dba4b7cc03e 100644 --- a/src/tools/imgtool/modules/fat.cpp +++ b/src/tools/imgtool/modules/fat.cpp @@ -1326,11 +1326,11 @@ static imgtoolerr_t fat_read_dirent(imgtool::partition &partition, fat_file *fil lfn_checksum = entry[13]; } lfn_lastentry = entry[0] & 0x3F; - prepend_lfn_bytes(lfn_buf, ARRAY_LENGTH(lfn_buf), + prepend_lfn_bytes(lfn_buf, std::size(lfn_buf), &lfn_len, entry, 28, 2); - prepend_lfn_bytes(lfn_buf, ARRAY_LENGTH(lfn_buf), + prepend_lfn_bytes(lfn_buf, std::size(lfn_buf), &lfn_len, entry, 14, 6); - prepend_lfn_bytes(lfn_buf, ARRAY_LENGTH(lfn_buf), + prepend_lfn_bytes(lfn_buf, std::size(lfn_buf), &lfn_len, entry, 1, 5); } else if (freeent && (freeent->position == ~0)) @@ -1372,8 +1372,8 @@ static imgtoolerr_t fat_read_dirent(imgtool::partition &partition, fat_file *fil j = 0; do { - i += uchar_from_utf16(&ch, &lfn_buf[i], ARRAY_LENGTH(lfn_buf) - i); - j += utf8_from_uchar(&ent.long_filename[j], ARRAY_LENGTH(ent.long_filename) - j, ch); + i += uchar_from_utf16(&ch, &lfn_buf[i], std::size(lfn_buf) - i); + j += utf8_from_uchar(&ent.long_filename[j], std::size(ent.long_filename) - j, ch); } while(ch != 0); } @@ -1834,7 +1834,7 @@ static imgtoolerr_t fat_partition_nextenum(imgtool::directory &enumeration, imgt return err; /* copy stuff from the FAT dirent to the Imgtool dirent */ - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", fatent.long_filename[0] + snprintf(ent.filename, std::size(ent.filename), "%s", fatent.long_filename[0] ? fatent.long_filename : fatent.short_filename); ent.filesize = fatent.filesize; ent.directory = fatent.directory; diff --git a/src/tools/imgtool/modules/mac.cpp b/src/tools/imgtool/modules/mac.cpp index f7bc2ff118b..b6f0c076f37 100644 --- a/src/tools/imgtool/modules/mac.cpp +++ b/src/tools/imgtool/modules/mac.cpp @@ -5308,11 +5308,11 @@ static void mac_image_info(imgtool::image &img, std::ostream &stream) switch (image->format) { case L2I_MFS: - mac_to_c_strncpy(buffer, ARRAY_LENGTH(buffer), image->u.mfs.volname); + mac_to_c_strncpy(buffer, std::size(buffer), image->u.mfs.volname); break; case L2I_HFS: - mac_to_c_strncpy(buffer, ARRAY_LENGTH(buffer), image->u.hfs.volname); + mac_to_c_strncpy(buffer, std::size(buffer), image->u.hfs.volname); break; } @@ -5397,7 +5397,7 @@ static imgtoolerr_t mfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) } /* copy info */ - mac_to_c_strncpy(ent.filename, ARRAY_LENGTH(ent.filename), cur_dir_entry->name); + mac_to_c_strncpy(ent.filename, std::size(ent.filename), cur_dir_entry->name); ent.filesize = get_UINT32BE(cur_dir_entry->dataPhysicalSize) + get_UINT32BE(cur_dir_entry->rsrcPhysicalSize); @@ -5489,7 +5489,7 @@ static imgtoolerr_t hfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) } /* initialize file path buffer */ - cur_name_head = ARRAY_LENGTH(ent.filename); + cur_name_head = std::size(ent.filename); if (cur_name_head > 0) { cur_name_head--; @@ -5497,8 +5497,8 @@ static imgtoolerr_t hfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) } /* insert folder/file name in buffer */ - mac_to_c_strncpy(ent.filename, ARRAY_LENGTH(ent.filename), catrec_key->cName); -// concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename) - 1, buf); + mac_to_c_strncpy(ent.filename, std::size(ent.filename), catrec_key->cName); +// concat_fname(ent.filename, &cur_name_head, std::size(ent.filename) - 1, buf); #if 0 /* extract parent directory ID */ @@ -5513,10 +5513,10 @@ static imgtoolerr_t hfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) if (err) { /* error */ - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename) - 1, ":"); - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename) - 1, "???"); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename) - 1, ":"); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename) - 1, "???"); - memmove(ent.filename, ent.filename+cur_name_head, ARRAY_LENGTH(ent.filename) - cur_name_head); + memmove(ent.filename, ent.filename+cur_name_head, std::size(ent.filename) - cur_name_head); ent.corrupt = 1; return err; } @@ -5526,10 +5526,10 @@ static imgtoolerr_t hfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) if (dataRecType != hcrt_FolderThread) { /* error */ - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename)-1, ":"); - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename)-1, "???"); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename)-1, ":"); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename)-1, "???"); - memmove(ent.filename, ent.filename+cur_name_head, ARRAY_LENGTH(ent.filename)-cur_name_head); + memmove(ent.filename, ent.filename+cur_name_head, std::size(ent.filename)-cur_name_head); ent.corrupt = 1; return IMGTOOLERR_CORRUPTIMAGE; } @@ -5537,13 +5537,13 @@ static imgtoolerr_t hfs_image_nextenum(mac_iterator *iter, imgtool_dirent &ent) /* got folder thread record: insert the folder name at the start of file path, then iterate */ mac_to_c_strncpy(buf, sizeof(buf), catrec_data->thread.nodeName); - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename) - 1, ":"); - concat_fname(ent.filename, &cur_name_head, ARRAY_LENGTH(ent.filename) - 1, buf); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename) - 1, ":"); + concat_fname(ent.filename, &cur_name_head, std::size(ent.filename) - 1, buf); /* extract parent directory ID */ parID = get_UINT32BE(catrec_data->thread.parID); } - memmove(ent.filename, ent.filename+cur_name_head, ARRAY_LENGTH(ent.filename) -cur_name_head); + memmove(ent.filename, ent.filename+cur_name_head, std::size(ent.filename) -cur_name_head); #endif return IMGTOOLERR_SUCCESS; } @@ -6185,8 +6185,8 @@ static imgtoolerr_t mac_image_geticoninfo(imgtool::partition &partition, const c const void *fref; uint32_t resource_length; - assert((ARRAY_LENGTH(attrs) - 1) - == ARRAY_LENGTH(attr_values)); + assert((std::size(attrs) - 1) + == std::size(attr_values)); /* first retrieve type and creator code */ err = mac_image_getattrs(partition, path, attrs, attr_values); diff --git a/src/tools/imgtool/modules/os9.cpp b/src/tools/imgtool/modules/os9.cpp index 539b53c1818..69dfc0e6ad1 100644 --- a/src/tools/imgtool/modules/os9.cpp +++ b/src/tools/imgtool/modules/os9.cpp @@ -275,7 +275,7 @@ static imgtoolerr_t os9_decode_file_header(imgtool::image &image, /* read all sector map entries */ max_entries = (disk_info->sector_size - 16) / 5; - max_entries = (std::min)(max_entries, ARRAY_LENGTH(info->sector_map) - 1); + max_entries = (std::min)(max_entries, std::size(info->sector_map) - 1); for (i = 0; i < max_entries; i++) { lsn = pick_integer_be(header, 16 + (i * 5) + 0, 3); @@ -393,7 +393,7 @@ static imgtoolerr_t os9_set_file_size(imgtool::image &image, /* first find out the size of our sector map */ sector_map_length = 0; lsn = 0; - while((lsn < current_lsn_count) && (sector_map_length < ARRAY_LENGTH(file_info->sector_map))) + while((lsn < current_lsn_count) && (sector_map_length < std::size(file_info->sector_map))) { if (file_info->sector_map[sector_map_length].count == 0) return os9_corrupt_file_error(file_info); @@ -434,7 +434,7 @@ static imgtoolerr_t os9_set_file_size(imgtool::image &image, { file_info->sector_map[sector_map_length - 1].count++; } - else if (sector_map_length >= ARRAY_LENGTH(file_info->sector_map)) + else if (sector_map_length >= std::size(file_info->sector_map)) { return IMGTOOLERR_NOSPACE; } @@ -461,7 +461,7 @@ static imgtoolerr_t os9_set_file_size(imgtool::image &image, /* do we have to write the sector map? */ if (sector_map_length >= 0) { - for (i = 0; i < (std::min)(sector_map_length + 1, ARRAY_LENGTH(file_info->sector_map)); i++) + for (i = 0; i < (std::min)(sector_map_length + 1, std::size(file_info->sector_map)); i++) { place_integer_be(header, 16 + (i * 5) + 0, 3, file_info->sector_map[i].lsn); place_integer_be(header, 16 + (i * 5) + 3, 2, file_info->sector_map[i].count); @@ -952,8 +952,8 @@ static imgtoolerr_t os9_diskimage_nextenum(imgtool::directory &enumeration, imgt return err; /* fill out imgtool_dirent structure */ - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", filename); - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%c%c%c%c%c%c%c%c", + snprintf(ent.filename, std::size(ent.filename), "%s", filename); + snprintf(ent.attr, std::size(ent.attr), "%c%c%c%c%c%c%c%c", file_info.directory ? 'd' : '-', file_info.non_sharable ? 's' : '-', file_info.public_execute ? 'x' : '-', @@ -1143,7 +1143,7 @@ static imgtoolerr_t os9_diskimage_delete(imgtool::partition &partition, const ch if (err) return err; - for (i = 0; (i < ARRAY_LENGTH(file_info.sector_map)) && file_info.sector_map[i].count; i++) + for (i = 0; (i < std::size(file_info.sector_map)) && file_info.sector_map[i].count; i++) { lsn = file_info.sector_map[i].lsn; for (j = 0; j < file_info.sector_map[i].count; j++) diff --git a/src/tools/imgtool/modules/pc_hard.cpp b/src/tools/imgtool/modules/pc_hard.cpp index c04ad33cce6..57e88d6c2a4 100644 --- a/src/tools/imgtool/modules/pc_hard.cpp +++ b/src/tools/imgtool/modules/pc_hard.cpp @@ -193,7 +193,6 @@ done: static imgtoolerr_t pc_chd_read_partition_header(imgtool::image &image) { imgtoolerr_t err; - int i; const uint8_t *partition_info; pc_chd_image_info *info; uint8_t buffer[FAT_SECLEN]; @@ -209,7 +208,7 @@ static imgtoolerr_t pc_chd_read_partition_header(imgtool::image &image) if ((buffer[510] != 0x55) || (buffer[511] != 0xAA)) return IMGTOOLERR_CORRUPTIMAGE; - for (i = 0; i < ARRAY_LENGTH(info->partitions); i++) + for (int i = 0; i < std::size(info->partitions); i++) { partition_info = &buffer[446 + i * 16]; diff --git a/src/tools/imgtool/modules/prodos.cpp b/src/tools/imgtool/modules/prodos.cpp index 6db41ae529b..2bce71da781 100644 --- a/src/tools/imgtool/modules/prodos.cpp +++ b/src/tools/imgtool/modules/prodos.cpp @@ -1183,7 +1183,7 @@ static imgtoolerr_t prodos_lookup_path(imgtool::image &image, const char *path, ent->key_pointer[0] = new_file_block; ent->file_type = 0x3F3F3F3F; ent->file_creator = 0x3F3F3F3F; - strncpy(ent->filename, old_path, ARRAY_LENGTH(ent->filename)); + strncpy(ent->filename, old_path, std::size(ent->filename)); /* and place it */ err = prodos_put_dirent(image, direnum, ent); diff --git a/src/tools/imgtool/modules/rsdos.cpp b/src/tools/imgtool/modules/rsdos.cpp index 86d29679d3b..f1ae197c03b 100644 --- a/src/tools/imgtool/modules/rsdos.cpp +++ b/src/tools/imgtool/modules/rsdos.cpp @@ -340,8 +340,8 @@ eof: std::string fname = get_dirent_fname(rsent); - snprintf(ent.filename, ARRAY_LENGTH(ent.filename), "%s", fname.c_str()); - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%d %c", (int) rsent.ftype, (char) (rsent.asciiflag + 'B')); + snprintf(ent.filename, std::size(ent.filename), "%s", fname.c_str()); + snprintf(ent.attr, std::size(ent.attr), "%d %c", (int) rsent.ftype, (char) (rsent.asciiflag + 'B')); } return IMGTOOLERR_SUCCESS; } diff --git a/src/tools/imgtool/modules/thomson.cpp b/src/tools/imgtool/modules/thomson.cpp index 2acb03d8b01..131fd422c17 100644 --- a/src/tools/imgtool/modules/thomson.cpp +++ b/src/tools/imgtool/modules/thomson.cpp @@ -1740,7 +1740,7 @@ static imgtoolerr_t thom_basic_write_file(imgtool::partition &partition, if ((c == '\r') || (c == '\n')) break; - if (pos <= ARRAY_LENGTH(buf) - 1) + if (pos <= std::size(buf) - 1) { buf[pos++] = c; } diff --git a/src/tools/imgtool/modules/ti99.cpp b/src/tools/imgtool/modules/ti99.cpp index 2e55c85f082..bc1968976d0 100644 --- a/src/tools/imgtool/modules/ti99.cpp +++ b/src/tools/imgtool/modules/ti99.cpp @@ -1837,7 +1837,7 @@ static int dsk_read_catalog(struct ti99_lvl2_imgref *l2_img, int aphysrec, ti99_ || ((dest->files[i].fdr_ptr && dest->files[i+1].fdr_ptr) && (memcmp(dest->files[i].name, dest->files[i+1].name, 10) >= 0))) { /* if the catalog is not sorted, we repair it */ - qsort(dest->files, ARRAY_LENGTH(dest->files), sizeof(dest->files[0]), + qsort(dest->files, std::size(dest->files), sizeof(dest->files[0]), cat_file_compare_qsort); break; } @@ -4275,10 +4275,10 @@ static imgtoolerr_t dsk_image_nextenum(imgtool::directory &enumeration, imgtool_ { if (iter->listing_subdirs) { - fname_to_str(ent.filename, iter->image->dsk.catalogs[0].subdirs[iter->index[iter->level]].name, ARRAY_LENGTH(ent.filename)); + fname_to_str(ent.filename, iter->image->dsk.catalogs[0].subdirs[iter->index[iter->level]].name, std::size(ent.filename)); /* set type of DIR */ - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "DIR"); + snprintf(ent.attr, std::size(ent.attr), "DIR"); /* len in physrecs */ /* @BN@ return length in bytes */ @@ -4299,7 +4299,7 @@ static imgtoolerr_t dsk_image_nextenum(imgtool::directory &enumeration, imgtool_ if (reply) return IMGTOOLERR_READERROR; #if 0 - fname_to_str(ent.filename, fdr.name, ARRAY_LENGTH(ent.filename)); + fname_to_str(ent.filename, fdr.name, std::size(ent.filename)); #else { char buf[11]; @@ -4307,19 +4307,19 @@ static imgtoolerr_t dsk_image_nextenum(imgtool::directory &enumeration, imgtool_ ent.filename[0] = '\0'; if (iter->level) { - fname_to_str(ent.filename, iter->image->dsk.catalogs[0].subdirs[iter->index[0]].name, ARRAY_LENGTH(ent.filename)); - strncat(ent.filename, ".", ARRAY_LENGTH(ent.filename) - 1); + fname_to_str(ent.filename, iter->image->dsk.catalogs[0].subdirs[iter->index[0]].name, std::size(ent.filename)); + strncat(ent.filename, ".", std::size(ent.filename) - 1); } fname_to_str(buf, fdr.name, 11); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); } #endif /* parse flags */ if (fdr.flags & fdr99_f_program) - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "PGM%s", + snprintf(ent.attr, std::size(ent.attr), "PGM%s", (fdr.flags & fdr99_f_wp) ? " R/O" : ""); else - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%c/%c %d%s", + snprintf(ent.attr, std::size(ent.attr), "%c/%c %d%s", (fdr.flags & fdr99_f_int) ? 'I' : 'D', (fdr.flags & fdr99_f_var) ? 'V' : 'F', fdr.reclen, @@ -4399,7 +4399,7 @@ static imgtoolerr_t win_image_nextenum(imgtool::directory &enumeration, imgtool_ if (iter->listing_subdirs) { #if 0 - fname_to_str(ent.filename, iter->catalog[iter->level].subdirs[iter->index[iter->level]].name, ARRAY_LENGTH(ent.filename)); + fname_to_str(ent.filename, iter->catalog[iter->level].subdirs[iter->index[iter->level]].name, std::size(ent.filename)); #else { char buf[11]; @@ -4408,16 +4408,16 @@ static imgtoolerr_t win_image_nextenum(imgtool::directory &enumeration, imgtool_ for (i=0; ilevel; i++) { fname_to_str(buf, iter->catalog[i].subdirs[iter->index[i]].name, 11); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); - strncat(ent.filename, ".", ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); + strncat(ent.filename, ".", std::size(ent.filename) - 1); } fname_to_str(buf, iter->catalog[iter->level].subdirs[iter->index[iter->level]].name, 11); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); } #endif /* set type of DIR */ - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "DIR"); + snprintf(ent.attr, std::size(ent.attr), "DIR"); /* len in physrecs */ /* @BN@ return length in bytes */ @@ -4442,7 +4442,7 @@ static imgtoolerr_t win_image_nextenum(imgtool::directory &enumeration, imgtool_ if (reply) return IMGTOOLERR_READERROR; #if 0 - fname_to_str(ent.filename, iter->catalog[iter->level].files[iter->index[iter->level]].name, ARRAY_LENGTH(ent.filename)); + fname_to_str(ent.filename, iter->catalog[iter->level].files[iter->index[iter->level]].name, std::size(ent.filename)); #else { char buf[11]; @@ -4451,19 +4451,19 @@ static imgtoolerr_t win_image_nextenum(imgtool::directory &enumeration, imgtool_ for (i=0; ilevel; i++) { fname_to_str(buf, iter->catalog[i].subdirs[iter->index[i]].name, 11); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); - strncat(ent.filename, ".", ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); + strncat(ent.filename, ".", std::size(ent.filename) - 1); } fname_to_str(buf, iter->catalog[iter->level].files[iter->index[iter->level]].name, 11); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); } #endif /* parse flags */ if (fdr.flags & fdr99_f_program) - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "PGM%s", + snprintf(ent.attr, std::size(ent.attr), "PGM%s", (fdr.flags & fdr99_f_wp) ? " R/O" : ""); else - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%c/%c %d%s", + snprintf(ent.attr, std::size(ent.attr), "%c/%c %d%s", (fdr.flags & fdr99_f_int) ? 'I' : 'D', (fdr.flags & fdr99_f_var) ? 'V' : 'F', fdr.reclen, diff --git a/src/tools/imgtool/modules/ti990hd.cpp b/src/tools/imgtool/modules/ti990hd.cpp index 9bf77fa6a6c..7bf610b3260 100644 --- a/src/tools/imgtool/modules/ti990hd.cpp +++ b/src/tools/imgtool/modules/ti990hd.cpp @@ -1250,7 +1250,7 @@ static imgtoolerr_t ti990_image_nextenum(imgtool::directory &enumeration, imgtoo else { #if 0 - fname_to_str(ent.filename, iter->xdr[iter->level].fdr.fnm, ARRAY_LENGTH(ent.filename)); + fname_to_str(ent.filename, iter->xdr[iter->level].fdr.fnm, std::size(ent.filename)); #else { int i; @@ -1260,11 +1260,11 @@ static imgtoolerr_t ti990_image_nextenum(imgtool::directory &enumeration, imgtoo for (i=0; ilevel; i++) { fname_to_str(buf, iter->xdr[i].fdr.fnm, 9); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); - strncat(ent.filename, ".", ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); + strncat(ent.filename, ".", std::size(ent.filename) - 1); } fname_to_str(buf, iter->xdr[iter->level].fdr.fnm, 9); - strncat(ent.filename, buf, ARRAY_LENGTH(ent.filename) - 1); + strncat(ent.filename, buf, std::size(ent.filename) - 1); } #endif @@ -1272,7 +1272,7 @@ static imgtoolerr_t ti990_image_nextenum(imgtool::directory &enumeration, imgtoo flag = get_UINT16BE(iter->xdr[iter->level].fdr.flg); if (flag & fdr_flg_cdr) { - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "CHANNEL"); + snprintf(ent.attr, std::size(ent.attr), "CHANNEL"); ent.filesize = 0; } @@ -1290,7 +1290,7 @@ static imgtoolerr_t ti990_image_nextenum(imgtool::directory &enumeration, imgtoo fname_to_str(buf, target_fdr.fnm, 9); - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "ALIAS OF %s", buf); + snprintf(ent.attr, std::size(ent.attr), "ALIAS OF %s", buf); ent.filesize = 0; } @@ -1340,7 +1340,7 @@ static imgtoolerr_t ti990_image_nextenum(imgtool::directory &enumeration, imgtoo } break; } - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), + snprintf(ent.attr, std::size(ent.attr), "%s %c %s%s%s%s%s", fmt, (flag & fdr_flg_all) ? 'N' : 'C', type, (flag & fdr_flg_blb) ? "" : " BLK", (flag & fdr_flg_tmp) ? " TMP" : "", diff --git a/src/tools/imgtool/modules/vzdos.cpp b/src/tools/imgtool/modules/vzdos.cpp index 748be97362d..4ccbc801253 100644 --- a/src/tools/imgtool/modules/vzdos.cpp +++ b/src/tools/imgtool/modules/vzdos.cpp @@ -453,7 +453,7 @@ static imgtoolerr_t vzdos_diskimage_nextenum(imgtool::directory &enumeration, im default: type = "Unknown"; } - snprintf(ent.attr, ARRAY_LENGTH(ent.attr), "%s", type); + snprintf(ent.attr, std::size(ent.attr), "%s", type); iter->index++; } diff --git a/src/tools/jedutil.cpp b/src/tools/jedutil.cpp index 0c27c1b4480..34938561215 100644 --- a/src/tools/jedutil.cpp +++ b/src/tools/jedutil.cpp @@ -135,6 +135,7 @@ ***************************************************************************/ +#include #include #include #include @@ -145,7 +146,6 @@ #include "corestr.h" #include "jedparse.h" -#include "osdcomm.h" #include "plaparse.h" @@ -2131,93 +2131,93 @@ static pin_fuse_columns _82s100_pls100_pinfusecolumns[] = { static pal_data paldata[] = { {"PAL10L8", 320, - pal10l8pinfuserows, ARRAY_LENGTH(pal10l8pinfuserows), - pal10l8pinfusecolumns, ARRAY_LENGTH(pal10l8pinfusecolumns), + pal10l8pinfuserows, std::size(pal10l8pinfuserows), + pal10l8pinfusecolumns, std::size(pal10l8pinfusecolumns), print_pal10l8_product_terms, config_pal10l8_pins, nullptr, nullptr}, {"PAL10H8", 320, - pal10h8pinfuserows, ARRAY_LENGTH(pal10h8pinfuserows), - pal10h8pinfusecolumns, ARRAY_LENGTH(pal10h8pinfusecolumns), + pal10h8pinfuserows, std::size(pal10h8pinfuserows), + pal10h8pinfusecolumns, std::size(pal10h8pinfusecolumns), print_pal10h8_product_terms, config_pal10h8_pins, nullptr, nullptr}, {"PAL12H6", 384, - pal12h6pinfuserows, ARRAY_LENGTH(pal12h6pinfuserows), - pal12h6pinfusecolumns, ARRAY_LENGTH(pal12h6pinfusecolumns), + pal12h6pinfuserows, std::size(pal12h6pinfuserows), + pal12h6pinfusecolumns, std::size(pal12h6pinfusecolumns), print_pal12h6_product_terms, config_pal12h6_pins, nullptr, nullptr}, {"PAL14H4", 448, - pal14h4pinfuserows, ARRAY_LENGTH(pal14h4pinfuserows), - pal14h4pinfusecolumns, ARRAY_LENGTH(pal14h4pinfusecolumns), + pal14h4pinfuserows, std::size(pal14h4pinfuserows), + pal14h4pinfusecolumns, std::size(pal14h4pinfusecolumns), print_pal14h4_product_terms, config_pal14h4_pins, nullptr, nullptr}, {"PAL16H2", 512, - pal16h2pinfuserows, ARRAY_LENGTH(pal16h2pinfuserows), - pal16h2pinfusecolumns, ARRAY_LENGTH(pal16h2pinfusecolumns), + pal16h2pinfuserows, std::size(pal16h2pinfuserows), + pal16h2pinfusecolumns, std::size(pal16h2pinfusecolumns), print_pal16h2_product_terms, config_pal16h2_pins, nullptr, nullptr}, {"PAL16C1", 512, - pal16c1pinfuserows, ARRAY_LENGTH(pal16c1pinfuserows), - pal16c1pinfusecolumns, ARRAY_LENGTH(pal16c1pinfusecolumns), + pal16c1pinfuserows, std::size(pal16c1pinfuserows), + pal16c1pinfusecolumns, std::size(pal16c1pinfusecolumns), print_pal16c1_product_terms, config_pal16c1_pins, nullptr, nullptr}, {"PAL12L6", 384, - pal12l6pinfuserows, ARRAY_LENGTH(pal12l6pinfuserows), - pal12l6pinfusecolumns, ARRAY_LENGTH(pal12l6pinfusecolumns), + pal12l6pinfuserows, std::size(pal12l6pinfuserows), + pal12l6pinfusecolumns, std::size(pal12l6pinfusecolumns), print_pal12l6_product_terms, config_pal12l6_pins, nullptr, nullptr}, {"PAL14L4", 448, - pal14l4pinfuserows, ARRAY_LENGTH(pal14l4pinfuserows), - pal14l4pinfusecolumns, ARRAY_LENGTH(pal14l4pinfusecolumns), + pal14l4pinfuserows, std::size(pal14l4pinfuserows), + pal14l4pinfusecolumns, std::size(pal14l4pinfusecolumns), print_pal14l4_product_terms, config_pal14l4_pins, nullptr, nullptr}, {"PAL16L2", 512, - pal16l2pinfuserows, ARRAY_LENGTH(pal16l2pinfuserows), - pal16l2pinfusecolumns, ARRAY_LENGTH(pal16l2pinfusecolumns), + pal16l2pinfuserows, std::size(pal16l2pinfuserows), + pal16l2pinfusecolumns, std::size(pal16l2pinfusecolumns), print_pal16l2_product_terms, config_pal16l2_pins, nullptr, nullptr}, /*{"15S8", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/ {"PAL16L8", 2048, - pal16l8pinfuserows, ARRAY_LENGTH(pal16l8pinfuserows), - pal16l8pinfusecolumns, ARRAY_LENGTH(pal16l8pinfusecolumns), + pal16l8pinfuserows, std::size(pal16l8pinfuserows), + pal16l8pinfusecolumns, std::size(pal16l8pinfusecolumns), print_pal16l8_product_terms, config_pal16l8_pins, nullptr, nullptr}, {"PAL16R4", 2048, - pal16r4pinfuserows, ARRAY_LENGTH(pal16r4pinfuserows), - pal16r4pinfusecolumns, ARRAY_LENGTH(pal16r4pinfusecolumns), + pal16r4pinfuserows, std::size(pal16r4pinfuserows), + pal16r4pinfusecolumns, std::size(pal16r4pinfusecolumns), print_pal16r4_product_terms, config_pal16r4_pins, nullptr, nullptr}, {"PAL16R6", 2048, - pal16r6pinfuserows, ARRAY_LENGTH(pal16r6pinfuserows), - pal16r6pinfusecolumns, ARRAY_LENGTH(pal16r6pinfusecolumns), + pal16r6pinfuserows, std::size(pal16r6pinfuserows), + pal16r6pinfusecolumns, std::size(pal16r6pinfusecolumns), print_pal16r6_product_terms, config_pal16r6_pins, nullptr, nullptr}, {"PAL16R8", 2048, - pal16r8pinfuserows, ARRAY_LENGTH(pal16r8pinfuserows), - pal16r8pinfusecolumns, ARRAY_LENGTH(pal16r8pinfusecolumns), + pal16r8pinfuserows, std::size(pal16r8pinfuserows), + pal16r8pinfusecolumns, std::size(pal16r8pinfusecolumns), print_pal16r8_product_terms, config_pal16r8_pins, nullptr, @@ -2225,416 +2225,416 @@ static pal_data paldata[] = { /*{"PAL16RA8", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL}, {"PAL16V8R", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/ // PAL16V8 same fusemap as GAL16V8? {"PALCE16V8", 2194, - gal16v8pinfuserows, ARRAY_LENGTH(gal16v8pinfuserows), - gal16v8pinfusecolumns, ARRAY_LENGTH(gal16v8pinfusecolumns), + gal16v8pinfuserows, std::size(gal16v8pinfuserows), + gal16v8pinfusecolumns, std::size(gal16v8pinfusecolumns), print_gal16v8_product_terms, config_gal16v8_pins, nullptr, nullptr}, {"GAL16V8", 2194, - gal16v8pinfuserows, ARRAY_LENGTH(gal16v8pinfuserows), - gal16v8pinfusecolumns, ARRAY_LENGTH(gal16v8pinfusecolumns), + gal16v8pinfuserows, std::size(gal16v8pinfuserows), + gal16v8pinfusecolumns, std::size(gal16v8pinfusecolumns), print_gal16v8_product_terms, config_gal16v8_pins, is_gal16v8_product_term_enabled, nullptr}, {"ATF16V8", 2194, - gal16v8pinfuserows, ARRAY_LENGTH(gal16v8pinfuserows), - gal16v8pinfusecolumns, ARRAY_LENGTH(gal16v8pinfusecolumns), + gal16v8pinfuserows, std::size(gal16v8pinfuserows), + gal16v8pinfusecolumns, std::size(gal16v8pinfusecolumns), print_gal16v8_product_terms, config_gal16v8_pins, is_gal16v8_product_term_enabled, nullptr}, {"18CV8", 2696, - peel18cv8pinfuserows, ARRAY_LENGTH(peel18cv8pinfuserows), - peel18cv8pinfusecolumns, ARRAY_LENGTH(peel18cv8pinfusecolumns), + peel18cv8pinfuserows, std::size(peel18cv8pinfuserows), + peel18cv8pinfusecolumns, std::size(peel18cv8pinfusecolumns), print_peel18cv8_product_terms, config_peel18cv8_pins, nullptr, get_peel18cv8_pin_fuse_state}, {"AMPAL18P8", 2600, - ampal18p8pinfuserows, ARRAY_LENGTH(ampal18p8pinfuserows), - ampal18p8pinfusecolumns, ARRAY_LENGTH(ampal18p8pinfusecolumns), + ampal18p8pinfuserows, std::size(ampal18p8pinfuserows), + ampal18p8pinfusecolumns, std::size(ampal18p8pinfusecolumns), print_ampal18p8_product_terms, config_ampal18p8_pins, nullptr, nullptr}, {"GAL18V10", 3540, - gal18v10pinfuserows, ARRAY_LENGTH(gal18v10pinfuserows), - gal18v10pinfusecolumns, ARRAY_LENGTH(gal18v10pinfusecolumns), + gal18v10pinfuserows, std::size(gal18v10pinfuserows), + gal18v10pinfusecolumns, std::size(gal18v10pinfusecolumns), print_gal18v10_product_terms, config_gal18v10_pins, nullptr, nullptr}, {"PAL20L8", 2560, - pal20l8pinfuserows, ARRAY_LENGTH(pal20l8pinfuserows), - pal20l8pinfusecolumns, ARRAY_LENGTH(pal20l8pinfusecolumns), + pal20l8pinfuserows, std::size(pal20l8pinfuserows), + pal20l8pinfusecolumns, std::size(pal20l8pinfusecolumns), print_pal20l8_product_terms, config_pal20l8_pins, nullptr, nullptr}, {"PAL20L10", 1600, - pal20l10pinfuserows, ARRAY_LENGTH(pal20l10pinfuserows), - pal20l10pinfusecolumns, ARRAY_LENGTH(pal20l10pinfusecolumns), + pal20l10pinfuserows, std::size(pal20l10pinfuserows), + pal20l10pinfusecolumns, std::size(pal20l10pinfusecolumns), print_pal20l10_product_terms, config_pal20l10_pins, nullptr, nullptr}, {"PAL20R4", 2560, - pal20r4pinfuserows, ARRAY_LENGTH(pal20r4pinfuserows), - pal20r4pinfusecolumns, ARRAY_LENGTH(pal20r4pinfusecolumns), + pal20r4pinfuserows, std::size(pal20r4pinfuserows), + pal20r4pinfusecolumns, std::size(pal20r4pinfusecolumns), print_pal20r4_product_terms, config_pal20r4_pins, nullptr, nullptr}, {"PAL20R6", 2560, - pal20r6pinfuserows, ARRAY_LENGTH(pal20r6pinfuserows), - pal20r6pinfusecolumns, ARRAY_LENGTH(pal20r6pinfusecolumns), + pal20r6pinfuserows, std::size(pal20r6pinfuserows), + pal20r6pinfusecolumns, std::size(pal20r6pinfusecolumns), print_pal20r6_product_terms, config_pal20r6_pins, nullptr, nullptr}, {"PAL20R8", 2560, - pal20r8pinfuserows, ARRAY_LENGTH(pal20r8pinfuserows), - pal20r8pinfusecolumns, ARRAY_LENGTH(pal20r8pinfusecolumns), + pal20r8pinfuserows, std::size(pal20r8pinfuserows), + pal20r8pinfusecolumns, std::size(pal20r8pinfusecolumns), print_pal20r8_product_terms, config_pal20r8_pins, nullptr, nullptr}, {"PAL20RA10", 3210, - pal20ra10pinfuserows, ARRAY_LENGTH(pal20ra10pinfuserows), - pal20ra10pinfusecolumns, ARRAY_LENGTH(pal20ra10pinfusecolumns), + pal20ra10pinfuserows, std::size(pal20ra10pinfuserows), + pal20ra10pinfusecolumns, std::size(pal20ra10pinfusecolumns), print_pal20ra10_product_terms, config_pal20ra10_pins, nullptr, nullptr }, {"PAL20X4", 1600, - pal20x4pinfuserows, ARRAY_LENGTH(pal20x4pinfuserows), - pal20x4pinfusecolumns, ARRAY_LENGTH(pal20x4pinfusecolumns), + pal20x4pinfuserows, std::size(pal20x4pinfuserows), + pal20x4pinfusecolumns, std::size(pal20x4pinfusecolumns), print_pal20x4_product_terms, config_pal20x4_pins, nullptr, nullptr}, {"PAL20X8", 1600, - pal20x8pinfuserows, ARRAY_LENGTH(pal20x8pinfuserows), - pal20x8pinfusecolumns, ARRAY_LENGTH(pal20x8pinfusecolumns), + pal20x8pinfuserows, std::size(pal20x8pinfuserows), + pal20x8pinfusecolumns, std::size(pal20x8pinfusecolumns), print_pal20x8_product_terms, config_pal20x8_pins, nullptr, nullptr}, {"PAL20X10", 1600, - pal20x10pinfuserows, ARRAY_LENGTH(pal20x10pinfuserows), - pal20x10pinfusecolumns, ARRAY_LENGTH(pal20x10pinfusecolumns), + pal20x10pinfuserows, std::size(pal20x10pinfuserows), + pal20x10pinfusecolumns, std::size(pal20x10pinfusecolumns), print_pal20x10_product_terms, config_pal20x10_pins, nullptr, nullptr}, {"GAL20V8", 2706, - gal20v8pinfuserows, ARRAY_LENGTH(gal20v8pinfuserows), - gal20v8pinfusecolumns, ARRAY_LENGTH(gal20v8pinfusecolumns), + gal20v8pinfuserows, std::size(gal20v8pinfuserows), + gal20v8pinfusecolumns, std::size(gal20v8pinfusecolumns), print_gal20v8_product_terms, config_gal20v8_pins, is_gal20v8_product_term_enabled, nullptr}, {"PALCE20V8", 2706, - gal20v8pinfuserows, ARRAY_LENGTH(gal20v8pinfuserows), - gal20v8pinfusecolumns, ARRAY_LENGTH(gal20v8pinfusecolumns), + gal20v8pinfuserows, std::size(gal20v8pinfuserows), + gal20v8pinfusecolumns, std::size(gal20v8pinfusecolumns), print_gal20v8_product_terms, config_gal20v8_pins, is_gal20v8_product_term_enabled, nullptr}, {"ATF20V10", 2706, - gal20v8pinfuserows, ARRAY_LENGTH(gal20v8pinfuserows), - gal20v8pinfusecolumns, ARRAY_LENGTH(gal20v8pinfusecolumns), + gal20v8pinfuserows, std::size(gal20v8pinfuserows), + gal20v8pinfusecolumns, std::size(gal20v8pinfusecolumns), print_gal20v8_product_terms, config_gal20v8_pins, is_gal20v8_product_term_enabled, nullptr}, {"PAL22V10", 5828, - palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows), - palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns), + palce22v10_pal22v10pinfuserows, std::size(palce22v10_pal22v10pinfuserows), + palce22v10_pal22v10pinfusecolumns, std::size(palce22v10_pal22v10pinfusecolumns), print_palce22v10_pal22v10_product_terms, config_palce22v10_pal22v10_pins, nullptr, nullptr}, {"PALCE22V10", 5828, - palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows), - palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns), + palce22v10_pal22v10pinfuserows, std::size(palce22v10_pal22v10pinfuserows), + palce22v10_pal22v10pinfusecolumns, std::size(palce22v10_pal22v10pinfusecolumns), print_palce22v10_pal22v10_product_terms, config_palce22v10_pal22v10_pins, nullptr, nullptr}, {"ATF22V10", 5828, - palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows), - palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns), + palce22v10_pal22v10pinfuserows, std::size(palce22v10_pal22v10pinfuserows), + palce22v10_pal22v10pinfusecolumns, std::size(palce22v10_pal22v10pinfusecolumns), print_palce22v10_pal22v10_product_terms, config_palce22v10_pal22v10_pins, nullptr, nullptr}, {"GAL22V10", 5892, - gal22v10pinfuserows, ARRAY_LENGTH(gal22v10pinfuserows), - gal22v10pinfusecolumns, ARRAY_LENGTH(gal22v10pinfusecolumns), + gal22v10pinfuserows, std::size(gal22v10pinfuserows), + gal22v10pinfusecolumns, std::size(gal22v10pinfusecolumns), print_gal22v10_product_terms, config_gal22v10_pins, nullptr, nullptr}, {"ATF22V10", 5892, - gal22v10pinfuserows, ARRAY_LENGTH(gal22v10pinfuserows), - gal22v10pinfusecolumns, ARRAY_LENGTH(gal22v10pinfusecolumns), + gal22v10pinfuserows, std::size(gal22v10pinfuserows), + gal22v10pinfusecolumns, std::size(gal22v10pinfusecolumns), print_gal22v10_product_terms, config_gal22v10_pins, nullptr, nullptr}, {"ATF22V10", 5893, - atf22v10powerdownmodepinfuserows, ARRAY_LENGTH(atf22v10powerdownmodepinfuserows), - atf22v10powerdownmodepinfusecolumns, ARRAY_LENGTH(atf22v10powerdownmodepinfusecolumns), + atf22v10powerdownmodepinfuserows, std::size(atf22v10powerdownmodepinfuserows), + atf22v10powerdownmodepinfusecolumns, std::size(atf22v10powerdownmodepinfusecolumns), print_atf22v10_power_down_mode_product_terms, config_atf22v10_power_down_mode_pins, nullptr, nullptr}, {"82S153", 1842, - _82s153_pls153pinfuserows, ARRAY_LENGTH(_82s153_pls153pinfuserows), - _82s153_pls153pinfusecolumns, ARRAY_LENGTH(_82s153_pls153pinfusecolumns), + _82s153_pls153pinfuserows, std::size(_82s153_pls153pinfuserows), + _82s153_pls153pinfusecolumns, std::size(_82s153_pls153pinfusecolumns), print_82s153_pls153_product_terms, config_82s153_pls153_pins, nullptr, nullptr}, {"PLS153", 1842, - _82s153_pls153pinfuserows, ARRAY_LENGTH(_82s153_pls153pinfuserows), - _82s153_pls153pinfusecolumns, ARRAY_LENGTH(_82s153_pls153pinfusecolumns), + _82s153_pls153pinfuserows, std::size(_82s153_pls153pinfuserows), + _82s153_pls153pinfusecolumns, std::size(_82s153_pls153pinfusecolumns), print_82s153_pls153_product_terms, config_82s153_pls153_pins, nullptr, nullptr}, {"CK2605", 1106, - ck2605pinfuserows, ARRAY_LENGTH(ck2605pinfuserows), - ck2605pinfusecolumns, ARRAY_LENGTH(ck2605pinfusecolumns), + ck2605pinfuserows, std::size(ck2605pinfuserows), + ck2605pinfusecolumns, std::size(ck2605pinfusecolumns), print_ck2605_product_terms, config_ck2605_pins, nullptr, nullptr}, #if defined(ricoh_pals) {"EPL10P8", 664, - epl10p8pinfuserows, ARRAY_LENGTH(epl10p8pinfuserows), - epl10p8pinfusecolumns, ARRAY_LENGTH(epl10p8pinfusecolumns), + epl10p8pinfuserows, std::size(epl10p8pinfuserows), + epl10p8pinfusecolumns, std::size(epl10p8pinfusecolumns), print_epl10p8_product_terms, config_epl10p8_pins, nullptr, nullptr}, {"EPL12P6", 786, - epl12p6pinfuserows, ARRAY_LENGTH(epl12p6pinfuserows), - epl12p6pinfusecolumns, ARRAY_LENGTH(epl12p6pinfusecolumns), + epl12p6pinfuserows, std::size(epl12p6pinfuserows), + epl12p6pinfusecolumns, std::size(epl12p6pinfusecolumns), print_epl12p6_product_terms, config_epl12p6_pins, nullptr, nullptr}, {"EPL14P4", 908, - epl14p4pinfuserows, ARRAY_LENGTH(epl14p4pinfuserows), - epl14p4pinfusecolumns, ARRAY_LENGTH(epl14p4pinfusecolumns), + epl14p4pinfuserows, std::size(epl14p4pinfuserows), + epl14p4pinfusecolumns, std::size(epl14p4pinfusecolumns), print_epl14p4_product_terms, config_epl14p4_pins, nullptr, nullptr}, {"EPL16P2", 1030, - epl16p2pinfuserows, ARRAY_LENGTH(epl16p2pinfuserows), - epl16p2pinfusecolumns, ARRAY_LENGTH(epl16p2pinfusecolumns), + epl16p2pinfuserows, std::size(epl16p2pinfuserows), + epl16p2pinfusecolumns, std::size(epl16p2pinfusecolumns), print_epl16p2_product_terms, config_epl16p2_pins, nullptr, nullptr}, {"EPL16P8", 2072, - epl16p8pinfuserows, ARRAY_LENGTH(epl16p8pinfuserows), - epl16p8pinfusecolumns, ARRAY_LENGTH(epl16p8pinfusecolumns), + epl16p8pinfuserows, std::size(epl16p8pinfuserows), + epl16p8pinfusecolumns, std::size(epl16p8pinfusecolumns), print_epl16p8_product_terms, config_epl16p8_pins, nullptr, nullptr}, {"EPL16RP8", 2072, - epl16rp8pinfuserows, ARRAY_LENGTH(epl16rp8pinfuserows), - epl16rp8pinfusecolumns, ARRAY_LENGTH(epl16rp8pinfusecolumns), + epl16rp8pinfuserows, std::size(epl16rp8pinfuserows), + epl16rp8pinfusecolumns, std::size(epl16rp8pinfusecolumns), print_epl16rp8_product_terms, config_epl16rp8_pins, nullptr, nullptr}, {"EPL16RP6", 2072, - epl16rp6pinfuserows, ARRAY_LENGTH(epl16rp6pinfuserows), - epl16rp6pinfusecolumns, ARRAY_LENGTH(epl16rp6pinfusecolumns), + epl16rp6pinfuserows, std::size(epl16rp6pinfuserows), + epl16rp6pinfusecolumns, std::size(epl16rp6pinfusecolumns), print_epl16rp6_product_terms, config_epl16rp6_pins, nullptr, nullptr}, {"EPL16RP4", 2072, - epl16rp4pinfuserows, ARRAY_LENGTH(epl16rp4pinfuserows), - epl16rp4pinfusecolumns, ARRAY_LENGTH(epl16rp4pinfusecolumns), + epl16rp4pinfuserows, std::size(epl16rp4pinfuserows), + epl16rp4pinfusecolumns, std::size(epl16rp4pinfusecolumns), print_epl16rp4_product_terms, config_epl16rp4_pins, nullptr, nullptr}, #endif {"PAL10P8", 328, - pal10p8pinfuserows, ARRAY_LENGTH(pal10p8pinfuserows), - pal10p8pinfusecolumns, ARRAY_LENGTH(pal10p8pinfusecolumns), + pal10p8pinfuserows, std::size(pal10p8pinfuserows), + pal10p8pinfusecolumns, std::size(pal10p8pinfusecolumns), print_pal10p8_product_terms, config_pal10p8_pins, nullptr, nullptr}, {"PAL12P6", 390, - pal12p6pinfuserows, ARRAY_LENGTH(pal12p6pinfuserows), - pal12p6pinfusecolumns, ARRAY_LENGTH(pal12p6pinfusecolumns), + pal12p6pinfuserows, std::size(pal12p6pinfuserows), + pal12p6pinfusecolumns, std::size(pal12p6pinfusecolumns), print_pal12p6_product_terms, config_pal12p6_pins, nullptr, nullptr}, {"PAL14P4", 452, - pal14p4pinfuserows, ARRAY_LENGTH(pal14p4pinfuserows), - pal14p4pinfusecolumns, ARRAY_LENGTH(pal14p4pinfusecolumns), + pal14p4pinfuserows, std::size(pal14p4pinfuserows), + pal14p4pinfusecolumns, std::size(pal14p4pinfusecolumns), print_pal14p4_product_terms, config_pal14p4_pins, nullptr, nullptr}, {"PAL16P2", 514, - pal16p2pinfuserows, ARRAY_LENGTH(pal16p2pinfuserows), - pal16p2pinfusecolumns, ARRAY_LENGTH(pal16p2pinfusecolumns), + pal16p2pinfuserows, std::size(pal16p2pinfuserows), + pal16p2pinfusecolumns, std::size(pal16p2pinfusecolumns), print_pal16p2_product_terms, config_pal16p2_pins, nullptr, nullptr}, {"PAL16P8", 2056, - pal16p8pinfuserows, ARRAY_LENGTH(pal16p8pinfuserows), - pal16p8pinfusecolumns, ARRAY_LENGTH(pal16p8pinfusecolumns), + pal16p8pinfuserows, std::size(pal16p8pinfuserows), + pal16p8pinfusecolumns, std::size(pal16p8pinfusecolumns), print_pal16p8_product_terms, config_pal16p8_pins, nullptr, nullptr}, {"PAL16RP4", 2056, - pal16rp4pinfuserows, ARRAY_LENGTH(pal16rp4pinfuserows), - pal16rp4pinfusecolumns, ARRAY_LENGTH(pal16rp4pinfusecolumns), + pal16rp4pinfuserows, std::size(pal16rp4pinfuserows), + pal16rp4pinfusecolumns, std::size(pal16rp4pinfusecolumns), print_pal16rp4_product_terms, config_pal16rp4_pins, nullptr, nullptr}, {"PAL16RP6", 2056, - pal16rp6pinfuserows, ARRAY_LENGTH(pal16rp6pinfuserows), - pal16rp6pinfusecolumns, ARRAY_LENGTH(pal16rp6pinfusecolumns), + pal16rp6pinfuserows, std::size(pal16rp6pinfuserows), + pal16rp6pinfusecolumns, std::size(pal16rp6pinfusecolumns), print_pal16rp6_product_terms, config_pal16rp6_pins, nullptr, nullptr}, {"PAL16RP8", 2056, - pal16rp8pinfuserows, ARRAY_LENGTH(pal16rp8pinfuserows), - pal16rp8pinfusecolumns, ARRAY_LENGTH(pal16rp8pinfusecolumns), + pal16rp8pinfuserows, std::size(pal16rp8pinfuserows), + pal16rp8pinfusecolumns, std::size(pal16rp8pinfusecolumns), print_pal16rp8_product_terms, config_pal16rp8_pins, nullptr, nullptr}, {"PAL6L16", 192, - pal6l16pinfuserows, ARRAY_LENGTH(pal6l16pinfuserows), - pal6l16pinfusecolumns, ARRAY_LENGTH(pal6l16pinfusecolumns), + pal6l16pinfuserows, std::size(pal6l16pinfuserows), + pal6l16pinfusecolumns, std::size(pal6l16pinfusecolumns), print_pal6l16_product_terms, config_pal6l16_pins, nullptr, nullptr}, {"PAL8L14", 224, - pal8l14pinfuserows, ARRAY_LENGTH(pal8l14pinfuserows), - pal8l14pinfusecolumns, ARRAY_LENGTH(pal8l14pinfusecolumns), + pal8l14pinfuserows, std::size(pal8l14pinfuserows), + pal8l14pinfusecolumns, std::size(pal8l14pinfusecolumns), print_pal8l14_product_terms, config_pal8l14_pins, nullptr, nullptr}, {"PAL12H10", 480, - pal12h10pinfuserows, ARRAY_LENGTH(pal12h10pinfuserows), - pal12h10pinfusecolumns, ARRAY_LENGTH(pal12h10pinfusecolumns), + pal12h10pinfuserows, std::size(pal12h10pinfuserows), + pal12h10pinfusecolumns, std::size(pal12h10pinfusecolumns), print_pal12h10_product_terms, config_pal12h10_pins, nullptr, nullptr}, {"PAL12L10", 480, - pal12l10pinfuserows, ARRAY_LENGTH(pal12l10pinfuserows), - pal12l10pinfusecolumns, ARRAY_LENGTH(pal12l10pinfusecolumns), + pal12l10pinfuserows, std::size(pal12l10pinfuserows), + pal12l10pinfusecolumns, std::size(pal12l10pinfusecolumns), print_pal12l10_product_terms, config_pal12l10_pins, nullptr, nullptr}, {"PAL14H8", 560, - pal14h8pinfuserows, ARRAY_LENGTH(pal14h8pinfuserows), - pal14h8pinfusecolumns, ARRAY_LENGTH(pal14h8pinfusecolumns), + pal14h8pinfuserows, std::size(pal14h8pinfuserows), + pal14h8pinfusecolumns, std::size(pal14h8pinfusecolumns), print_pal14h8_product_terms, config_pal14h8_pins, nullptr, nullptr}, {"PAL14L8", 560, - pal14l8pinfuserows, ARRAY_LENGTH(pal14l8pinfuserows), - pal14l8pinfusecolumns, ARRAY_LENGTH(pal14l8pinfusecolumns), + pal14l8pinfuserows, std::size(pal14l8pinfuserows), + pal14l8pinfusecolumns, std::size(pal14l8pinfusecolumns), print_pal14l8_product_terms, config_pal14l8_pins, nullptr, nullptr}, {"PAL16H6", 640, - pal16h6pinfuserows, ARRAY_LENGTH(pal16h6pinfuserows), - pal16h6pinfusecolumns, ARRAY_LENGTH(pal16h6pinfusecolumns), + pal16h6pinfuserows, std::size(pal16h6pinfuserows), + pal16h6pinfusecolumns, std::size(pal16h6pinfusecolumns), print_pal16h6_product_terms, config_pal16h6_pins, nullptr, nullptr}, {"PAL16L6", 640, - pal16l6pinfuserows, ARRAY_LENGTH(pal16l6pinfuserows), - pal16l6pinfusecolumns, ARRAY_LENGTH(pal16l6pinfusecolumns), + pal16l6pinfuserows, std::size(pal16l6pinfuserows), + pal16l6pinfusecolumns, std::size(pal16l6pinfusecolumns), print_pal16l6_product_terms, config_pal16l6_pins, nullptr, nullptr}, {"PAL18H4", 720, - pal18h4pinfuserows, ARRAY_LENGTH(pal18h4pinfuserows), - pal18h4pinfusecolumns, ARRAY_LENGTH(pal18h4pinfusecolumns), + pal18h4pinfuserows, std::size(pal18h4pinfuserows), + pal18h4pinfusecolumns, std::size(pal18h4pinfusecolumns), print_pal18h4_product_terms, config_pal18h4_pins, nullptr, nullptr}, {"PAL18L4", 720, - pal18l4pinfuserows, ARRAY_LENGTH(pal18l4pinfuserows), - pal18l4pinfusecolumns, ARRAY_LENGTH(pal18l4pinfusecolumns), + pal18l4pinfuserows, std::size(pal18l4pinfuserows), + pal18l4pinfusecolumns, std::size(pal18l4pinfusecolumns), print_pal18l4_product_terms, config_pal18l4_pins, nullptr, nullptr}, {"PAL20C1", 640, - pal20c1pinfuserows, ARRAY_LENGTH(pal20c1pinfuserows), - pal20c1pinfusecolumns, ARRAY_LENGTH(pal20c1pinfusecolumns), + pal20c1pinfuserows, std::size(pal20c1pinfuserows), + pal20c1pinfusecolumns, std::size(pal20c1pinfusecolumns), print_pal20c1_product_terms, config_pal20c1_pins, nullptr, nullptr}, {"PAL20L2", 640, - pal20l2pinfuserows, ARRAY_LENGTH(pal20l2pinfuserows), - pal20l2pinfusecolumns, ARRAY_LENGTH(pal20l2pinfusecolumns), + pal20l2pinfuserows, std::size(pal20l2pinfuserows), + pal20l2pinfusecolumns, std::size(pal20l2pinfusecolumns), print_pal20l2_product_terms, config_pal20l2_pins, nullptr, nullptr}, {"82S100", 1928, - _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows), - _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns), + _82s100_pls100_pinfuserows, std::size(_82s100_pls100_pinfuserows), + _82s100_pls100_pinfusecolumns, std::size(_82s100_pls100_pinfusecolumns), print_82s100_pls100_product_terms, config_82s100_pls100_pins, nullptr, nullptr}, {"PLS100", 1928, - _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows), - _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns), + _82s100_pls100_pinfuserows, std::size(_82s100_pls100_pinfuserows), + _82s100_pls100_pinfusecolumns, std::size(_82s100_pls100_pinfusecolumns), print_82s100_pls100_product_terms, config_82s100_pls100_pins, nullptr, nullptr}, {"82S101", 1928, - _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows), - _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns), + _82s100_pls100_pinfuserows, std::size(_82s100_pls100_pinfuserows), + _82s100_pls100_pinfusecolumns, std::size(_82s100_pls100_pinfusecolumns), print_82s100_pls100_product_terms, config_82s100_pls100_pins, nullptr, nullptr}, {"PLS101", 1928, - _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows), - _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns), + _82s100_pls100_pinfuserows, std::size(_82s100_pls100_pinfuserows), + _82s100_pls100_pinfusecolumns, std::size(_82s100_pls100_pinfusecolumns), print_82s100_pls100_product_terms, config_82s100_pls100_pins, nullptr, @@ -2693,7 +2693,7 @@ static void find_pal_data(const char *name, pal_data_vector& pal_data_vector) { int index; - for (index = 0; index < ARRAY_LENGTH(paldata); ++index) + for (index = 0; index < std::size(paldata); ++index) { if (!core_stricmp(name, paldata[index].name)) { @@ -4217,7 +4217,7 @@ static void print_epl10p8_product_terms(const pal_data* pal, const jed_data* jed printf("Equations:\n\n"); - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { flags = outputpins[index].flags; @@ -4767,8 +4767,8 @@ static void config_pal10l8_pins(const pal_data* pal, const jed_data* jed) {18, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {19, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4791,8 +4791,8 @@ static void config_pal10h8_pins(const pal_data* pal, const jed_data* jed) {18, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {19, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4813,8 +4813,8 @@ static void config_pal12l6_pins(const pal_data* pal, const jed_data* jed) {17, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {18, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4835,8 +4835,8 @@ static void config_pal12h6_pins(const pal_data* pal, const jed_data* jed) {17, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {18, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4855,8 +4855,8 @@ static void config_pal14l4_pins(const pal_data* pal, const jed_data* jed) {16, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {17, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4875,8 +4875,8 @@ static void config_pal14h4_pins(const pal_data* pal, const jed_data* jed) {16, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {17, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4893,8 +4893,8 @@ static void config_pal16l2_pins(const pal_data* pal, const jed_data* jed) {15, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {16, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4911,8 +4911,8 @@ static void config_pal16h2_pins(const pal_data* pal, const jed_data* jed) {15, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {16, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4929,8 +4929,8 @@ static void config_pal16c1_pins(const pal_data* pal, const jed_data* jed) {15, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {16, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -4959,7 +4959,7 @@ static void config_pal16l8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -4995,7 +4995,7 @@ static void config_pal16r4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -5019,7 +5019,7 @@ static void config_pal16r4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5047,7 +5047,7 @@ static void config_pal16r6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -5063,7 +5063,7 @@ static void config_pal16r6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5087,8 +5087,8 @@ static void config_pal16r8_pins(const pal_data* pal, const jed_data* jed) {18, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}, {19, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -5198,7 +5198,7 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed) static uint16_t input_pins_registered[] = {2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19}; static uint16_t input_pins_combinatorialcomplex[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18}; uint16_t input_pins_combinatorialsimple[18]; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, input_pin_count, output_pin_count; output_pin_count = 0; @@ -5214,12 +5214,12 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed) { /* Complex Mode */ - set_input_pins(input_pins_combinatorialcomplex, ARRAY_LENGTH(input_pins_combinatorialcomplex)); + set_input_pins(input_pins_combinatorialcomplex, std::size(input_pins_combinatorialcomplex)); memcpy(gal16v8pinfuserows, pinfuserows_combinatorialcomplex, sizeof(pinfuserows_combinatorialcomplex)); memcpy(gal16v8pinfusecolumns, pinfusecolumns_combinatorialcomplex, sizeof(pinfusecolumns_combinatorialcomplex)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (is_gal16v8_product_term_enabled(pal, jed, pal->pinfuserows[index].fuserowoutputenable) && does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable)) @@ -5270,7 +5270,7 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed) memcpy(gal16v8pinfuserows, pinfuserows_combinatorialsimple, sizeof(pinfuserows_combinatorialsimple)); memcpy(gal16v8pinfusecolumns, pinfusecolumns_combinatorialsimple, sizeof(pinfusecolumns_combinatorialsimple)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (jed_get_fuse(jed, macrocells[index].ac1_fuse)) { @@ -5325,11 +5325,11 @@ static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed) { /* Registered */ - set_input_pins(input_pins_registered, ARRAY_LENGTH(input_pins_registered)); + set_input_pins(input_pins_registered, std::size(input_pins_registered)); memcpy(gal16v8pinfusecolumns, pinfusecolumns_registered, sizeof(pinfusecolumns_registered)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (jed_get_fuse(jed, macrocells[index].ac1_fuse)) { @@ -5414,14 +5414,14 @@ static void config_peel18cv8_pins(const pal_data* pal, const jed_data* jed) {18, 2668, 2669, 2670, 2671}, {19, 2664, 2665, 2666, 2667}}; static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19}; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, output_pin_count; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); output_pin_count = 0; - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (jed_get_fuse(jed, macrocells[index].feedback1_fuse) && !jed_get_fuse(jed, macrocells[index].feedback2_fuse)) @@ -5536,7 +5536,7 @@ static void config_ampal18p8_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index, output_pin_count; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); output_pin_count = 0; @@ -5592,12 +5592,12 @@ static void config_gal18v10_pins(const pal_data* pal, const jed_data* jed) {18, 3458, 3459}, {19, 3456, 3457}}; static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19}; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, output_pin_count; output_pin_count = 0; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { if (jed_get_fuse(jed, macrocells[index].s1_fuse)) { @@ -5640,7 +5640,7 @@ static void config_gal18v10_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5680,7 +5680,7 @@ static void config_pal20l8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5720,7 +5720,7 @@ static void config_pal20l10_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5756,7 +5756,7 @@ static void config_pal20r4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -5780,7 +5780,7 @@ static void config_pal20r4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5808,7 +5808,7 @@ static void config_pal20r6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -5824,7 +5824,7 @@ static void config_pal20r6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -5848,8 +5848,8 @@ static void config_pal20r8_pins(const pal_data* pal, const jed_data* jed) {21, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}, {22, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -5874,8 +5874,8 @@ static void config_pal20ra10_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}, {23, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -5900,8 +5900,8 @@ static void config_pal20x4_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT}, {23, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } /*------------------------------------------------- @@ -5924,8 +5924,8 @@ static void config_pal20x8_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}, {23, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -5950,8 +5950,8 @@ static void config_pal20x10_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}, {23, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6073,7 +6073,7 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed) static uint16_t input_pins_registered[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; static uint16_t input_pins_combinatorialcomplex[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 19, 20, 21, 23}; uint16_t input_pins_combinatorialsimple[22]; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, input_pin_count, output_pin_count; output_pin_count = 0; @@ -6089,12 +6089,12 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed) { /* Complex Mode */ - set_input_pins(input_pins_combinatorialcomplex, ARRAY_LENGTH(input_pins_combinatorialcomplex)); + set_input_pins(input_pins_combinatorialcomplex, std::size(input_pins_combinatorialcomplex)); memcpy(gal20v8pinfuserows, pinfuserows_combinatorialcomplex, sizeof(pinfuserows_combinatorialcomplex)); memcpy(gal20v8pinfusecolumns, pinfusecolumns_combinatorialcomplex, sizeof(pinfusecolumns_combinatorialcomplex)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (is_gal20v8_product_term_enabled(pal, jed, pal->pinfuserows[index].fuserowoutputenable) && does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable)) @@ -6148,7 +6148,7 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed) memcpy(gal20v8pinfuserows, pinfuserows_combinatorialsimple, sizeof(pinfuserows_combinatorialsimple)); memcpy(gal20v8pinfusecolumns, pinfusecolumns_combinatorialsimple, sizeof(pinfusecolumns_combinatorialsimple)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (jed_get_fuse(jed, macrocells[index].ac1_fuse)) { @@ -6206,11 +6206,11 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed) { /* Registered */ - set_input_pins(input_pins_registered, ARRAY_LENGTH(input_pins_registered)); + set_input_pins(input_pins_registered, std::size(input_pins_registered)); memcpy(gal20v8pinfusecolumns, pinfusecolumns_registered, sizeof(pinfusecolumns_registered)); - for (index = 0; index < ARRAY_LENGTH(macrocells); ++index) + for (index = 0; index < std::size(macrocells); ++index) { if (jed_get_fuse(jed, macrocells[index].ac1_fuse)) { @@ -6295,12 +6295,12 @@ static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data* {22, 5810, 5811}, {23, 5808, 5809}}; static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, output_pin_count; output_pin_count = 0; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { if (jed_get_fuse(jed, macrocells[index].s1_fuse)) { @@ -6343,7 +6343,7 @@ static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data* } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -6376,12 +6376,12 @@ static void config_gal22v10_pins(const pal_data* pal, const jed_data* jed) {22, 5810, 5811}, {23, 5808, 5809}}; static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, output_pin_count; output_pin_count = 0; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { if (jed_get_fuse(jed, macrocells[index].s1_fuse)) { @@ -6424,7 +6424,7 @@ static void config_gal22v10_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -6457,7 +6457,7 @@ static void config_atf22v10_power_down_mode_pins(const pal_data* pal, const jed_ {22, 5810, 5811}, {23, 5808, 5809}}; static uint16_t input_pins[] = {1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; - pin_output_config output_pins[ARRAY_LENGTH(macrocells)]; + pin_output_config output_pins[std::size(macrocells)]; uint16_t index, output_pin_count; output_pin_count = 0; @@ -6467,7 +6467,7 @@ static void config_atf22v10_power_down_mode_pins(const pal_data* pal, const jed_ fprintf(stderr, "Warning: Power down fuse not blown!\n"); } - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { if (jed_get_fuse(jed, macrocells[index].s1_fuse)) { @@ -6510,7 +6510,7 @@ static void config_atf22v10_power_down_mode_pins(const pal_data* pal, const jed_ } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -6549,7 +6549,7 @@ static void config_82s153_pls153_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -6588,7 +6588,7 @@ static void config_ck2605_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -6622,7 +6622,7 @@ static void config_epl10p8_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -6637,8 +6637,8 @@ static void config_epl10p8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6670,7 +6670,7 @@ static void config_epl12p6_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -6685,8 +6685,8 @@ static void config_epl12p6_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6716,7 +6716,7 @@ static void config_epl14p4_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -6731,8 +6731,8 @@ static void config_epl14p4_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6760,7 +6760,7 @@ static void config_epl16p2_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -6775,8 +6775,8 @@ static void config_epl16p2_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6810,7 +6810,7 @@ static void config_epl16p8_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -6825,8 +6825,8 @@ static void config_epl16p8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6860,7 +6860,7 @@ static void config_epl16rp8_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; output_pins[index].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -6875,8 +6875,8 @@ static void config_epl16rp8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6910,7 +6910,7 @@ static void config_epl16rp6_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; @@ -6935,8 +6935,8 @@ static void config_epl16rp6_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -6970,7 +6970,7 @@ static void config_epl16rp4_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(memory_cells); ++index) + for (index = 0; index < std::size(memory_cells); ++index) { output_pins[index].pin = memory_cells[index].pin; @@ -6994,8 +6994,8 @@ static void config_epl16rp4_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } #endif @@ -7012,7 +7012,7 @@ static void config_pal10p8_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[8]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { output_pins[index].pin = index + 12; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -7027,8 +7027,8 @@ static void config_pal10p8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7044,7 +7044,7 @@ static void config_pal12p6_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[6]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { output_pins[index].pin = index + 13; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -7059,8 +7059,8 @@ static void config_pal12p6_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7076,7 +7076,7 @@ static void config_pal14p4_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[4]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { output_pins[index].pin = index + 14; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -7091,8 +7091,8 @@ static void config_pal14p4_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7108,7 +7108,7 @@ static void config_pal16p2_pins(const pal_data* pal, const jed_data* jed) pin_output_config output_pins[2]; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { output_pins[index].pin = index + 15; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -7123,8 +7123,8 @@ static void config_pal16p2_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7162,7 +7162,7 @@ static void config_pal16p8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -7216,7 +7216,7 @@ static void config_pal16rp4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -7267,7 +7267,7 @@ static void config_pal16rp4_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -7304,7 +7304,7 @@ static void config_pal16rp6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - for (index = 0; index < ARRAY_LENGTH(registered_pins); ++index) + for (index = 0; index < std::size(registered_pins); ++index) { output_pins[output_pin_count].pin = registered_pins[index]; output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED; @@ -7338,7 +7338,7 @@ static void config_pal16rp6_pins(const pal_data* pal, const jed_data* jed) ++output_pin_count; } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + set_input_pins(input_pins, std::size(input_pins)); set_output_pins(output_pins, output_pin_count); } @@ -7363,7 +7363,7 @@ static void config_pal16rp8_pins(const pal_data* pal, const jed_data* jed) {19, OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}}; uint16_t index; - for (index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (index = 0; index < std::size(output_pins); ++index) { if (!jed_get_fuse(jed, 2055 - index)) { @@ -7375,8 +7375,8 @@ static void config_pal16rp8_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7407,8 +7407,8 @@ static void config_pal6l16_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {23, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7437,8 +7437,8 @@ static void config_pal8l14_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {23, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7463,8 +7463,8 @@ static void config_pal12h10_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {23, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7489,8 +7489,8 @@ static void config_pal12l10_pins(const pal_data* pal, const jed_data* jed) {22, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {23, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7513,8 +7513,8 @@ static void config_pal14h8_pins(const pal_data* pal, const jed_data* jed) {21, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {22, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7537,8 +7537,8 @@ static void config_pal14l8_pins(const pal_data* pal, const jed_data* jed) {21, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {22, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7559,8 +7559,8 @@ static void config_pal16h6_pins(const pal_data* pal, const jed_data* jed) {20, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {21, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7581,8 +7581,8 @@ static void config_pal16l6_pins(const pal_data* pal, const jed_data* jed) {20, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {21, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7601,8 +7601,8 @@ static void config_pal18h4_pins(const pal_data* pal, const jed_data* jed) {19, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {20, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7621,8 +7621,8 @@ static void config_pal18l4_pins(const pal_data* pal, const jed_data* jed) {19, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {20, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7639,8 +7639,8 @@ static void config_pal20c1_pins(const pal_data* pal, const jed_data* jed) {18, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {19, OUTPUT_ACTIVEHIGH | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7657,8 +7657,8 @@ static void config_pal20l2_pins(const pal_data* pal, const jed_data* jed) {18, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}, {19, OUTPUT_ACTIVELOW | OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE}}; - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -7673,7 +7673,7 @@ static void config_82s100_pls100_pins(const pal_data* pal, const jed_data* jed) static uint16_t input_pins[] = {9, 8, 7, 6, 5, 4, 3, 2, 27, 26, 25, 24, 23, 22, 21, 20}; pin_output_config output_pins[8]; - for (uint16_t index = 0; index < ARRAY_LENGTH(output_pins); ++index) + for (uint16_t index = 0; index < std::size(output_pins); ++index) { output_pins[index].pin = pal->pinfuserows[index].pin; output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE; @@ -7688,8 +7688,8 @@ static void config_82s100_pls100_pins(const pal_data* pal, const jed_data* jed) } } - set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); - set_output_pins(output_pins, ARRAY_LENGTH(output_pins)); + set_input_pins(input_pins, std::size(input_pins)); + set_output_pins(output_pins, std::size(output_pins)); } @@ -8195,7 +8195,7 @@ static int command_viewlist(int argc, char *argv[]) return print_usage(); } - for (index = 0; index < ARRAY_LENGTH(paldata); ++index) + for (index = 0; index < std::size(paldata); ++index) { nameset.insert(paldata[index].name); } @@ -8265,7 +8265,7 @@ static int command_listcompatible(int argc, char *argv[]) } } - for (index = 0; index < ARRAY_LENGTH(paldata); ++index) + for (index = 0; index < std::size(paldata); ++index) { if (paldata[index].numfuses == jed.numfuses) { @@ -8298,7 +8298,7 @@ int main(int argc, char *argv[]) return print_usage(); } - for (index = 0; index < ARRAY_LENGTH(command_entries); ++index) + for (index = 0; index < std::size(command_entries); ++index) { if (!strcmp(argv[1], command_entries[index].command)) return command_entries[index].command_func(argc - 2, &argv[2]); diff --git a/src/tools/regrep.cpp b/src/tools/regrep.cpp index 304e195fa10..a8877c54899 100644 --- a/src/tools/regrep.cpp +++ b/src/tools/regrep.cpp @@ -698,7 +698,7 @@ static void output_report(std::string &dirname, std::string &tempheader, std::st } /* iterate over buckets and output them */ - for (bucknum = 0; bucknum < ARRAY_LENGTH(bucket_output_order); bucknum++) + for (bucknum = 0; bucknum < std::size(bucket_output_order); bucknum++) { int curbucket = bucket_output_order[bucknum]; diff --git a/src/tools/srcclean.cpp b/src/tools/srcclean.cpp index 055cce35784..7f52c3c6feb 100644 --- a/src/tools/srcclean.cpp +++ b/src/tools/srcclean.cpp @@ -51,7 +51,6 @@ #include "corefile.h" #include "corestr.h" -#include "osdcomm.h" #include "strformat.h" #include @@ -597,7 +596,7 @@ void cleaner_base::output_utf8(char32_t ch) void cleaner_base::commit_character(char32_t ch) { - assert(ARRAY_LENGTH(m_buffer) > m_position); + assert(std::size(m_buffer) > m_position); assert(1U <= m_code_length); assert(6U >= m_code_length); @@ -697,7 +696,7 @@ void cleaner_base::commit_character(char32_t ch) void cleaner_base::process_if_full() { - if (ARRAY_LENGTH(m_buffer) == m_position) + if (std::size(m_buffer) == m_position) { process_characters(m_buffer, m_buffer + m_position); m_position = 0U; diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp index 26cf1260f07..f361eff0b6b 100644 --- a/src/tools/unidasm.cpp +++ b/src/tools/unidasm.cpp @@ -1180,14 +1180,14 @@ usage: printf("Supported architectures:"); const int colwidth = 1 + std::strlen(std::max_element(std::begin(dasm_table), std::end(dasm_table), [](const dasm_table_entry &a, const dasm_table_entry &b) { return std::strlen(a.name) < std::strlen(b.name); })->name); const int columns = std::max(1, 80 / colwidth); - const int numrows = (ARRAY_LENGTH(dasm_table) + columns - 1) / columns; + const int numrows = (std::size(dasm_table) + columns - 1) / columns; for(unsigned curarch = 0; curarch < numrows * columns; curarch++) { const int row = curarch / columns; const int col = curarch % columns; const int index = col * numrows + row; if(col == 0) printf("\n "); - printf("%-*s", colwidth, (index < ARRAY_LENGTH(dasm_table)) ? dasm_table[index].name : ""); + printf("%-*s", colwidth, (index < std::size(dasm_table)) ? dasm_table[index].name : ""); } printf("\n"); return 1; -- cgit v1.2.3