summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-05-13 12:20:51 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-05-13 12:20:51 +0900
commitf744776ff805ee1f1b5a95e08c6eb3fae98e8884 (patch)
treeb1da2922834582d410e8b2229488ac69b8167de3
parentc1110f6cd7209f34b6b3bb62b3c57cdca59b406c (diff)
downloadsystemd-f744776ff805ee1f1b5a95e08c6eb3fae98e8884.tar.gz
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 d03d0f82d9..74526c5e8b 100644
--- a/src/shared/bus-util.h
+++ b/src/shared/bus-util.h
@@ -122,6 +122,44 @@ assert_cc(sizeof(mode_t) == sizeof(uint32_t));
int bus_log_parse_error(int r);
int bus_log_create_error(int r);
+#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, \