11 #include "../macros.h" 13 #include "objectvtable_p.h" 17 MethodCallNoReply::MethodCallNoReply() =
default;
19 MethodReturnTypeMismatch::MethodReturnTypeMismatch() =
default;
21 const char *MethodReturnTypeMismatch::what() const noexcept {
22 return "MethodReturnTypeMismatch";
25 ObjectVTableMethod::ObjectVTableMethod(ObjectVTableBase *vtable,
26 const std::string &name,
27 const std::string &signature,
28 const std::string &ret,
30 : d_ptr(
std::make_unique<ObjectVTableMethodPrivate>(
31 vtable, name, signature, ret,
std::move(handler))) {
32 vtable->addMethod(
this);
35 ObjectVTableMethod::~ObjectVTableMethod() {}
37 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, name);
38 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string,
40 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, std::string, ret);
41 FCITX_DEFINE_READ_ONLY_PROPERTY_PRIVATE(ObjectVTableMethod, ObjectVTableBase *,
44 const ObjectMethod &ObjectVTableMethod::handler()
const {
46 if (d->closureHandler_) {
47 return d->closureHandler_;
49 return d->internalHandler_;
58 d->closureHandler_ = [d, closure = std::move(closure)](
Message message) {
59 return closure(std::move(message), d->internalHandler_);
64 std::string name, std::string signature)
65 : d_ptr(std::make_unique<ObjectVTableSignalPrivate>(vtable, std::move(name),
66 std::move(signature))) {
67 vtable->addSignal(
this);
70 ObjectVTableSignal::~ObjectVTableSignal() {}
72 Message ObjectVTableSignal::createSignal() {
74 return d->vtable_->bus()->createSignal(d->vtable_->path().c_str(),
75 d->vtable_->interface().c_str(),
85 std::string signature,
86 PropertyGetMethod getMethod,
88 : d_ptr(std::make_unique<ObjectVTablePropertyPrivate>(
89 std::move(name), std::move(signature), std::move(getMethod),
91 vtable->addProperty(
this);
94 ObjectVTableProperty::ObjectVTableProperty(
95 std::unique_ptr<ObjectVTablePropertyPrivate> d)
96 : d_ptr(std::move(d)) {}
98 ObjectVTableProperty::~ObjectVTableProperty() {}
110 ObjectVTableWritableProperty::ObjectVTableWritableProperty(
112 PropertyGetMethod getMethod, PropertySetMethod setMethod,
115 std::make_unique<ObjectVTableWritablePropertyPrivate>(
116 std::move(name), std::move(signature), std::move(getMethod),
117 std::move(setMethod), options)) {
118 vtable->addProperty(
this);
122 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.