8#ifndef DBUSCXX_VARIANT_H
9#define DBUSCXX_VARIANT_H
14#include <dbus-cxx/dbus-cxx-config.h>
69 template<
typename Key,
typename Value>
70 Variant(
const std::map<Key, Value>& map ) :
79 template<
typename ...T>
96 const std::vector<uint8_t>*
marshaled()
const;
104 template <
typename T>
111 std::vector<T>
retval = vi;
116 template <
typename Key,
typename Value>
123 std::map<Key, Value>
retval = vi;
128 template <
typename ...T>
133 std::tuple<T...> tup;
164 operator std::string();
168 template <
typename T>
169 operator std::vector<T>() {
170 return to_vector<T>();
173 template <
typename Key,
typename Data>
174 operator std::map<Key, Data>() {
175 return to_map<Key, Data>();
178 template <
typename... T>
179 operator std::tuple<T...>() {
Implements the marshaling algorithms on a given vector of data.
Definition: marshaling.h:27
Extraction iterator allowing values to be retrieved from a message.
Definition: messageiterator.h:56
Represents a DBus Path.
Definition: path.h:21
A SignatureIterator allows you to iterate over a given DBus signature, and to extract useful informat...
Definition: signatureiterator.h:33
Represents a DBus signature.
Definition: signature.h:78
A Variant is a type-safe union for DBus operations.
Definition: variant.h:42
std::map< Key, Value > to_map()
Definition: variant.h:117
int data_alignment() const
Definition: variant.cpp:463
int16_t to_int16() const
Definition: variant.cpp:514
uint8_t to_uint8() const
Definition: variant.cpp:496
friend std::ostream & operator<<(std::ostream &os, const Variant &var)
Definition: variant.cpp:654
Variant(const std::map< Key, Value > &map)
Definition: variant.h:70
bool to_bool() const
Definition: variant.cpp:487
static Variant createFromVariant(Variant &other)
Wrap variant 'other' inside of a new variant.
Definition: variant.cpp:734
DBus::Signature to_signature() const
Definition: variant.cpp:586
std::vector< T > to_vector()
Definition: variant.h:105
Variant to_variant() const
Definition: variant.cpp:595
DataType m_currentType
Definition: variant.h:221
static Variant createFromDemarshal(Signature sig, std::shared_ptr< Demarshaling > demarshal, const std::vector< int > &filedescriptors, uint32_t depth)
Definition: variant.cpp:155
static Variant createFromMessage(MessageIterator iter)
Obsolete, do not call.
Definition: variant.cpp:320
int32_t to_int32() const
Definition: variant.cpp:532
std::tuple< T... > to_tuple()
Definition: variant.h:129
int m_dataAlignment
Definition: variant.h:224
double to_double() const
Definition: variant.cpp:559
std::vector< uint8_t > m_marshaled
Definition: variant.h:223
void recurseDictEntry(SignatureIterator iter, std::shared_ptr< Demarshaling > demarshal, Marshaling *marshal, uint32_t ending_offset, const std::vector< int > &filedescriptors, uint32_t depth)
Definition: variant.cpp:292
int64_t to_int64() const
Definition: variant.cpp:550
uint16_t to_uint16() const
Definition: variant.cpp:505
std::string to_string() const
Definition: variant.cpp:568
uint32_t to_uint32() const
Definition: variant.cpp:523
void recurseArray(SignatureIterator iter, std::shared_ptr< Demarshaling > demarshal, Marshaling *marshal, const std::vector< int > &filedescriptors, uint32_t depth)
Definition: variant.cpp:261
const std::vector< uint8_t > * marshaled() const
Definition: variant.cpp:459
void recurseStruct(SignatureIterator sigit, std::shared_ptr< Demarshaling > demarshal, Marshaling *marshal, const std::vector< int > &filedescriptors, uint32_t depth)
Definition: variant.cpp:330
Signature signature() const
Definition: variant.cpp:147
Variant(const std::tuple< T... > &tup)
Definition: variant.h:80
void remarshal(DataType dt, SignatureIterator sigit, std::shared_ptr< Demarshaling > demarshal, Marshaling *marshal, const std::vector< int > &filedescriptors, uint32_t depth)
Definition: variant.cpp:349
Variant(const std::vector< T > &vec)
Definition: variant.h:60
Variant & operator=(const Variant &other)
Definition: variant.cpp:478
DBus::Path to_path() const
Definition: variant.cpp:577
DataType type() const
Definition: variant.cpp:151
bool operator==(const Variant &other) const
Definition: variant.cpp:467
uint64_t to_uint64() const
Definition: variant.cpp:541
Signature m_signature
Definition: variant.h:222
Variant()
Definition: variant.cpp:28
~Variant()
Definition: variant.cpp:145
Used to append a single, complete value to a Variant.
Definition: variantappenditerator.h:28
Definition: variantiterator.h:24
static int retval
Definition: glib-caller.cpp:7
Global DBus namespace, where everything happens.
Definition: callmessage.cpp:18
DataType
Definition: enums.h:52