std_gvar_tuple_array(): Change to allow for more ARRAY_AND_SIZE usage.

Thanks to Marcus Comstedt <marcus@mc.pp.se> for the hint!
This commit is contained in:
Uwe Hermann 2017-07-21 18:45:42 +02:00
parent 8dacbcf68f
commit 58ffcf9712
11 changed files with 17 additions and 18 deletions

View File

@ -295,7 +295,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
*data = g_variant_new_strv(ARRAY_AND_SIZE(weight_time)); *data = g_variant_new_strv(ARRAY_AND_SIZE(weight_time));
break; break;
case SR_CONF_SPL_MEASUREMENT_RANGE: case SR_CONF_SPL_MEASUREMENT_RANGE:
*data = std_gvar_tuple_array(&meas_ranges, ARRAY_SIZE(meas_ranges)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(meas_ranges));
break; break;
case SR_CONF_DATA_SOURCE: case SR_CONF_DATA_SOURCE:
*data = g_variant_new_strv(ARRAY_AND_SIZE(data_sources)); *data = g_variant_new_strv(ARRAY_AND_SIZE(data_sources));

View File

@ -495,12 +495,12 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
case SR_CONF_TIMEBASE: case SR_CONF_TIMEBASE:
if (!model) if (!model)
return SR_ERR_ARG; return SR_ERR_ARG;
*data = std_gvar_tuple_array(model->timebases, model->num_timebases); *data = std_gvar_tuple_array(*model->timebases, model->num_timebases);
break; break;
case SR_CONF_VDIV: case SR_CONF_VDIV:
if (cg_type == CG_NONE) if (cg_type == CG_NONE)
return SR_ERR_CHANNEL_GROUP; return SR_ERR_CHANNEL_GROUP;
*data = std_gvar_tuple_array(model->vdivs, model->num_vdivs); *data = std_gvar_tuple_array(*model->vdivs, model->num_vdivs);
break; break;
default: default:
return SR_ERR_NA; return SR_ERR_NA;

View File

@ -482,7 +482,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
*data = g_variant_new_strv(devc->coupling_vals, devc->coupling_tab_size); *data = g_variant_new_strv(devc->coupling_vals, devc->coupling_tab_size);
break; break;
case SR_CONF_VDIV: case SR_CONF_VDIV:
*data = std_gvar_tuple_array(&vdivs, ARRAY_SIZE(vdivs)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(vdivs));
break; break;
default: default:
return SR_ERR_NA; return SR_ERR_NA;

View File

@ -603,7 +603,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
*data = std_gvar_array_u64(devc->profile->buffersizes, NUM_BUFFER_SIZES); *data = std_gvar_array_u64(devc->profile->buffersizes, NUM_BUFFER_SIZES);
break; break;
case SR_CONF_TIMEBASE: case SR_CONF_TIMEBASE:
*data = std_gvar_tuple_array(&timebases, ARRAY_SIZE(timebases)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(timebases));
break; break;
case SR_CONF_TRIGGER_SOURCE: case SR_CONF_TRIGGER_SOURCE:
*data = g_variant_new_strv(ARRAY_AND_SIZE(trigger_sources)); *data = g_variant_new_strv(ARRAY_AND_SIZE(trigger_sources));
@ -623,7 +623,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
*data = g_variant_new_strv(ARRAY_AND_SIZE(coupling)); *data = g_variant_new_strv(ARRAY_AND_SIZE(coupling));
break; break;
case SR_CONF_VDIV: case SR_CONF_VDIV:
*data = std_gvar_tuple_array(&vdivs, ARRAY_SIZE(vdivs)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(vdivs));
break; break;
default: default:
return SR_ERR_NA; return SR_ERR_NA;

View File

@ -604,7 +604,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
*data = std_gvar_array_u64(ARRAY_AND_SIZE(buffersizes)); *data = std_gvar_array_u64(ARRAY_AND_SIZE(buffersizes));
break; break;
case SR_CONF_VDIV: case SR_CONF_VDIV:
*data = std_gvar_tuple_array(&vdivs, ARRAY_SIZE(vdivs)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(vdivs));
break; break;
case SR_CONF_COUPLING: case SR_CONF_COUPLING:
*data = g_variant_new_strv(ARRAY_AND_SIZE(coupling)); *data = g_variant_new_strv(ARRAY_AND_SIZE(coupling));

View File

@ -324,8 +324,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
case SR_CONF_DEVICE_OPTIONS: case SR_CONF_DEVICE_OPTIONS:
return STD_CONFIG_LIST(key, data, sdi, cg, NULL, drvopts, devopts); return STD_CONFIG_LIST(key, data, sdi, cg, NULL, drvopts, devopts);
case SR_CONF_SAMPLE_INTERVAL: case SR_CONF_SAMPLE_INTERVAL:
*data = std_gvar_tuple_array(&kecheng_kc_330b_sample_intervals, *data = std_gvar_tuple_array(ARRAY_AND_SIZE(kecheng_kc_330b_sample_intervals));
ARRAY_SIZE(kecheng_kc_330b_sample_intervals));
break; break;
case SR_CONF_SPL_WEIGHT_FREQ: case SR_CONF_SPL_WEIGHT_FREQ:
*data = g_variant_new_strv(ARRAY_AND_SIZE(weight_freq)); *data = g_variant_new_strv(ARRAY_AND_SIZE(weight_freq));

View File

