diff options
author | 2011-03-29 15:50:04 +0000 | |
---|---|---|
committer | 2011-03-29 15:50:04 +0000 | |
commit | 2ad50720237fdd19cf5ab45b8cb6bb21119c00b8 (patch) | |
tree | db21eee69668a06abc3f310ebbd51f5dbadf2de7 /src/emu/input.c | |
parent | b72cf3c5702b749c7bf26383ff05a9ab55022d31 (diff) |
BIG update.
Remove redundant machine items from address_space and device_t.
Neither machine nor m_machine are directly accessible anymore.
Instead a new getter machine() is available which returns a
machine reference. So:
space->machine->xxx ==> space->machine().xxx
device->machine->yyy ==> device->machine().yyy
Globally changed all running_machine pointers to running_machine
references. Any function/method that takes a running_machine takes
it as a required parameter (1 or 2 exceptions). Being consistent
here gets rid of a lot of odd &machine or *machine, but it does
mean a very large bulk change across the project.
Structs which have a running_machine * now have that variable
renamed to m_machine, and now have a shiny new machine() method
that works like the space and device methods above. Since most of
these are things that should eventually be devices anyway, consider
this a step in that direction.
98% of the update was done with regex searches. The changes are
architected such that the compiler will catch the remaining
errors:
// find things that use an embedded machine directly and replace
// with a machine() getter call
S: ->machine->
R: ->machine\(\)\.
// do the same if via a reference
S: \.machine->
R: \.machine\(\)\.
// convert function parameters to running_machine &
S: running_machine \*machine([^;])
R: running_machine \&machine\1
// replace machine-> with machine.
S: machine->
R: machine\.
// replace &machine() with machine()
S: \&([()->a-z0-9_]+machine\(\))
R: \1
// sanity check: look for this used as a cast
(running_machine &)
// and change to this:
*(running_machine *)
Diffstat (limited to 'src/emu/input.c')
-rw-r--r-- | src/emu/input.c | 148 |
1 files changed, 75 insertions, 73 deletions
diff --git a/src/emu/input.c b/src/emu/input.c index 40d09320fda..bbe4ea7ad4b 100644 --- a/src/emu/input.c +++ b/src/emu/input.c @@ -80,7 +80,9 @@ struct _joystick_map /* a single input device */ struct _input_device { - running_machine * machine; /* machine we are attached to */ + running_machine &machine() const { assert(m_machine != NULL); return *m_machine; } + + running_machine * m_machine; /* machine we are attached to */ astring name; /* string name of device */ input_device_class devclass; /* class of this device */ int devindex; /* device index of this device */ @@ -421,15 +423,15 @@ const char joystick_map_4way_diagonal[] = "4444s8888..444458888.444555888.ss5. ***************************************************************************/ static void input_frame(running_machine &machine); -static input_device_item *input_code_item(running_machine *machine, input_code code); -static INT32 convert_absolute_value(running_machine *machine, input_code code, input_device_item *item); +static input_device_item *input_code_item(running_machine &machine, input_code code); +static INT32 convert_absolute_value(running_machine &machine, input_code code, input_device_item *item); static INT32 convert_relative_value(input_code code, input_device_item *item); -static INT32 convert_switch_value(running_machine *machine, input_code code, input_device_item *item); -static INT32 apply_deadzone_and_saturation(running_machine *machine, input_code code, INT32 result); +static INT32 convert_switch_value(running_machine &machine, input_code code, input_device_item *item); +static INT32 apply_deadzone_and_saturation(running_machine &machine, input_code code, INT32 result); static int joystick_map_parse(const char *mapstring, joystick_map *map); static void joystick_map_print(const char *header, const char *origstring, const joystick_map *map); -static void input_code_reset_axes(running_machine *machine); -static int input_code_check_axis(running_machine *machine, input_device_item *item, input_code code); +static void input_code_reset_axes(running_machine &machine); +static int input_code_check_axis(running_machine &machine, input_device_item *item, input_code code); @@ -442,13 +444,13 @@ static int input_code_check_axis(running_machine *machine, input_device_item *it a pointer to the associated device -------------------------------------------------*/ -INLINE input_device *input_code_device(running_machine *machine, input_code code) +INLINE input_device *input_code_device(running_machine &machine, input_code code) { /* if the class is valid... */ input_device_class devclass = INPUT_CODE_DEVCLASS(code); if (devclass > DEVICE_CLASS_INVALID && devclass < DEVICE_CLASS_MAXIMUM) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; /* ...and the index is valid for that class, return a pointer to the device */ int devindex = INPUT_CODE_DEVINDEX(code); @@ -470,7 +472,7 @@ INLINE input_code device_item_to_code(input_device *device, input_item_id itemid { int devindex = device->devindex; - assert(devindex < device->machine->input_data->device_list[device->devclass].count); + assert(devindex < device->machine().input_data->device_list[device->devclass].count); assert(itemid < ITEM_ID_ABSOLUTE_MAXIMUM); assert(device->item[itemid] != NULL); @@ -504,9 +506,9 @@ INLINE input_item_class input_item_standard_class(input_device_class devclass, i of an input item -------------------------------------------------*/ -INLINE void input_item_update_value(running_machine *machine, input_device_item *item) +INLINE void input_item_update_value(running_machine &machine, input_device_item *item) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; item->current = (*item->getstate)(device_list[item->devclass].list[item->devindex]->internal, item->internal); } @@ -517,9 +519,9 @@ INLINE void input_item_update_value(running_machine *machine, input_device_item of memory for pressed switches -------------------------------------------------*/ -INLINE void code_pressed_memory_reset(running_machine *machine) +INLINE void code_pressed_memory_reset(running_machine &machine) { - input_code *code_pressed_memory = machine->input_data->code_pressed_memory; + input_code *code_pressed_memory = machine.input_data->code_pressed_memory; int memnum; for (memnum = 0; memnum < MAX_PRESSED_SWITCHES; memnum++) @@ -570,45 +572,45 @@ INLINE const char *code_to_string(const code_string_table *table, UINT32 code) input_init - initialize the input lists -------------------------------------------------*/ -void input_init(running_machine *machine) +void input_init(running_machine &machine) { joystick_map map; input_private *state; input_device_list *device_list; /* remember this machine */ - stashed_machine = machine; + stashed_machine = &machine; /* allocate private memory */ - machine->input_data = state = auto_alloc_clear(machine, input_private); + machine.input_data = state = auto_alloc_clear(machine, input_private); device_list = state->device_list; /* reset code memory */ code_pressed_memory_reset(machine); /* request a per-frame callback for bookkeeping */ - machine->add_notifier(MACHINE_NOTIFY_FRAME, input_frame); + machine.add_notifier(MACHINE_NOTIFY_FRAME, input_frame); /* read input enable options */ device_list[DEVICE_CLASS_KEYBOARD].enabled = TRUE; - device_list[DEVICE_CLASS_MOUSE].enabled = machine->options().mouse(); - device_list[DEVICE_CLASS_LIGHTGUN].enabled = machine->options().lightgun(); - device_list[DEVICE_CLASS_JOYSTICK].enabled = machine->options().joystick(); + device_list[DEVICE_CLASS_MOUSE].enabled = machine.options().mouse(); + device_list[DEVICE_CLASS_LIGHTGUN].enabled = machine.options().lightgun(); + device_list[DEVICE_CLASS_JOYSTICK].enabled = machine.options().joystick(); /* read input device multi options */ - device_list[DEVICE_CLASS_KEYBOARD].multi = machine->options().multi_keyboard(); - device_list[DEVICE_CLASS_MOUSE].multi = machine->options().multi_mouse(); + device_list[DEVICE_CLASS_KEYBOARD].multi = machine.options().multi_keyboard(); + device_list[DEVICE_CLASS_MOUSE].multi = machine.options().multi_mouse(); device_list[DEVICE_CLASS_LIGHTGUN].multi = TRUE; device_list[DEVICE_CLASS_JOYSTICK].multi = TRUE; /* read other input options */ - state->steadykey_enabled = machine->options().steadykey(); - state->lightgun_reload_button = machine->options().offscreen_reload(); - state->joystick_deadzone = (INT32)(machine->options().joystick_deadzone() * INPUT_ABSOLUTE_MAX); - state->joystick_saturation = (INT32)(machine->options().joystick_saturation() * INPUT_ABSOLUTE_MAX); + state->steadykey_enabled = machine.options().steadykey(); + state->lightgun_reload_button = machine.options().offscreen_reload(); + state->joystick_deadzone = (INT32)(machine.options().joystick_deadzone() * INPUT_ABSOLUTE_MAX); + state->joystick_saturation = (INT32)(machine.options().joystick_saturation() * INPUT_ABSOLUTE_MAX); /* get the default joystick map */ - state->joystick_map_default = machine->options().joystick_map(); + state->joystick_map_default = machine.options().joystick_map(); if (state->joystick_map_default[0] == 0 || strcmp(state->joystick_map_default, "auto") == 0) state->joystick_map_default = joystick_map_8way; if (!joystick_map_parse(state->joystick_map_default, &map)) @@ -623,9 +625,9 @@ void input_init(running_machine *machine) a device class -------------------------------------------------*/ -void input_device_class_enable(running_machine *machine, input_device_class devclass, UINT8 enable) +void input_device_class_enable(running_machine &machine, input_device_class devclass, UINT8 enable) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; assert(devclass > DEVICE_CLASS_INVALID && devclass < DEVICE_CLASS_MAXIMUM); device_list[devclass].enabled = enable; @@ -637,9 +639,9 @@ void input_device_class_enable(running_machine *machine, input_device_class devc enabled? -------------------------------------------------*/ -UINT8 input_device_class_enabled(running_machine *machine, input_device_class devclass) +UINT8 input_device_class_enabled(running_machine &machine, input_device_class devclass) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; assert(devclass > DEVICE_CLASS_INVALID && devclass < DEVICE_CLASS_MAXIMUM); return device_list[devclass].enabled; @@ -651,9 +653,9 @@ UINT8 input_device_class_enabled(running_machine *machine, input_device_class de joystick map for a device -------------------------------------------------*/ -int input_device_set_joystick_map(running_machine *machine, int devindex, const char *mapstring) +int input_device_set_joystick_map(running_machine &machine, int devindex, const char *mapstring) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; int startindex = devindex; int stopindex = devindex; joystick_map map; @@ -710,7 +712,7 @@ static void input_frame(running_machine &machine) input_device_item *item = device->item[itemid]; if (item != NULL && item->itemclass == ITEM_CLASS_SWITCH) { - input_item_update_value(&machine, item); + input_item_update_value(machine, item); if ((item->current ^ item->oldkey) & 1) { changed = TRUE; @@ -747,12 +749,12 @@ static void input_frame(running_machine &machine) input_device_add - add a new input device -------------------------------------------------*/ -input_device *input_device_add(running_machine *machine, input_device_class devclass, const char *name, void *internal) +input_device *input_device_add(running_machine &machine, input_device_class devclass, const char *name, void *internal) { - input_private *state = machine->input_data; + input_private *state = machine.input_data; input_device_list *devlist = &state->device_list[devclass]; - assert_always(machine->phase() == MACHINE_PHASE_INIT, "Can only call input_device_add at init time!"); + assert_always(machine.phase() == MACHINE_PHASE_INIT, "Can only call input_device_add at init time!"); assert(name != NULL); assert(devclass != DEVICE_CLASS_INVALID && devclass < DEVICE_CLASS_MAXIMUM); @@ -766,7 +768,7 @@ input_device *input_device_add(running_machine *machine, input_device_class devc devlist->list[devlist->count++] = device; /* fill in the data */ - device->machine = machine; + device->m_machine = &machine; device->name.cpy(name); device->devclass = devclass; device->devindex = devlist->count - 1; @@ -794,7 +796,7 @@ void input_device_item_add(input_device *device, const char *name, void *interna input_device_item *item; input_item_id itemid_std = itemid; - assert_always(device->machine->phase() == MACHINE_PHASE_INIT, "Can only call input_device_item_add at init time!"); + assert_always(device->machine().phase() == MACHINE_PHASE_INIT, "Can only call input_device_item_add at init time!"); assert(name != NULL); assert(itemid > ITEM_ID_INVALID && itemid < ITEM_ID_MAXIMUM); assert(getstate != NULL); @@ -810,7 +812,7 @@ void input_device_item_add(input_device *device, const char *name, void *interna assert(device->item[itemid] == NULL); /* allocate a new item and copy data into it */ - item = auto_alloc_clear(device->machine, input_device_item); + item = auto_alloc_clear(device->machine(), input_device_item); device->item[itemid] = item; device->maxitem = MAX(device->maxitem, itemid); @@ -848,9 +850,9 @@ void input_device_item_add(input_device *device, const char *name, void *interna given input code -------------------------------------------------*/ -INT32 input_code_value(running_machine *machine, input_code code) +INT32 input_code_value(running_machine &machine, input_code code) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_class devclass = INPUT_CODE_DEVCLASS(code); int startindex = INPUT_CODE_DEVINDEX(code); int stopindex = startindex; @@ -918,7 +920,7 @@ exit: given input code has been pressed -------------------------------------------------*/ -int input_code_pressed(running_machine *machine, input_code code) +int input_code_pressed(running_machine &machine, input_code code) { return (input_code_value(machine, code) != 0); } @@ -930,9 +932,9 @@ int input_code_pressed(running_machine *machine, input_code code) on since the last call -------------------------------------------------*/ -int input_code_pressed_once(running_machine *machine, input_code code) +int input_code_pressed_once(running_machine &machine, input_code code) { - input_code *code_pressed_memory = machine->input_data->code_pressed_memory; + input_code *code_pressed_memory = machine.input_data->code_pressed_memory; int curvalue = input_code_pressed(machine, code); int memnum, empty = -1; @@ -972,9 +974,9 @@ int input_code_pressed_once(running_machine *machine, input_code code) an input_item_id to an input_code -------------------------------------------------*/ -input_code input_code_from_input_item_id(running_machine *machine, input_item_id itemid) +input_code input_code_from_input_item_id(running_machine &machine, input_item_id itemid) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_class devclass; /* iterate over device classes and devices */ @@ -999,9 +1001,9 @@ input_code input_code_from_input_item_id(running_machine *machine, input_item_id input_code_poll_switches - poll for any input -------------------------------------------------*/ -input_code input_code_poll_switches(running_machine *machine, int reset) +input_code input_code_poll_switches(running_machine &machine, int reset) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_class devclass; /* if resetting memory, do it now */ @@ -1094,9 +1096,9 @@ input_code input_code_poll_switches(running_machine *machine, int reset) any keyboard-specific input -------------------------------------------------*/ -input_code input_code_poll_keyboard_switches(running_machine *machine, int reset) +input_code input_code_poll_keyboard_switches(running_machine &machine, int reset) { - input_device_list *devlist = &machine->input_data->device_list[DEVICE_CLASS_KEYBOARD]; + input_device_list *devlist = &machine.input_data->device_list[DEVICE_CLASS_KEYBOARD]; int devnum; /* if resetting memory, do it now */ @@ -1132,7 +1134,7 @@ input_code input_code_poll_keyboard_switches(running_machine *machine, int reset move far enough -------------------------------------------------*/ -static int input_code_check_axis(running_machine *machine, input_device_item *item, input_code code) +static int input_code_check_axis(running_machine &machine, input_device_item *item, input_code code) { INT32 curval, diff; @@ -1177,9 +1179,9 @@ static int input_code_check_axis(running_machine *machine, input_device_item *it input_code_reset_axes - reset axes memory -------------------------------------------------*/ -static void input_code_reset_axes(running_machine *machine) +static void input_code_reset_axes(running_machine &machine) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_class devclass; /* iterate over device classes and devices */ @@ -1219,9 +1221,9 @@ static void input_code_reset_axes(running_machine *machine) input_code_poll_axes - poll for any input -------------------------------------------------*/ -input_code input_code_poll_axes(running_machine *machine, int reset) +input_code input_code_poll_axes(running_machine &machine, int reset) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_class devclass; /* if resetting memory, do it now */ @@ -1275,9 +1277,9 @@ input_code input_code_poll_axes(running_machine *machine, int reset) a friendly name -------------------------------------------------*/ -astring &input_code_name(running_machine *machine, astring &string, input_code code) +astring &input_code_name(running_machine &machine, astring &string, input_code code) { - input_device_list *device_list = machine->input_data->device_list; + input_device_list *device_list = machine.input_data->device_list; input_device_item *item = input_code_item(machine, code); const char *devclass; const char *devcode; @@ -1335,7 +1337,7 @@ astring &input_code_name(running_machine *machine, astring &string, input_code c a given code -------------------------------------------------*/ -astring &input_code_to_token(running_machine *machine, astring &string, input_code code) +astring &input_code_to_token(running_machine &machine, astring &string, input_code code) { input_device_item *item = input_code_item(machine, code); const char *devclass; @@ -1390,7 +1392,7 @@ astring &input_code_to_token(running_machine *machine, astring &string, input_co code from a token -------------------------------------------------*/ -input_code input_code_from_token(running_machine *machine, const char *_token) +input_code input_code_from_token(running_machine &machine, const char *_token) { UINT32 devclass, itemid, devindex, modifier, standard; UINT32 itemclass = ITEM_CLASS_INVALID; @@ -1438,7 +1440,7 @@ input_code input_code_from_token(running_machine *machine, const char *_token) /* otherwise, keep parsing */ else { - input_device_list *device_list = (machine != NULL) ? machine->input_data->device_list : NULL; + input_device_list *device_list = machine.input_data->device_list; input_device *device; /* if this is an invalid device, we have nothing to look up */ @@ -1510,16 +1512,16 @@ exit: INT32 debug_global_input_code_pressed(input_code code) { - if (!mame_is_valid_machine(stashed_machine)) + if (!mame_is_valid_machine(*stashed_machine)) return 0; - return input_code_pressed(stashed_machine, code); + return input_code_pressed(*stashed_machine, code); } INT32 debug_global_input_code_pressed_once(input_code code) { - if (!mame_is_valid_machine(stashed_machine)) + if (!mame_is_valid_machine(*stashed_machine)) return 0; - return input_code_pressed_once(stashed_machine, code); + return input_code_pressed_once(*stashed_machine, code); } /*************************************************************************** @@ -1531,7 +1533,7 @@ INT32 debug_global_input_code_pressed_once(input_code code) from the code -------------------------------------------------*/ -static input_device_item *input_code_item(running_machine *machine, input_code code) +static input_device_item *input_code_item(running_machine &machine, input_code code) { input_device *device = input_code_device(machine, code); input_item_id itemid; @@ -1555,9 +1557,9 @@ static input_device_item *input_code_item(running_machine *machine, input_code c value into the class specified by code -------------------------------------------------*/ -static INT32 convert_absolute_value(running_machine *machine, input_code code, input_device_item *item) +static INT32 convert_absolute_value(running_machine &machine, input_code code, input_device_item *item) { - input_private *state = machine->input_data; + input_private *state = machine.input_data; /* make sure values are valid */ assert(item->current >= INPUT_ABSOLUTE_MIN && item->current <= INPUT_ABSOLUTE_MAX); @@ -1679,9 +1681,9 @@ static INT32 convert_relative_value(input_code code, input_device_item *item) value into the class specified by code -------------------------------------------------*/ -static INT32 convert_switch_value(running_machine *machine, input_code code, input_device_item *item) +static INT32 convert_switch_value(running_machine &machine, input_code code, input_device_item *item) { - input_private *state = machine->input_data; + input_private *state = machine.input_data; /* only a switch is supported */ if (INPUT_CODE_ITEMCLASS(code) == ITEM_CLASS_SWITCH) @@ -1723,9 +1725,9 @@ static INT32 convert_switch_value(running_machine *machine, input_code code, inp absolute value -------------------------------------------------*/ -static INT32 apply_deadzone_and_saturation(running_machine *machine, input_code code, INT32 result) +static INT32 apply_deadzone_and_saturation(running_machine &machine, input_code code, INT32 result) { - input_private *state = machine->input_data; + input_private *state = machine.input_data; int negative = FALSE; /* ignore if not a joystick */ |