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