From 5be4f318225ed28f909f4dea281c65d697491928 Mon Sep 17 00:00:00 2001 From: jjceresa <32781294+jjceresa@users.noreply.github.com> Date: Thu, 21 Dec 2017 14:48:58 +0100 Subject: [PATCH] Explicit cast for rvoice_event_handler functions (#312) Explicit casts to avoid narrowing conversion warnings. --- src/rvoice/fluid_rvoice_event.c | 38 ++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/rvoice/fluid_rvoice_event.c b/src/rvoice/fluid_rvoice_event.c index 5edf4fab..8e240e33 100644 --- a/src/rvoice/fluid_rvoice_event.c +++ b/src/rvoice/fluid_rvoice_event.c @@ -24,34 +24,45 @@ #include "fluid_iir_filter.h" #include "fluid_lfo.h" #include "fluid_adsr_env.h" - +/* Calling proc without data parameters */ #define EVENTFUNC_0(proc, type) \ if (event->method == proc) { \ proc((type) event->object); \ return; } +/* Calling proc passing only one real data parameter */ #define EVENTFUNC_R1(proc, type) \ if (event->method == proc) { \ if(event->intparam != 0) { FLUID_LOG(FLUID_DBG, "IR-mismatch"); } \ proc((type) event->object, event->realparams[0]); \ return; } +/* Calling proc passing pointer parameter */ #define EVENTFUNC_PTR(proc, type, type2) \ if (event->method == proc) { \ proc((type) event->object, (type2) event->ptr); \ return; } +/* Calling proc passing only int parameter */ #define EVENTFUNC_I1(proc, type) \ if (event->method == proc) { \ if(event->realparams[0] != 0.0f) { FLUID_LOG(FLUID_DBG, "IR-mismatch"); } \ proc((type) event->object, event->intparam); \ return; } +/* Calling proc passing: int,int data parameters */ +#define EVENTFUNC_II(proc, type) \ + if (event->method == proc) { \ + proc((type) event->object, event->intparam, (int) event->realparams[0]); \ + return; } + +/* Calling proc passing: int,real data parameters */ #define EVENTFUNC_IR(proc, type) \ if (event->method == proc) { \ proc((type) event->object, event->intparam, event->realparams[0]); \ return; } +/* Calling proc passing: int,real,real,real,real,real data parameters */ #define EVENTFUNC_ALL(proc, type) \ if (event->method == proc) { \ proc((type) event->object, event->intparam, event->realparams[0], \ @@ -59,6 +70,23 @@ event->realparams[4]); \ return; } +/* Calling proc passing: int,int,real,real,real,int data parameters */ +#define EVENTFUNC_IIR3I(proc, type) \ + if (event->method == proc) { \ + proc((type) event->object, event->intparam, (int)event->realparams[0], \ + event->realparams[1], event->realparams[2], event->realparams[3], \ + (int)event->realparams[4]); \ + return; } + +/* Calling proc passing: int,int,real,real,real,real data parameters */ +#define EVENTFUNC_IIR4(proc, type) \ + if (event->method == proc) { \ + proc((type) event->object, event->intparam, (int)event->realparams[0], \ + event->realparams[1], event->realparams[2], event->realparams[3], \ + event->realparams[4]); \ + return; } + +/* Calling proc passing: int,real,real,real,real data parameters */ #define EVENTFUNC_R4(proc, type) \ if (event->method == proc) { \ proc((type) event->object, event->intparam, event->realparams[0], \ @@ -76,7 +104,7 @@ fluid_rvoice_event_dispatch(fluid_rvoice_event_t* event) EVENTFUNC_0(fluid_rvoice_voiceoff, fluid_rvoice_t*); EVENTFUNC_0(fluid_rvoice_reset, fluid_rvoice_t*); - EVENTFUNC_ALL(fluid_adsr_env_set_data, fluid_adsr_env_t*); + EVENTFUNC_IIR4(fluid_adsr_env_set_data, fluid_adsr_env_t*); EVENTFUNC_I1(fluid_lfo_set_delay, fluid_lfo_t*); EVENTFUNC_R1(fluid_lfo_set_incr, fluid_lfo_t*); @@ -84,7 +112,7 @@ fluid_rvoice_event_dispatch(fluid_rvoice_event_t* event) EVENTFUNC_R1(fluid_iir_filter_set_fres, fluid_iir_filter_t*); EVENTFUNC_R1(fluid_iir_filter_set_q_dB, fluid_iir_filter_t*); - EVENTFUNC_IR(fluid_rvoice_buffers_set_mapping, fluid_rvoice_buffers_t*); + EVENTFUNC_II(fluid_rvoice_buffers_set_mapping, fluid_rvoice_buffers_t*); EVENTFUNC_IR(fluid_rvoice_buffers_set_amp, fluid_rvoice_buffers_t*); EVENTFUNC_R1(fluid_rvoice_set_modenv_to_pitch, fluid_rvoice_t*); @@ -116,9 +144,9 @@ fluid_rvoice_event_dispatch(fluid_rvoice_event_t* event) EVENTFUNC_0(fluid_rvoice_mixer_reset_fx, fluid_rvoice_mixer_t*); EVENTFUNC_0(fluid_rvoice_mixer_reset_reverb, fluid_rvoice_mixer_t*); EVENTFUNC_0(fluid_rvoice_mixer_reset_chorus, fluid_rvoice_mixer_t*); - EVENTFUNC_IR(fluid_rvoice_mixer_set_threads, fluid_rvoice_mixer_t*); + EVENTFUNC_II(fluid_rvoice_mixer_set_threads, fluid_rvoice_mixer_t*); - EVENTFUNC_ALL(fluid_rvoice_mixer_set_chorus_params, fluid_rvoice_mixer_t*); + EVENTFUNC_IIR3I(fluid_rvoice_mixer_set_chorus_params, fluid_rvoice_mixer_t*); EVENTFUNC_R4(fluid_rvoice_mixer_set_reverb_params, fluid_rvoice_mixer_t*); FLUID_LOG(FLUID_ERR, "fluid_rvoice_event_dispatch: Unknown method %p to dispatch!", event->method);