sdbus++: generate server bindings for properties
Change-Id: Iabfefd94d1a261355d547c8c1cfbcf27cce825b7
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/tools/templates/interface.mako.server.hpp b/tools/templates/interface.mako.server.hpp
index 73aff6b..ca78cec 100644
--- a/tools/templates/interface.mako.server.hpp
+++ b/tools/templates/interface.mako.server.hpp
@@ -47,15 +47,42 @@
${ s.cpp_prototype(loader, interface=interface, ptype='header') }
% endfor
+ % for p in interface.properties:
+ /** Get value of ${p.name} */
+ virtual ${p.typeName} ${p.camelCase}() const;
+ /** Set value of ${p.name} */
+ virtual ${p.typeName} ${p.camelCase}(${p.typeName} value);
+ % endfor
+
private:
% for m in interface.methods:
${ m.cpp_prototype(loader, interface=interface, ptype='callback-header') }
% endfor
+ % for p in interface.properties:
+ /** @brief sd-bus callback for get-property '${p.name}' */
+ static int _callback_get_${p.name}(
+ sd_bus*, const char*, const char*, const char*,
+ sd_bus_message*, void*, sd_bus_error*);
+ /** @brief sd-bus callback for set-property '${p.name}' */
+ static int _callback_set_${p.name}(
+ sd_bus*, const char*, const char*, const char*,
+ sd_bus_message*, void*, sd_bus_error*);
+
+ % endfor
+
static constexpr auto _interface = "${interface.name}";
static const vtable::vtable_t _vtable[];
interface::interface _${"_".join(interface.name.split('.'))}_interface;
+ % for p in interface.properties:
+ % if p.defaultValue:
+ ${p.typeName} _${p.camelCase} = ${p.defaultValue};
+ % else:
+ ${p.typeName} _${p.camelCase}{};
+ % endif
+ % endfor
+
};
% for s in namespaces: