summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-05-13 12:20:51 +0900
committerSven Eden <yamakuzure@gmx.net>2018-08-24 16:47:08 +0200
commit713e95b39f923b5b77315a4fe60650bdfcc81ec9 (patch)
treecb9d3cbf8fdd47b1899cb4481263e03c16237555
parent6a315d96772de973b2ae192ae8edd375b032816b (diff)
bus-util: add several macros for defining functions of getting dbus properties
-rw-r--r--src/shared/bus-util.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h
index 5a3421405..b65fce184 100644
--- a/src/shared/bus-util.h
+++ b/src/shared/bus-util.h
@@ -138,6 +138,44 @@ int bus_log_create_error(int r);
#if 0 /// UNNEEDED by elogind
#endif // 0
+#define BUS_DEFINE_PROPERTY_GET_GLOBAL(function, bus_type, val) \
+ int function(sd_bus *bus, \
+ const char *path, \
+ const char *interface, \
+ const char *property, \
+ sd_bus_message *reply, \
+ void *userdata, \
+ sd_bus_error *error) { \
+ \
+ assert(bus); \
+ assert(reply); \
+ \
+ return sd_bus_message_append(reply, bus_type, val); \
+ }
+
+#define BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, get2) \
+ int function(sd_bus *bus, \
+ const char *path, \
+ const char *interface, \
+ const char *property, \
+ sd_bus_message *reply, \
+ void *userdata, \
+ sd_bus_error *error) { \
+ \
+ data_type *data = userdata; \
+ \
+ assert(bus); \
+ assert(reply); \
+ assert(data); \
+ \
+ return sd_bus_message_append(reply, bus_type, \
+ get2(get1(data))); \
+ }
+
+#define ident(x) (x)
+#define BUS_DEFINE_PROPERTY_GET(function, bus_type, data_type, get1) \
+ BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, ident)
+
#define BUS_DEFINE_PROPERTY_GET_ENUM(function, name, type) \
int function(sd_bus *bus, \
const char *path, \