On Tue, Jul 01, 2014 at 03:56:19PM +1000, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
> 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 <[email protected]>

> 
>  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
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to