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