[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