26#ifndef AI_IPC_IPCVARIANTLIST_H
27#define AI_IPC_IPCVARIANTLIST_H
29#include "IpcFileDescriptor.h"
40#pragma GCC diagnostic push
41#pragma GCC diagnostic ignored "-Wshadow"
42#pragma GCC diagnostic ignored "-Waddress"
44#pragma GCC diagnostic ignored "-Wnonnull-compare"
46#include <boost/variant.hpp>
47#pragma GCC diagnostic pop
63 bool operator==(
const DbusObjectPath& rhs)
const {
return objectPath == rhs.objectPath; }
66 explicit DbusObjectPath(
const std::string& obj) : objectPath(obj) { }
69 std::string objectPath;
80typedef boost::variant<uint8_t,
97typedef boost::variant<uint8_t,
108 std::vector< uint8_t >,
109 std::vector< uint16_t >,
110 std::vector< int32_t >,
111 std::vector< uint32_t >,
112 std::vector< uint64_t >,
113 std::vector< UnixFd >,
114 std::vector< DbusObjectPath >,
115 std::vector< std::string >,
116 std::map<std::string, DictDataType>
122typedef std::vector<Variant> VariantList;
149template<
typename... Ts>
150bool parseVariantList(
const AI_IPC::VariantList& returns, Ts *...args)
153 const size_t numArgs =
sizeof...(args);
154 if (returns.size() != numArgs)
162 AI_IPC::VariantList::const_iterator it = returns.begin();
167 int unused[]{(processVal(&result, it++, args), 1)...};
174void processVal(
bool *result,
const AI_IPC::VariantList::const_iterator & it, T * arg);
Definition IpcFileDescriptor.h:33
Light wrapper around a file descriptor so it can be used safely with dbus.
Structure to store dbus object path.
Definition IpcVariantList.h:62
Definition IpcVariantList.h:127