[systemd-devel] [PATCH 2/3] dbus: add generic DEFINE_BUS_PROPERTY_SET_ENUM() macro for enum properties

Michael Olbrich m.olbrich at pengutronix.de
Mon Feb 20 09:31:26 PST 2012


The defined function can be used as BusPropertySetCallback.
---
 src/dbus-common.h |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/dbus-common.h b/src/dbus-common.h
index 1dc0f59..892d129 100644
--- a/src/dbus-common.h
+++ b/src/dbus-common.h
@@ -160,6 +160,21 @@ int bus_property_append_long(DBusMessageIter *i, const char *property, void *dat
                 return 0;                                               \
         }
 
+#define DEFINE_BUS_PROPERTY_SET_ENUM(function,name,type)                \
+        int function(DBusMessageIter *i, const char *property, void *data) { \
+                const char *value;                                      \
+                type *field = data;                                     \
+                                                                        \
+                assert(i);                                              \
+                assert(property);                                       \
+                                                                        \
+                dbus_message_iter_get_basic(i, &value);                 \
+                                                                        \
+                *field = name##_from_string(value);                     \
+                                                                        \
+                return 0;                                               \
+        }
+
 const char *bus_errno_to_dbus(int error);
 
 DBusMessage* bus_properties_changed_new(const char *path, const char *interface, const char *properties);
-- 
1.7.9



More information about the systemd-devel mailing list