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
14*da3eeb6aSEd 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*da3eeb6aSEd Tanousinline void message_iterator::append_basic(int code, const void *value)
19d977442cSBenjamin Kietzman{
20d977442cSBenjamin Kietzman  // returns false if not enough memory- throw bad_alloc
21d977442cSBenjamin Kietzman  dbus_message_iter_append_basic(&DBusMessageIter_, code, value);
22d977442cSBenjamin Kietzman}
23*da3eeb6aSEd Tanousinline void 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
26d977442cSBenjamin Kietzman  dbus_message_iter_open_container(&DBusMessageIter_, code, signature, &sub.DBusMessageIter_);
27d977442cSBenjamin Kietzman}
28d977442cSBenjamin Kietzman
29*da3eeb6aSEd Tanousinline void message_iterator::close_container(message_iterator& sub)
30d977442cSBenjamin Kietzman{
31d977442cSBenjamin Kietzman  // returns false if not enough memory- throw bad_alloc
32d977442cSBenjamin Kietzman  dbus_message_iter_close_container(&DBusMessageIter_, &sub.DBusMessageIter_);
33d977442cSBenjamin Kietzman}
34d977442cSBenjamin Kietzman
35*da3eeb6aSEd 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*da3eeb6aSEd Tanousinline void 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
43d977442cSBenjamin Kietzman  dbus_message_iter_append_fixed_array(&DBusMessageIter_, code, value, n_elements);
44d977442cSBenjamin Kietzman}
45d977442cSBenjamin Kietzman
46*da3eeb6aSEd 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
51*da3eeb6aSEd Tanousinline bool message_iterator::next()
52d977442cSBenjamin Kietzman{
53d977442cSBenjamin Kietzman  return dbus_message_iter_next(&DBusMessageIter_);
54d977442cSBenjamin Kietzman}
55d977442cSBenjamin Kietzman
56*da3eeb6aSEd Tanousinline bool message_iterator::has_next()
57d977442cSBenjamin Kietzman{
58d977442cSBenjamin Kietzman  return dbus_message_iter_has_next(&DBusMessageIter_);
59d977442cSBenjamin Kietzman}
60d977442cSBenjamin Kietzman
61*da3eeb6aSEd Tanousinline int message_iterator::get_arg_type()
62d977442cSBenjamin Kietzman{
63d977442cSBenjamin Kietzman  return dbus_message_iter_get_arg_type(&DBusMessageIter_);
64d977442cSBenjamin Kietzman}
65d977442cSBenjamin Kietzman
66*da3eeb6aSEd Tanousinline void message_iterator::get_basic(void *value)
67d977442cSBenjamin Kietzman{
68d977442cSBenjamin Kietzman  dbus_message_iter_get_basic(&DBusMessageIter_, value);
69d977442cSBenjamin Kietzman}
70d977442cSBenjamin Kietzman
71*da3eeb6aSEd Tanousinline void message_iterator::recurse(message_iterator& sub)
72d977442cSBenjamin Kietzman{
73d977442cSBenjamin Kietzman  dbus_message_iter_recurse(&DBusMessageIter_, &sub.DBusMessageIter_);
74d977442cSBenjamin Kietzman}
75d977442cSBenjamin Kietzman
76*da3eeb6aSEd Tanousinline int message_iterator::get_element_type()
77d977442cSBenjamin Kietzman{
78d977442cSBenjamin Kietzman  return dbus_message_iter_get_element_type(&DBusMessageIter_);
79d977442cSBenjamin Kietzman}
80d977442cSBenjamin Kietzman
81*da3eeb6aSEd Tanousinline void message_iterator::get_fixed_array(void *value, int *n_elements)
82d977442cSBenjamin Kietzman{
83d977442cSBenjamin Kietzman  dbus_message_iter_get_fixed_array(&DBusMessageIter_, value, n_elements);
84d977442cSBenjamin Kietzman}
85d977442cSBenjamin Kietzman
86d977442cSBenjamin Kietzman} // namespace impl
87d977442cSBenjamin Kietzman} // namespace dbus
88d977442cSBenjamin Kietzman
89d977442cSBenjamin Kietzman#endif // DBUS_IMPL_MESSAGE_ITERATOR_IPP
90