GVariant: fix dbus_message_copy()
[platform/upstream/dbus.git] / dbus / dbus-marshal-gvariant.h
1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-marshal-gvariant.h  Managing GVariant marshaling/demarshaling of messages
3  *
4  * Copyright (C) 2015  Samsung Electronics
5  *
6  * Licensed under the Academic Free License version 2.1
7  *
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.
12  *
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.
17  *
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
21  *
22  */
23
24 #ifndef DBUS_MARSHAL_GVARIANT_H
25 #define DBUS_MARSHAL_GVARIANT_H
26
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>
31
32 const DBusString *_dbus_get_gvariant_header_signature_str (void);
33
34 #define GVARIANT_LAST_OFFSET_NOT_SET ((size_t)-1)
35
36 dbus_bool_t   _dbus_header_gvariant_create           (DBusHeader     *header,
37                                                       int             byte_order,
38                                                       int             type,
39                                                       const char     *destination,
40                                                       const char     *path,
41                                                       const char     *interface,
42                                                       const char     *member,
43                                                       const char     *error_name);
44
45 dbus_bool_t   _dbus_type_writer_write_gvariant_basic (DBusTypeWriter *writer,
46                                                       int             type,
47                                                       const void     *value);
48
49 dbus_bool_t   _dbus_marshal_write_gvariant_basic     (DBusString     *str,
50                                                       int             insert_at,
51                                                       int             type,
52                                                       const void     *value,
53                                                       int             byte_order,
54                                                       int            *pos_after);
55
56 dbus_bool_t   _dbus_header_set_field_basic_gvariant  (DBusHeader     *header,
57                                                       int             field,
58                                                       int             type,
59                                                       const void     *value);
60
61 dbus_bool_t   _dbus_header_get_field_basic_gvariant  (DBusHeader     *header,
62                                                       int             field,
63                                                       int             type,
64                                                       void           *value);
65
66 dbus_bool_t   _dbus_header_gvariant_delete_field     (DBusHeader *header,
67                                                       int field);
68
69 void          _dbus_marshal_read_gvariant_basic      (const DBusString *str,
70                                                       int               pos,
71                                                       int               type,
72                                                       void             *value,
73                                                       int               byte_order,
74                                                       int              *new_pos);
75
76 void          _dbus_marshal_skip_gvariant_basic      (const DBusString *str,
77                                                       int               type,
78                                                       int               byte_order,
79                                                       int              *pos);
80
81 dbus_bool_t   _dbus_header_load_gvariant             (DBusHeader     *header,
82                                                       DBusValidity   *validity);
83
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);
88
89 DBusValidity  _dbus_validate_gvariant_body_with_reason (const DBusString *expected_signature,
90                                                         int               expected_signature_start,
91                                                         int               byte_order,
92                                                         int              *bytes_remaining,
93                                                         const DBusString *value_str,
94                                                         int               value_pos,
95                                                         int               len);
96
97 dbus_bool_t  _dbus_message_gvariant_get_signature    (DBusMessage       *message,
98                                                       const DBusString **type_str_p,
99                                                       int               *type_pos_p,
100                                                       int               *type_str_len);
101
102 dbus_bool_t  _dbus_message_gvariant_add_signature    (DBusMessage       *message,
103                                                        const DBusString  *type_str);
104
105 dbus_bool_t  _dbus_message_append_body_offset                   (DBusMessage *message);
106 dbus_bool_t  _dbus_message_gvariant_remove_body_offset          (DBusMessage       *message);
107
108 dbus_bool_t  _dbus_message_finalize_gvariant                    (DBusMessage *message,
109                                                                  dbus_bool_t  remove_signature_from_header);
110
111 size_t       _dbus_reader_get_offset_of_end_of_variable         (DBusTypeReader *reader);
112 int          _dbus_reader_get_type_fixed_size                   (DBusTypeReader *reader,
113                                                                  int            *alignment);
114
115 int          _dbus_type_gvariant_get_fixed_size                 (const DBusString *type_str,
116                                                                  int         type_pos,
117                                                                  int        *alignment);
118
119 int          _dbus_reader_count_offsets                         (const DBusTypeReader *reader);
120
121 int          _dbus_reader_count_array_elems                     (const DBusTypeReader *reader);
122
123 dbus_bool_t  _dbus_type_writer_gvariant_write_basic_no_typecode (DBusTypeWriter *writer,
124                                                                  int             type,
125                                                                  const void     *value);
126
127 dbus_bool_t  _dbus_writer_unrecurse_gvariant_write              (DBusTypeWriter *writer,
128                                                                  DBusTypeWriter *sub);
129
130 void         _dbus_type_reader_gvariant_init                    (DBusTypeReader        *reader,
131                                                                  DBusMessage           *message);
132
133 dbus_bool_t  _dbus_message_gvariant_convert_to_unlocked         (DBusMessage *message);
134
135 #endif /* DBUS_MARSHAL_GVARIANT_H */