diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp index c3c05f0e9fb..7d154787c0c 100644 --- a/src/emu/natkeyboard.cpp +++ b/src/emu/natkeyboard.cpp @@ -602,7 +602,7 @@ void natural_keyboard::build_codes(ioport_manager &manager) { // find all shift keys unsigned mask = 0; - ioport_field *shift[SHIFT_COUNT]; + std::array shift; std::fill(std::begin(shift), std::end(shift), nullptr); for (auto const &port : manager.ports()) { @@ -656,7 +656,6 @@ void natural_keyboard::build_codes(ioport_manager &manager) newcode.field[fieldnum++] = shift[i]; } - assert(fieldnum < ARRAY_LENGTH(newcode.field)); newcode.field[fieldnum] = &field; if (m_keycode_map.end() == found) m_keycode_map.emplace(code, newcode); @@ -795,8 +794,6 @@ void natural_keyboard::timer(void *ptr, int param) { do { - assert(m_fieldnum < ARRAY_LENGTH(code->field)); - ioport_field *const field = code->field[m_fieldnum]; if (field) { @@ -807,8 +804,8 @@ void natural_keyboard::timer(void *ptr, int param) field->set_value(!field->digital_value()); } } - while (code->field[m_fieldnum] && (++m_fieldnum < ARRAY_LENGTH(code->field)) && m_status_keydown); - advance = (m_fieldnum >= ARRAY_LENGTH(code->field)) || !code->field[m_fieldnum]; + while (code->field[m_fieldnum] && (++m_fieldnum < code->field.size()) && m_status_keydown); + advance = (m_fieldnum >= code->field.size()) || !code->field[m_fieldnum]; } else { @@ -902,7 +899,7 @@ void natural_keyboard::dump(std::ostream &str) const util::stream_format(str, "%-*s", left_column_width, description); // identify the keys used - for (std::size_t field = 0; (ARRAY_LENGTH(code.second.field) > field) && code.second.field[field]; ++field) + for (std::size_t field = 0; (code.second.field.size() > field) && code.second.field[field]; ++field) util::stream_format(str, "%s'%s'", first ? "" : ", ", code.second.field[field]->name()); // carriage return diff --git a/src/emu/natkeyboard.h b/src/emu/natkeyboard.h index fa3df156285..d8cc9cfb8ff 100644 --- a/src/emu/natkeyboard.h +++ b/src/emu/natkeyboard.h @@ -72,8 +72,8 @@ private: // internal keyboard code information struct keycode_map_entry { - ioport_field * field[SHIFT_COUNT + 1]; - unsigned shift; + std::array field; + unsigned shift; }; typedef std::unordered_map keycode_map;