[PATCH v2 libinput 1/3] Add an enum for configuration return codes
Peter Hutterer
peter.hutterer at who-t.net
Mon Jun 30 22:56:19 PDT 2014
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
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,
+ * 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
More information about the wayland-devel
mailing list