@ -247,7 +247,7 @@ static int config_list(uint32_t key, GVariant **data,
*data = g_variant_new_strv(ARRAY_AND_SIZE(weight_time)); *data = g_variant_new_strv(ARRAY_AND_SIZE(weight_time));
break; break;
case SR_CONF_SPL_MEASUREMENT_RANGE: case SR_CONF_SPL_MEASUREMENT_RANGE:
*data = std_gvar_tuple_array(&meas_ranges, ARRAY_SIZE(meas_ranges)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(meas_ranges));
break; break;
case SR_CONF_DATA_SOURCE: case SR_CONF_DATA_SOURCE:
*data = g_variant_new_strv(ARRAY_AND_SIZE(data_sources)); *data = g_variant_new_strv(ARRAY_AND_SIZE(data_sources));

View File

@ -840,7 +840,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
return SR_ERR_ARG; return SR_ERR_ARG;
if (!cg) if (!cg)
return SR_ERR_CHANNEL_GROUP; return SR_ERR_CHANNEL_GROUP;
*data = std_gvar_tuple_array((const uint64_t (*)[][2])devc->vdivs, devc->num_vdivs); *data = std_gvar_tuple_array(devc->vdivs, devc->num_vdivs);
break; break;
case SR_CONF_TIMEBASE: case SR_CONF_TIMEBASE:
if (!devc) if (!devc)
@ -848,7 +848,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
return SR_ERR_ARG; return SR_ERR_ARG;
if (devc->num_timebases <= 0) if (devc->num_timebases <= 0)
return SR_ERR_NA; return SR_ERR_NA;
*data = std_gvar_tuple_array((const uint64_t (*)[][2])devc->timebases, devc->num_timebases); *data = std_gvar_tuple_array(devc->timebases, devc->num_timebases);
break; break;
case SR_CONF_TRIGGER_SOURCE: case SR_CONF_TRIGGER_SOURCE:
if (!devc) if (!devc)

View File

@ -462,7 +462,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
case SR_CONF_DEVICE_OPTIONS: case SR_CONF_DEVICE_OPTIONS:
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts); return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
case SR_CONF_TIMEBASE: case SR_CONF_TIMEBASE:
*data = std_gvar_tuple_array(&dlm_timebases, ARRAY_SIZE(dlm_timebases)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(dlm_timebases));
return SR_OK; return SR_OK;
case SR_CONF_TRIGGER_SOURCE: case SR_CONF_TRIGGER_SOURCE:
if (!model) if (!model)
@ -503,7 +503,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
case SR_CONF_VDIV: case SR_CONF_VDIV:
if (cg_type == CG_NONE) if (cg_type == CG_NONE)
return SR_ERR_CHANNEL_GROUP; return SR_ERR_CHANNEL_GROUP;
*data = std_gvar_tuple_array(&dlm_vdivs, ARRAY_SIZE(dlm_vdivs)); *data = std_gvar_tuple_array(ARRAY_AND_SIZE(dlm_vdivs));
break; break;
default: default:
return SR_ERR_NA; return SR_ERR_NA;

View File

@ -956,7 +956,7 @@ SR_PRIV int std_opts_config_list(uint32_t key, GVariant **data,
std_opts_config_list(key, data, sdi, cg, ARRAY_AND_SIZE(scanopts), \ std_opts_config_list(key, data, sdi, cg, ARRAY_AND_SIZE(scanopts), \
ARRAY_AND_SIZE(drvopts), ARRAY_AND_SIZE(devopts)) ARRAY_AND_SIZE(drvopts), ARRAY_AND_SIZE(devopts))
SR_PRIV GVariant *std_gvar_tuple_array(const uint64_t (*a)[][2], unsigned int n); SR_PRIV GVariant *std_gvar_tuple_array(const uint64_t a[][2], unsigned int n);
SR_PRIV GVariant *std_gvar_tuple_rational(const struct sr_rational *r, unsigned int n); SR_PRIV GVariant *std_gvar_tuple_rational(const struct sr_rational *r, unsigned int n);
SR_PRIV GVariant *std_gvar_samplerates(const uint64_t samplerates[], unsigned int n); SR_PRIV GVariant *std_gvar_samplerates(const uint64_t samplerates[], unsigned int n);
SR_PRIV GVariant *std_gvar_samplerates_steps(const uint64_t samplerates[], unsigned int n); SR_PRIV GVariant *std_gvar_samplerates_steps(const uint64_t samplerates[], unsigned int n);

View File

@ -541,7 +541,7 @@ SR_PRIV int std_opts_config_list(uint32_t key, GVariant **data,
return SR_OK; return SR_OK;
} }
SR_PRIV GVariant *std_gvar_tuple_array(const uint64_t (*a)[][2], unsigned int n) SR_PRIV GVariant *std_gvar_tuple_array(const uint64_t a[][2], unsigned int n)
{ {
unsigned int i; unsigned int i;
GVariant *rational[2]; GVariant *rational[2];
@ -550,8 +550,8 @@ SR_PRIV GVariant *std_gvar_tuple_array(const uint64_t (*a)[][2], unsigned int n)
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY); g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
rational[0] = g_variant_new_uint64((*a)[i][0]); rational[0] = g_variant_new_uint64(a[i][0]);
rational[1] = g_variant_new_uint64((*a)[i][1]); rational[1] = g_variant_new_uint64(a[i][1]);
/* FIXME: Valgrind reports a memory leak here. */ /* FIXME: Valgrind reports a memory leak here. */
g_variant_builder_add_value(&gvb, g_variant_new_tuple(rational, 2)); g_variant_builder_add_value(&gvb, g_variant_new_tuple(rational, 2));