11#include <dbus-cxx/dbus-cxx-config.h>
22#ifndef DBUSCXX_SIGNATURE_H
23#define DBUSCXX_SIGNATURE_H
25#define DBUSCXX_TYPE_INVALID_AS_STRING "\0"
26#define DBUSCXX_TYPE_BYTE_AS_STRING "y"
27#define DBUSCXX_TYPE_BOOLEAN_AS_STRING "b"
28#define DBUSCXX_TYPE_INT16_AS_STRING "n"
29#define DBUSCXX_TYPE_UINT16_AS_STRING "q"
30#define DBUSCXX_TYPE_INT32_AS_STRING "i"
31#define DBUSCXX_TYPE_UINT32_AS_STRING "u"
32#define DBUSCXX_TYPE_INT64_AS_STRING "x"
33#define DBUSCXX_TYPE_UINT64_AS_STRING "t"
34#define DBUSCXX_TYPE_DOUBLE_AS_STRING "d"
35#define DBUSCXX_TYPE_STRING_AS_STRING "s"
36#define DBUSCXX_TYPE_SIGNATURE_AS_STRING "g"
37#define DBUSCXX_TYPE_OBJECT_PATH_AS_STRING "o"
38#define DBUSCXX_TYPE_VARIANT_AS_STRING "v"
39#define DBUSCXX_TYPE_UNIX_FD_AS_STRING "h"
40#define DBUSCXX_TYPE_ARRAY_AS_STRING "a"
41#define DBUSCXX_DICT_ENTRY_BEGIN_CHAR_AS_STRING "{"
42#define DBUSCXX_DICT_ENTRY_END_CHAR_AS_STRING "}"
43#define DBUSCXX_STRUCT_BEGIN_CHAR_AS_STRING "("
44#define DBUSCXX_STRUCT_END_CHAR_AS_STRING ")"
103 operator const std::string& ()
const;
105 const std::string&
str()
const;
132 void print_tree( std::ostream* stream )
const;
140 std::string::const_iterator& itr,
141 std::stack<ContainerType>* container_stack,
145 std::ostream* stream,
156template <
typename... T>
173template<
typename... T>
179template <
typename Key,
typename Data>
inline std::string
signature(
const std::map<Key, Data>& ) {
193template <
typename Key,
typename Data>
inline std::string
signature_dict_data(
const std::map<Key, Data>& ) {
202template<
typename... T_arg>
209template<
typename... argn>
219template<
typename arg1,
typename... argn>
230template<
typename... T_arg>
231inline std::string
signature(
const std::tuple<T_arg...>& ) {
239template<
typename... T_arg>
243 return sig.dbus_sig();
248 sout <<
"DBus::Signature[" << sig.
str() <<
"]";
A FileDescriptor holds a UNIX file descriptor that can be passed between processes.
Definition: filedescriptor.h:21
Definition: multiplereturn.h:29
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
SignatureIterator iterator
Definition: signature.h:80
void print_tree(std::ostream *stream) const
Print the signature tree to the given ostream.
Definition: signature.cpp:260
const std::string & str() const
Definition: signature.cpp:71
iterator end()
Definition: signature.cpp:97
std::shared_ptr< priv_data > m_priv
Definition: signature.h:153
bool is_singleton() const
True if the signature is a valid DBus signature and contains exactly one complete type.
Definition: signature.cpp:109
void print_node(std::ostream *stream, priv::SignatureNode *node, int spaces) const
Definition: signature.cpp:275
~Signature()
Definition: signature.cpp:64
void initialize()
Definition: signature.cpp:288
const SignatureIterator const_iterator
Definition: signature.h:82
SignatureNodePointer create_signature_tree(std::string::const_iterator &itr, std::stack< ContainerType > *container_stack, bool &ok)
Definition: signature.cpp:116
bool is_valid() const
True if the signature is a valid DBus signature.
Definition: signature.cpp:105
Signature & operator=(const std::string &s)
Definition: signature.cpp:75
bool operator==(const std::string &s) const
Definition: signature.h:111
Signature()
Definition: signature.cpp:36
std::string::size_type size_type
Definition: signature.h:84
priv::SignatureNode::SignatureNodePointer SignatureNodePointer
Definition: signature.h:137
iterator begin()
Definition: signature.cpp:85
static const size_type npos
Definition: signature.h:86
A Variant is a type-safe union for DBus operations.
Definition: variant.h:42
Represents a single entry in our graph of the signature.
Definition: signature.h:52
std::shared_ptr< SignatureNode > SignatureNodePointer
Definition: signature.h:54
DataType m_dataType
Definition: signature.h:61
SignatureNode(DataType data_type)
Definition: signature.h:56
SignatureNodePointer m_next
Definition: signature.h:62
SignatureNodePointer m_sub
Definition: signature.h:63
std::string dbus_sig() const
Definition: signature.h:222
std::string dbus_sig() const
Definition: signature.h:214
Definition: signature.h:210
Global DBus namespace, where everything happens.
Definition: callmessage.cpp:18
std::string signature_multiple_return_data(const DBus::MultipleReturn< T_arg... > &)
Definition: signature.h:240
std::string signature_dict_data(const std::map< Key, Data > &)
Definition: signature.h:193
std::shared_ptr< DBus::Connection > operator<<(std::shared_ptr< DBus::Connection > ptr, std::shared_ptr< DBus::Message > msg)
Definition: connection.h:449
const Signature::size_type npos
Definition: signature.cpp:22
DataType
Definition: enums.h:52
std::string signature(const std::tuple< T... > &)
#define DBUSCXX_TYPE_DOUBLE_AS_STRING
Definition: signature.h:34
#define DBUSCXX_STRUCT_END_CHAR_AS_STRING
Definition: signature.h:44
#define DBUSCXX_STRUCT_BEGIN_CHAR_AS_STRING
Definition: signature.h:43
#define DBUSCXX_TYPE_INVALID_AS_STRING
Definition: signature.h:25
#define DBUSCXX_TYPE_INT16_AS_STRING
Definition: signature.h:28
#define DBUSCXX_TYPE_BYTE_AS_STRING
Definition: signature.h:26
#define DBUSCXX_TYPE_INT32_AS_STRING
Definition: signature.h:30
#define DBUSCXX_TYPE_ARRAY_AS_STRING
Definition: signature.h:40
#define DBUSCXX_TYPE_SIGNATURE_AS_STRING
Definition: signature.h:36
#define DBUSCXX_TYPE_VARIANT_AS_STRING
Definition: signature.h:38
#define DBUSCXX_TYPE_BOOLEAN_AS_STRING
Definition: signature.h:27
#define DBUSCXX_TYPE_STRING_AS_STRING
Definition: signature.h:35
#define DBUSCXX_DICT_ENTRY_END_CHAR_AS_STRING
Definition: signature.h:42
#define DBUSCXX_TYPE_UINT64_AS_STRING
Definition: signature.h:33
#define DBUSCXX_TYPE_UINT16_AS_STRING
Definition: signature.h:29
#define DBUSCXX_TYPE_OBJECT_PATH_AS_STRING
Definition: signature.h:37
#define DBUSCXX_DICT_ENTRY_BEGIN_CHAR_AS_STRING
Definition: signature.h:41
#define DBUSCXX_TYPE_UNIX_FD_AS_STRING
Definition: signature.h:39
#define DBUSCXX_TYPE_INT64_AS_STRING
Definition: signature.h:32
#define DBUSCXX_TYPE_UINT32_AS_STRING
Definition: signature.h:31