[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