11 #include "../macros.h" 13 #include "objectvtable_p.h" 17 MethodCallNoReply::MethodCallNoReply() =
default;
19 ObjectVTableMethod::ObjectVTableMethod(ObjectVTableBase *vtable,
20 const std::string &name,
21 const std::string &signature,
22 const std::string &ret,
24 : d_ptr(
std::make_unique<ObjectVTableMethodPrivate>(
25 vtable, name, signature, ret,
std::move(handler))) {
26 vtable->addMethod(
this);
29 ObjectVTableMethod::~ObjectVTableMethod() {}
31 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, name);
32 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string,
34 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, ret);
35 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, ObjectVTableBase *,
38 const ObjectMethod &ObjectVTableMethod::handler()
const {
40 if (d->closureHandler_) {
41 return d->closureHandler_;
43 return d->internalHandler_;
52 d->closureHandler_ = [d, closure = std::move(closure)](
Message message) {
53 return closure(std::move(message), d->internalHandler_);
58 std::string name, std::string signature)
59 : d_ptr(std::make_unique<ObjectVTableSignalPrivate>(vtable, std::move(name),
60 std::move(signature))) {
61 vtable->addSignal(
this);
64 ObjectVTableSignal::~ObjectVTableSignal() {}
66 Message ObjectVTableSignal::createSignal() {
68 return d->vtable_->bus()->createSignal(d->vtable_->path().c_str(),
69 d->vtable_->interface().c_str(),
79 std::string signature,
80 PropertyGetMethod getMethod,
82 : d_ptr(std::make_unique<ObjectVTablePropertyPrivate>(
83 std::move(name), std::move(signature), std::move(getMethod),
85 vtable->addProperty(
this);
88 ObjectVTableProperty::ObjectVTableProperty(
89 std::unique_ptr<ObjectVTablePropertyPrivate> d)
90 : d_ptr(std::move(d)) {}
92 ObjectVTableProperty::~ObjectVTableProperty() {}
104 ObjectVTableWritableProperty::ObjectVTableWritableProperty(
106 PropertyGetMethod getMethod, PropertySetMethod setMethod,
109 std::make_unique<ObjectVTableWritablePropertyPrivate>(
110 std::move(name), std::move(signature), std::move(getMethod),
111 std::move(setMethod), options)) {
112 vtable->addProperty(
this);
116 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.