11 #include "../macros.h" 13 #include "objectvtable_p.h" 17 ObjectVTableMethod::ObjectVTableMethod(ObjectVTableBase *vtable,
18 const std::string &name,
19 const std::string &signature,
20 const std::string &ret,
22 : d_ptr(
std::make_unique<ObjectVTableMethodPrivate>(
23 vtable, name, signature, ret,
std::move(handler))) {
24 vtable->addMethod(
this);
27 ObjectVTableMethod::~ObjectVTableMethod() {}
29 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, name);
30 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string,
32 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, ret);
33 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, ObjectVTableBase *,
36 const ObjectMethod &ObjectVTableMethod::handler()
const {
38 if (d->closureHandler_) {
39 return d->closureHandler_;
41 return d->internalHandler_;
50 d->closureHandler_ = [d, closure = std::move(closure)](
Message message) {
51 return closure(std::move(message), d->internalHandler_);
56 std::string name, std::string signature)
57 : d_ptr(std::make_unique<ObjectVTableSignalPrivate>(vtable, std::move(name),
58 std::move(signature))) {
59 vtable->addSignal(
this);
62 ObjectVTableSignal::~ObjectVTableSignal() {}
64 Message ObjectVTableSignal::createSignal() {
66 return d->vtable_->bus()->createSignal(d->vtable_->path().c_str(),
67 d->vtable_->interface().c_str(),
77 std::string signature,
78 PropertyGetMethod getMethod,
80 : d_ptr(std::make_unique<ObjectVTablePropertyPrivate>(
81 std::move(name), std::move(signature), std::move(getMethod),
83 vtable->addProperty(
this);
86 ObjectVTableProperty::ObjectVTableProperty(
87 std::unique_ptr<ObjectVTablePropertyPrivate> d)
88 : d_ptr(std::move(d)) {}
90 ObjectVTableProperty::~ObjectVTableProperty() {}
102 ObjectVTableWritableProperty::ObjectVTableWritableProperty(
104 PropertyGetMethod getMethod, PropertySetMethod setMethod,
107 std::make_unique<ObjectVTableWritablePropertyPrivate>(
108 std::move(name), std::move(signature), std::move(getMethod),
109 std::move(setMethod), options)) {
110 vtable->addProperty(
this);
114 PropertySetMethod, setMethod);
Basic DBus type of a DBus message.
Register a DBus read-only property to current DBus VTable.
void setClosureFunction(ObjectMethodClosure closure)
Set a closure function to call the handler with in it.
Register a DBus property to current DBus VTable.
High level API for dbus objects.
Class provides bit flag support for Enum.
Register a DBus signal to current DBus VTable.