From b0e27be2e3157be5ac208fa2122e67d8cde77040 Mon Sep 17 00:00:00 2001 From: stephena Date: Sat, 13 Dec 2014 23:00:50 +0000 Subject: [PATCH] Replaced a few macros with lambdas. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3109 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- src/emucore/EventJoyHandler.cxx | 95 ++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 44 deletions(-) diff --git a/src/emucore/EventJoyHandler.cxx b/src/emucore/EventJoyHandler.cxx index ae6b68e9f..dbf4cc65f 100644 --- a/src/emucore/EventJoyHandler.cxx +++ b/src/emucore/EventJoyHandler.cxx @@ -45,10 +45,10 @@ EventHandler::StellaJoystick::StellaJoystick() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandler::StellaJoystick::~StellaJoystick() { - delete[] axisTable; axisTable = nullptr; - delete[] btnTable; btnTable = nullptr; - delete[] hatTable; hatTable = nullptr; - delete[] axisLastValue; axisLastValue = nullptr; + delete[] axisTable; + delete[] btnTable; + delete[] hatTable; + delete[] axisLastValue; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -442,77 +442,84 @@ void EventHandler::JoystickHandler::setDefaultMapping(Event::Type event, EventMo void EventHandler::JoystickHandler::setStickDefaultMapping(int stick, Event::Type event, EventMode mode) { -#define SET_DEFAULT_AXIS(sda_event, sda_mode, sda_stick, sda_axis, sda_val, sda_cmp_event) \ - if(eraseAll || sda_cmp_event == sda_event) \ - handler.addJoyAxisMapping(sda_event, sda_mode, sda_stick, sda_axis, sda_val, false); - -#define SET_DEFAULT_BTN(sdb_event, sdb_mode, sdb_stick, sdb_button, sdb_cmp_event) \ - if(eraseAll || sdb_cmp_event == sdb_event) \ - handler.addJoyButtonMapping(sdb_event, sdb_mode, sdb_stick, sdb_button, false); - -#define SET_DEFAULT_HAT(sdh_event, sdh_mode, sdh_stick, sdh_hat, sdh_dir, sdh_cmp_event) \ - if(eraseAll || sdh_cmp_event == sdh_event) \ - handler.addJoyHatMapping(sdh_event, sdh_mode, sdh_stick, sdh_hat, sdh_dir, false); - EventHandler& handler = myOSystem.eventHandler(); bool eraseAll = (event == Event::NoType); + auto setDefaultAxis = [&](Event::Type event, EventMode mode, + int stick, int axis, int value, Event::Type cmp_event) + { + if(eraseAll || cmp_event == event) + handler.addJoyAxisMapping(event, mode, stick, axis, value, false); + }; + auto setDefaultBtn = [&](Event::Type event, EventMode mode, + int stick, int button, Event::Type cmp_event) + { + if(eraseAll || cmp_event == event) + handler.addJoyButtonMapping(event, mode, stick, button, false); + }; + auto setDefaultHat = [&](Event::Type event, EventMode mode, + int stick, int hat, int dir, Event::Type cmp_event) + { + if(eraseAll || cmp_event == event) + handler.addJoyHatMapping(event, mode, stick, hat, dir, false); + }; + switch(mode) { case kEmulationMode: // Default emulation events if(stick == 0) { // Left joystick left/right directions (assume joystick zero) - SET_DEFAULT_AXIS(Event::JoystickZeroLeft, mode, 0, 0, 0, event); - SET_DEFAULT_AXIS(Event::JoystickZeroRight, mode, 0, 0, 1, event); + setDefaultAxis(Event::JoystickZeroLeft, mode, 0, 0, 0, event); + setDefaultAxis(Event::JoystickZeroRight, mode, 0, 0, 1, event); // Left joystick up/down directions (assume joystick zero) - SET_DEFAULT_AXIS(Event::JoystickZeroUp, mode, 0, 1, 0, event); - SET_DEFAULT_AXIS(Event::JoystickZeroDown, mode, 0, 1, 1, event); + setDefaultAxis(Event::JoystickZeroUp, mode, 0, 1, 0, event); + setDefaultAxis(Event::JoystickZeroDown, mode, 0, 1, 1, event); // Left joystick (assume joystick zero, button zero) - SET_DEFAULT_BTN(Event::JoystickZeroFire, mode, 0, 0, event); + setDefaultBtn(Event::JoystickZeroFire, mode, 0, 0, event); // Left joystick left/right directions (assume joystick zero and hat 0) - SET_DEFAULT_HAT(Event::JoystickZeroLeft, mode, 0, 0, EVENT_HATLEFT, event); - SET_DEFAULT_HAT(Event::JoystickZeroRight, mode, 0, 0, EVENT_HATRIGHT, event); + setDefaultHat(Event::JoystickZeroLeft, mode, 0, 0, EVENT_HATLEFT, event); + setDefaultHat(Event::JoystickZeroRight, mode, 0, 0, EVENT_HATRIGHT, event); // Left joystick up/down directions (assume joystick zero and hat 0) - SET_DEFAULT_HAT(Event::JoystickZeroUp, mode, 0, 0, EVENT_HATUP, event); - SET_DEFAULT_HAT(Event::JoystickZeroDown, mode, 0, 0, EVENT_HATDOWN, event); + setDefaultHat(Event::JoystickZeroUp, mode, 0, 0, EVENT_HATUP, event); + setDefaultHat(Event::JoystickZeroDown, mode, 0, 0, EVENT_HATDOWN, event); } else if(stick == 1) { // Right joystick left/right directions (assume joystick one) - SET_DEFAULT_AXIS(Event::JoystickOneLeft, mode, 1, 0, 0, event); - SET_DEFAULT_AXIS(Event::JoystickOneRight, mode, 1, 0, 1, event); + setDefaultAxis(Event::JoystickOneLeft, mode, 1, 0, 0, event); + setDefaultAxis(Event::JoystickOneRight, mode, 1, 0, 1, event); // Right joystick left/right directions (assume joystick one) - SET_DEFAULT_AXIS(Event::JoystickOneUp, mode, 1, 1, 0, event); - SET_DEFAULT_AXIS(Event::JoystickOneDown, mode, 1, 1, 1, event); + setDefaultAxis(Event::JoystickOneUp, mode, 1, 1, 0, event); + setDefaultAxis(Event::JoystickOneDown, mode, 1, 1, 1, event); // Right joystick (assume joystick one, button zero) - SET_DEFAULT_BTN(Event::JoystickOneFire, mode, 1, 0, event); + setDefaultBtn(Event::JoystickOneFire, mode, 1, 0, event); // Right joystick left/right directions (assume joystick one and hat 0) - SET_DEFAULT_HAT(Event::JoystickOneLeft, mode, 1, 0, EVENT_HATLEFT, event); - SET_DEFAULT_HAT(Event::JoystickOneRight, mode, 1, 0, EVENT_HATRIGHT, event); + setDefaultHat(Event::JoystickOneLeft, mode, 1, 0, EVENT_HATLEFT, event); + setDefaultHat(Event::JoystickOneRight, mode, 1, 0, EVENT_HATRIGHT, event); // Right joystick up/down directions (assume joystick one and hat 0) - SET_DEFAULT_HAT(Event::JoystickOneUp, mode, 1, 0, EVENT_HATUP, event); - SET_DEFAULT_HAT(Event::JoystickOneDown, mode, 1, 0, EVENT_HATDOWN, event); + setDefaultHat(Event::JoystickOneUp, mode, 1, 0, EVENT_HATUP, event); + setDefaultHat(Event::JoystickOneDown, mode, 1, 0, EVENT_HATDOWN, event); } break; case kMenuMode: // Default menu/UI events if(stick == 0) { - SET_DEFAULT_AXIS(Event::UILeft, mode, 0, 0, 0, event); - SET_DEFAULT_AXIS(Event::UIRight, mode, 0, 0, 1, event); - SET_DEFAULT_AXIS(Event::UIUp, mode, 0, 1, 0, event); - SET_DEFAULT_AXIS(Event::UIDown, mode, 0, 1, 1, event); + setDefaultAxis(Event::UILeft, mode, 0, 0, 0, event); + setDefaultAxis(Event::UIRight, mode, 0, 0, 1, event); + setDefaultAxis(Event::UIUp, mode, 0, 1, 0, event); + setDefaultAxis(Event::UIDown, mode, 0, 1, 1, event); // Left joystick (assume joystick zero, button zero) - SET_DEFAULT_BTN(Event::UISelect, mode, 0, 0, event); + setDefaultBtn(Event::UISelect, mode, 0, 0, event); // Right joystick (assume joystick one, button zero) - SET_DEFAULT_BTN(Event::UISelect, mode, 1, 0, event); + setDefaultBtn(Event::UISelect, mode, 1, 0, event); - SET_DEFAULT_HAT(Event::UILeft, mode, 0, 0, EVENT_HATLEFT, event); - SET_DEFAULT_HAT(Event::UIRight, mode, 0, 0, EVENT_HATRIGHT, event); - SET_DEFAULT_HAT(Event::UIUp, mode, 0, 0, EVENT_HATUP, event); - SET_DEFAULT_HAT(Event::UIDown, mode, 0, 0, EVENT_HATDOWN, event); + setDefaultHat(Event::UILeft, mode, 0, 0, EVENT_HATLEFT, event); + setDefaultHat(Event::UIRight, mode, 0, 0, EVENT_HATRIGHT, event); + setDefaultHat(Event::UIUp, mode, 0, 0, EVENT_HATUP, event); + setDefaultHat(Event::UIDown, mode, 0, 0, EVENT_HATDOWN, event); } break;