[PATCH v2 libinput 1/3] Add an enum for configuration return codes
jadahl at gmail.com
jadahl at gmail.com
Tue Jul 1 11:34:04 PDT 2014
On Tue, Jul 01, 2014 at 03:56:19PM +1000, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Changes to v1:
> - actually implement libinput_config_status_to_str
> - add a basic test for it
Except for a minor nit, Reviewed-by: Jonas Ådahl <jadahl at gmail.com>
>
> src/libinput.c | 20 ++++++++++++++++++++
> src/libinput.h | 33 +++++++++++++++++++++++++++++++++
> test/misc.c | 23 +++++++++++++++++++++++
> 3 files changed, 76 insertions(+)
>
> diff --git a/src/libinput.c b/src/libinput.c
> index 44f4f23..3888f43 100644
> --- a/src/libinput.c
> +++ b/src/libinput.c
> @@ -1237,3 +1237,23 @@ libinput_event_touch_get_base_event(struct libinput_event_touch *event)
> {
> return &event->base;
> }
> +
> +LIBINPUT_EXPORT const char *
> +libinput_config_status_to_str(enum libinput_config_status status)
> +{
> + const char *str = NULL;
> +
> + switch(status) {
> + case LIBINPUT_CONFIG_STATUS_SUCCESS:
> + str = "Success";
> + break;
> + case LIBINPUT_CONFIG_STATUS_UNSUPPORTED:
> + str = "Unsupported configuration option";
> + break;
> + case LIBINPUT_CONFIG_STATUS_INVALID:
> + str = "Invalid argument range";
> + break;
> + }
> +
> + return str;
> +}
> diff --git a/src/libinput.h b/src/libinput.h
> index ff67ce7..3eaea91 100644
> --- a/src/libinput.h
> +++ b/src/libinput.h
> @@ -1361,6 +1361,39 @@ libinput_device_get_size(struct libinput_device *device,
> double *width,
> double *height);
>
> +
> +/**
> + * @defgroup config Device configuration
> + *
> + * Enable, disable and check for device-specific features. For all features,
Well its really Enable, disable, adjust/configure/change and check.
> + * libinput assigns a default based on the hardware configuration. This
> + * default can be obtained with the respective get_default call.
> + *
> + * Some configuration option may be dependent on or mutually exclusive with
> + * with other options. The behavior in those cases is
> + * implementation-defined, the caller must ensure that the options are set
> + * in the right order.
> + */
> +
> +enum libinput_config_status {
> + LIBINPUT_CONFIG_STATUS_SUCCESS = 0, /**< Config applied successfully */
> + LIBINPUT_CONFIG_STATUS_UNSUPPORTED, /**< Configuration not available on
> + this device */
> + LIBINPUT_CONFIG_STATUS_INVALID, /**< Invalid parameter range */
> +};
> +
> +/**
> + * @ingroup config Device configuration
> + *
> + * Return a string describing the error.
> + *
> + * @param status The status to translate to a string
> + * @return A human-readable string representing the error or NULL for an
> + * invalid status.
> + */
> +const char *
> +libinput_config_status_to_str(enum libinput_config_status status);
> +
> #ifdef __cplusplus
> }
> #endif
> diff --git a/test/misc.c b/test/misc.c
> index bea7e88..c5a8805 100644
> --- a/test/misc.c
> +++ b/test/misc.c
> @@ -26,6 +26,7 @@
> #include <errno.h>
> #include <fcntl.h>
> #include <libinput.h>
> +#include <libinput-util.h>
> #include <unistd.h>
>
> #include "litest.h"
> @@ -390,6 +391,27 @@ START_TEST(context_ref_counting)
> }
> END_TEST
>
> +START_TEST(config_status_string)
> +{
> + const char *strs[3];
> + const char *invalid;
> + size_t i, j;
> +
> + strs[0] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_SUCCESS);
> + strs[1] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
> + strs[2] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_INVALID);
> +
> + for (i = 0; i < ARRAY_LENGTH(strs) - 1; i++)
> + for (j = i + 1; j < ARRAY_LENGTH(strs); j++)
> + ck_assert_str_ne(strs[i], strs[j]);
> +
> + invalid = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_INVALID + 1);
> + ck_assert(invalid == NULL);
> + invalid = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_SUCCESS - 1);
> + ck_assert(invalid == NULL);
> +}
> +END_TEST
> +
> int main (int argc, char **argv) {
> litest_add_no_device("events:conversion", event_conversion_device_notify);
> litest_add_no_device("events:conversion", event_conversion_pointer);
> @@ -397,6 +419,7 @@ int main (int argc, char **argv) {
> litest_add_no_device("events:conversion", event_conversion_key);
> litest_add_no_device("events:conversion", event_conversion_touch);
> litest_add_no_device("context:refcount", context_ref_counting);
> + litest_add_no_device("config:status string", config_status_string);
>
> return litest_run(argc, argv);
> }
> --
> 1.9.3
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list