1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-marshal-gvariant.h Managing GVariant marshaling/demarshaling of messages
4 * Copyright (C) 2015 Samsung Electronics
6 * Licensed under the Academic Free License version 2.1
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 #ifndef DBUS_MARSHAL_GVARIANT_H
25 #define DBUS_MARSHAL_GVARIANT_H
27 #include <dbus/dbus-marshal-header.h>
28 #include <dbus/dbus-marshal-recursive.h>
29 #include <dbus/dbus-message.h>
30 #include <dbus/dbus-connection.h>
32 const DBusString *_dbus_get_gvariant_header_signature_str (void);
34 #define GVARIANT_LAST_OFFSET_NOT_SET ((size_t)-1)
36 dbus_bool_t _dbus_header_gvariant_create (DBusHeader *header,
39 const char *destination,
41 const char *interface,
43 const char *error_name);
45 dbus_bool_t _dbus_type_writer_write_gvariant_basic (DBusTypeWriter *writer,
49 dbus_bool_t _dbus_marshal_write_gvariant_basic (DBusString *str,
56 dbus_bool_t _dbus_header_set_field_basic_gvariant (DBusHeader *header,
61 dbus_bool_t _dbus_header_get_field_basic_gvariant (DBusHeader *header,
66 dbus_bool_t _dbus_header_gvariant_delete_field (DBusHeader *header,
69 void _dbus_marshal_read_gvariant_basic (const DBusString *str,
76 void _dbus_marshal_skip_gvariant_basic (const DBusString *str,
81 dbus_bool_t _dbus_header_load_gvariant (DBusHeader *header,
82 DBusValidity *validity);
84 dbus_bool_t _dbus_gvariant_raw_get_lengths (const DBusString *str,
85 dbus_uint32_t *fields_array_len_unsigned,
86 dbus_uint32_t *body_len_unsigned,
87 DBusValidity *validity);
89 DBusValidity _dbus_validate_gvariant_body_with_reason (const DBusString *expected_signature,
90 int expected_signature_start,
93 const DBusString *value_str,
97 dbus_bool_t _dbus_message_gvariant_get_signature (DBusMessage *message,
98 const DBusString **type_str_p,
102 dbus_bool_t _dbus_message_gvariant_add_signature (DBusMessage *message,
103 const DBusString *type_str);
105 dbus_bool_t _dbus_message_append_body_offset (DBusMessage *message);
106 dbus_bool_t _dbus_message_gvariant_remove_body_offset (DBusMessage *message);
108 dbus_bool_t _dbus_message_finalize_gvariant (DBusMessage *message,
109 dbus_bool_t remove_signature_from_header);
111 size_t _dbus_reader_get_offset_of_end_of_variable (DBusTypeReader *reader);
112 int _dbus_reader_get_type_fixed_size (DBusTypeReader *reader,
115 int _dbus_type_gvariant_get_fixed_size (const DBusString *type_str,
119 int _dbus_reader_count_offsets (const DBusTypeReader *reader);
121 int _dbus_reader_count_array_elems (const DBusTypeReader *reader);
123 dbus_bool_t _dbus_type_writer_gvariant_write_basic_no_typecode (DBusTypeWriter *writer,
127 dbus_bool_t _dbus_writer_unrecurse_gvariant_write (DBusTypeWriter *writer,
128 DBusTypeWriter *sub);
130 void _dbus_type_reader_gvariant_init (DBusTypeReader *reader,
131 DBusMessage *message);
133 dbus_bool_t _dbus_message_gvariant_convert_to_unlocked (DBusMessage *message);
135 #endif /* DBUS_MARSHAL_GVARIANT_H */