X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fstd.c;h=3561c590bbe60d0d74f58de55ab1ca53b583e809;hb=43995cda362b117ecae790f01e05eb9b43d5e886;hp=5748ba02eb9c62b869c693f60eac2d5942aa6ed2;hpb=54d471f4980f1b975188b5e8bdf5aa90acd3cece;p=libsigrok.git diff --git a/src/std.c b/src/std.c index 5748ba02..3561c590 100644 --- a/src/std.c +++ b/src/std.c @@ -541,7 +541,7 @@ SR_PRIV int std_opts_config_list(uint32_t key, GVariant **data, 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; 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); for (i = 0; i < n; i++) { - rational[0] = g_variant_new_uint64((*a)[i][0]); - rational[1] = g_variant_new_uint64((*a)[i][1]); + rational[0] = g_variant_new_uint64(a[i][0]); + rational[1] = g_variant_new_uint64(a[i][1]); /* FIXME: Valgrind reports a memory leak here. */ g_variant_builder_add_value(&gvb, g_variant_new_tuple(rational, 2)); @@ -627,3 +627,60 @@ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]) return g_variant_builder_end(&gvb); } + +SR_PRIV GVariant *std_gvar_min_max_step_thresholds(const double min, const double max, const double step) +{ + double d; + GVariant *gvar, *range[2]; + GVariantBuilder gvb; + + g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY); + + for (d = min; d <= max; d += step) { + range[0] = g_variant_new_double(d); + range[1] = g_variant_new_double(d); + + gvar = g_variant_new_tuple(range, 2); + g_variant_builder_add_value(&gvb, gvar); + } + + return g_variant_builder_end(&gvb); +} + +SR_PRIV GVariant *std_gvar_tuple_u64(uint64_t low, uint64_t high) +{ + GVariant *range[2]; + + range[0] = g_variant_new_uint64(low); + range[1] = g_variant_new_uint64(high); + + return g_variant_new_tuple(range, 2); +} + +SR_PRIV GVariant *std_gvar_tuple_double(double low, double high) +{ + GVariant *range[2]; + + range[0] = g_variant_new_double(low); + range[1] = g_variant_new_double(high); + + return g_variant_new_tuple(range, 2); +} + +SR_PRIV GVariant *std_gvar_array_i32(const int32_t *a, unsigned int n) +{ + return g_variant_new_fixed_array(G_VARIANT_TYPE_INT32, + a, n, sizeof(int32_t)); +} + +SR_PRIV GVariant *std_gvar_array_u32(const uint32_t *a, unsigned int n) +{ + return g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, + a, n, sizeof(uint32_t)); +} + +SR_PRIV GVariant *std_gvar_array_u64(const uint64_t *a, unsigned int n) +{ + return g_variant_new_fixed_array(G_VARIANT_TYPE_UINT64, + a, n, sizeof(uint64_t)); +}