diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-05-16 09:06:41 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2014-07-03 13:48:43 +1000 |
commit | 4b88bf30d43ab3ba731c9e78f011b78a484e12ed (patch) | |
tree | 3757e95abbf7889107d4b2cfca8c94277a1f1b6b | |
parent | 5cecefeea050642355fd35f39f46b5aa7ee304c5 (diff) | |
download | libinput-4b88bf30d43ab3ba731c9e78f011b78a484e12ed.tar.gz |
Add an enum for configuration return codes
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
-rw-r--r-- | src/libinput.c | 20 | ||||
-rw-r--r-- | src/libinput.h | 34 | ||||
-rw-r--r-- | test/misc.c | 23 |
3 files changed, 77 insertions, 0 deletions
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 <errno.h> #include <fcntl.h> #include <libinput.h> +#include <libinput-util.h> #include <unistd.h> #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); } |