From: Peter Hutterer Date: Thu, 15 May 2014 23:06:41 +0000 (+1000) Subject: Add an enum for configuration return codes X-Git-Tag: 0.5.0~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b88bf30d43ab3ba731c9e78f011b78a484e12ed;p=platform%2Fupstream%2Flibinput.git Add an enum for configuration return codes Signed-off-by: Peter Hutterer Reviewed-by: Jonas Ã…dahl --- diff --git a/src/libinput.c b/src/libinput.c index 1918b48a..6ea9e485 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -1255,3 +1255,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 73183da8..ead30646 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -1402,6 +1402,40 @@ libinput_device_get_size(struct libinput_device *device, double *width, double *height); + +/** + * @defgroup config Device configuration + * + * Enable, disable, change and/or check for device-specific features. For + * all features, 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 30b8d452..7e028321 100644 --- a/test/misc.c +++ b/test/misc.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "litest.h" @@ -409,6 +410,27 @@ START_TEST(device_ids) } 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); @@ -417,6 +439,7 @@ int main (int argc, char **argv) { litest_add_no_device("events:conversion", event_conversion_touch); litest_add_no_device("context:refcount", context_ref_counting); litest_add("device:id", device_ids, LITEST_ANY, LITEST_ANY); + litest_add_no_device("config:status string", config_status_string); return litest_run(argc, argv); }