summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-marshal-recursive.h
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2004-12-28 04:55:52 +0000
committerHavoc Pennington <hp@redhat.com>2004-12-28 04:55:52 +0000
commit7debfd9ff56c5c2208372142e494c3e4a2defb23 (patch)
tree669618fb629f9847e893ad4b253ea293a370c2f0 /dbus/dbus-marshal-recursive.h
parenta11bbc91a794052eeb0a88aa207b01c871677cf4 (diff)
sync busted marshaling work in progress
Diffstat (limited to 'dbus/dbus-marshal-recursive.h')
-rw-r--r--dbus/dbus-marshal-recursive.h78
1 files changed, 59 insertions, 19 deletions
diff --git a/dbus/dbus-marshal-recursive.h b/dbus/dbus-marshal-recursive.h
index ed70a827..57b55fcf 100644
--- a/dbus/dbus-marshal-recursive.h
+++ b/dbus/dbus-marshal-recursive.h
@@ -56,6 +56,26 @@ struct DBusTypeReader
int type_pos;
const DBusString *value_str;
int value_pos;
+
+ /* Hmm - it might be cleaner to do TypeReaderClass *vtable for container type */
+ int container_type;
+ union
+ {
+ struct {
+ int start_pos;
+ dbus_uint32_t len;
+ int element_type;
+ } array;
+
+ struct {
+ int len_pos;
+
+ } dict;
+
+ struct {
+ dbus_uint32_t finished : 1;
+ } strct;
+ } u;
};
typedef struct DBusTypeReader DBusTypeReader;
@@ -67,7 +87,23 @@ struct DBusTypeWriter
int type_pos;
DBusString *value_str;
int value_pos;
+
+ dbus_uint32_t inside_array : 1;
+
int container_type;
+ union
+ {
+ struct {
+ int start_pos; /* first element */
+ int len_pos;
+ char *element_type;
+ } array;
+
+ struct {
+ int len_pos;
+
+ } dict;
+ } u;
};
typedef struct DBusTypeWriter DBusTypeWriter;
@@ -79,7 +115,7 @@ void _dbus_type_reader_init (DBusTypeReader *reader,
const DBusString *value_str,
int value_pos);
int _dbus_type_reader_get_current_type (DBusTypeReader *reader);
-int _dbus_type_reader_get_array_type (DBusTypeReader *reader);
+int _dbus_type_reader_get_array_length (DBusTypeReader *reader);
void _dbus_type_reader_read_basic (DBusTypeReader *reader,
void *value);
dbus_bool_t _dbus_type_reader_read_array_of_basic (DBusTypeReader *reader,
@@ -90,23 +126,27 @@ void _dbus_type_reader_recurse (DBusTypeReader *reader,
DBusTypeReader *subreader);
dbus_bool_t _dbus_type_reader_next (DBusTypeReader *reader);
-void _dbus_type_writer_init (DBusTypeWriter *writer,
- int byte_order,
- DBusString *type_str,
- int type_pos,
- DBusString *value_str,
- int value_pos);
-dbus_bool_t _dbus_type_writer_write_basic (DBusTypeWriter *writer,
- int type,
- const void *value);
-dbus_bool_t _dbus_type_writer_write_array (DBusTypeWriter *writer,
- int type,
- const void *array,
- int array_len);
-dbus_bool_t _dbus_type_writer_recurse (DBusTypeWriter *writer,
- int container_type,
- DBusTypeWriter *sub);
-dbus_bool_t _dbus_type_writer_unrecurse (DBusTypeWriter *writer,
- DBusTypeWriter *sub);
+void _dbus_type_writer_init (DBusTypeWriter *writer,
+ int byte_order,
+ DBusString *type_str,
+ int type_pos,
+ DBusString *value_str,
+ int value_pos);
+dbus_bool_t _dbus_type_writer_write_basic (DBusTypeWriter *writer,
+ int type,
+ const void *value);
+dbus_bool_t _dbus_type_writer_write_array (DBusTypeWriter *writer,
+ int type,
+ const void *array,
+ int array_len);
+dbus_bool_t _dbus_type_writer_recurse (DBusTypeWriter *writer,
+ int container_type,
+ DBusTypeWriter *sub);
+dbus_bool_t _dbus_type_writer_recurse_array (DBusTypeWriter *writer,
+ const char *element_type,
+ DBusTypeWriter *sub);
+dbus_bool_t _dbus_type_writer_unrecurse (DBusTypeWriter *writer,
+ DBusTypeWriter *sub);
+
#endif /* DBUS_MARSHAL_RECURSIVE_H */