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