1// Copyright (c) Benjamin Kietzman (github.com/bkietz)
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef DBUS_IMPL_MESSAGE_ITERATOR_IPP
7#define DBUS_IMPL_MESSAGE_ITERATOR_IPP
8
9#include <dbus/impl/message_iterator.hpp>
10
11namespace dbus {
12namespace impl {
13
14void message_iterator::init_append(message& m, message_iterator& i)
15{
16  dbus_message_iter_init_append(m, &i.DBusMessageIter_);
17}
18
19void message_iterator::append_basic(int code, const void *value)
20{
21  // returns false if not enough memory- throw bad_alloc
22  dbus_message_iter_append_basic(&DBusMessageIter_, code, value);
23}
24
25void message_iterator::open_container(int code, const char *signature, message_iterator& sub)
26{
27  // returns false if not enough memory- throw bad_alloc
28  dbus_message_iter_open_container(&DBusMessageIter_, code, signature, &sub.DBusMessageIter_);
29}
30
31void message_iterator::close_container(message_iterator& sub)
32{
33  // returns false if not enough memory- throw bad_alloc
34  dbus_message_iter_close_container(&DBusMessageIter_, &sub.DBusMessageIter_);
35}
36
37void message_iterator::abandon_container(message_iterator& sub)
38{
39  dbus_message_iter_abandon_container(&DBusMessageIter_, &sub.DBusMessageIter_);
40}
41
42void message_iterator::append_fixed_array(int code, const void *value, int n_elements)
43{
44  // returns false if not enough memory- throw bad_alloc
45  dbus_message_iter_append_fixed_array(&DBusMessageIter_, code, value, n_elements);
46}
47
48bool message_iterator::init(message& m, message_iterator& i)
49{
50  return dbus_message_iter_init(m, &i.DBusMessageIter_);
51}
52
53bool message_iterator::next()
54{
55  return dbus_message_iter_next(&DBusMessageIter_);
56}
57
58bool message_iterator::has_next()
59{
60  return dbus_message_iter_has_next(&DBusMessageIter_);
61}
62
63int message_iterator::get_arg_type()
64{
65  return dbus_message_iter_get_arg_type(&DBusMessageIter_);
66}
67
68void message_iterator::get_basic(void *value)
69{
70  dbus_message_iter_get_basic(&DBusMessageIter_, value);
71}
72
73void message_iterator::recurse(message_iterator& sub)
74{
75  dbus_message_iter_recurse(&DBusMessageIter_, &sub.DBusMessageIter_);
76}
77
78int message_iterator::get_element_type()
79{
80  return dbus_message_iter_get_element_type(&DBusMessageIter_);
81}
82
83void message_iterator::get_fixed_array(void *value, int *n_elements)
84{
85  dbus_message_iter_get_fixed_array(&DBusMessageIter_, value, n_elements);
86}
87
88} // namespace impl
89} // namespace dbus
90
91#endif // DBUS_IMPL_MESSAGE_ITERATOR_IPP
92