sdbus-c++ 2.1.0
High-level C++ D-Bus library based on systemd D-Bus implementation
|
#include <sdbus-c++/Message.h>
#include <sdbus-c++/TypeTraits.h>
#include <cstring>
#include <cstddef>
#include <memory>
#include <string>
#include <tuple>
#include <type_traits>
#include <typeinfo>
#include <utility>
Go to the source code of this file.
Classes | |
class | sdbus::Variant |
class | sdbus::Struct< _ValueTypes > |
class | sdbus::ObjectPath |
class | sdbus::BusName |
class | sdbus::InterfaceName |
class | sdbus::MemberName |
class | sdbus::Signature |
struct | sdbus::UnixFd |
struct | std::tuple_element< _I, sdbus::Struct< _ValueTypes... > > |
struct | std::tuple_size< sdbus::Struct< _ValueTypes... > > |
Macros | |
SDBUSCPP_REGISTER_STRUCT | |
A convenient way to extend sdbus-c++ type system with user-defined structs. The macro teaches sdbus-c++ to recognize the user-defined struct as a valid C++ representation of a D-Bus Struct type, and enables clients to use their struct conveniently instead of the (too generic and less expressive) sdbus::Struct<...> in sdbus-c++ API. It also enables to serialize a user-defined struct as an a{sv} dictionary, and to deserialize an a{sv} dictionary into the user-defined struct. The first argument is the struct type name and the remaining arguments are names of struct members. Members must be of types supported by sdbus-c++ (or of user-defined types that sdbus-c++ was taught to support). Members can be other structs (nesting is supported). The macro must be placed in the global namespace. For example, given the user-defined struct ABC: namespace foo { struct ABC { int number; std::string name; std::vector<double> data; }; } one can teach sdbus-c++ about the contents of this struct simply with: SDBUSCPP_REGISTER_STRUCT(foo::ABC, number, name, data); Up to 16 struct members are supported by the macro. | |
#define | SDBUSCPP_REGISTER_STRUCT(STRUCT, ...) |
SDBUSCPP_ENABLE_RELAXED_DICT2STRUCT_DESERIALIZATION | |
Enables relaxed deserialization of an a{sv} dictionary into a user-defined struct STRUCT. The default (strict) deserialization mode is that if there are entries in the dictionary which do not have a corresponding field in the struct, an exception is thrown. In the relaxed mode, such entries are silently skipped. The macro can only be used in combination with SDBUSCPP_REGISTER_STRUCT macro, and must be placed before SDBUSCPP_REGISTER_STRUCT macro. | |
#define | SDBUSCPP_ENABLE_RELAXED_DICT2STRUCT_DESERIALIZATION(STRUCT) |
SDBUSCPP_ENABLE_NESTED_STRUCT2DICT_SERIALIZATION | |
Enables nested serialization of user-defined struct STRUCT as an a{sv} dictionary. By default, STRUCT fields which are structs themselves are serialized as D-Bus structs. This macro tells sdbus-c++ to also serialize nested structs, in a recursive fashion, as a{sv} dictionaries. The macro can only be used in combination with SDBUSCPP_REGISTER_STRUCT macro, and must be placed before SDBUSCPP_REGISTER_STRUCT macro. | |
#define | SDBUSCPP_ENABLE_NESTED_STRUCT2DICT_SERIALIZATION(STRUCT) |
Typedefs | |
using | sdbus::ConnectionName = BusName |
using | sdbus::MethodName = MemberName |
using | sdbus::SignalName = MemberName |
using | sdbus::PropertyName = MemberName |
template<typename _T1, typename _T2> | |
using | sdbus::DictEntry = std::pair<_T1, _T2> |
Functions | |
template<typename... _Elements> | |
sdbus::Struct (_Elements...) -> Struct< _Elements... > | |
template<typename... _Elements> | |
constexpr Struct< std::decay_t< _Elements >... > | sdbus::make_struct (_Elements &&... args) |
(C) 2016 - 2021 KISTLER INSTRUMENTE AG, Winterthur, Switzerland (C) 2016 - 2024 Stanislav Angelovic stani.nosp@m.slav.nosp@m..ange.nosp@m.lovi.nosp@m.c@pro.nosp@m.tonm.nosp@m.ail.c.nosp@m.om
Created on: Nov 23, 2016 Project: sdbus-c++ Description: High-level D-Bus IPC C++ library based on sd-bus
This file is part of sdbus-c++.
sdbus-c++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.
sdbus-c++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with sdbus-c++. If not, see http://www.gnu.org/licenses/.
#define SDBUSCPP_ENABLE_NESTED_STRUCT2DICT_SERIALIZATION | ( | STRUCT | ) |
#define SDBUSCPP_ENABLE_RELAXED_DICT2STRUCT_DESERIALIZATION | ( | STRUCT | ) |
using sdbus::DictEntry = std::pair<_T1, _T2> |
DictEntry is implemented as std::pair, a standard value_type in STL(-like) associative containers.