summaryrefslogtreecommitdiff
path: root/xd_edsio.c
diff options
context:
space:
mode:
Diffstat (limited to 'xd_edsio.c')
-rwxr-xr-xxd_edsio.c1549
1 files changed, 1549 insertions, 0 deletions
diff --git a/xd_edsio.c b/xd_edsio.c
new file mode 100755
index 0000000..c7e3f91
--- /dev/null
+++ b/xd_edsio.c
@@ -0,0 +1,1549 @@
+/* -*-Mode: C;-*-
+ * Copyright (C) 1997, 1998, 1999 Josh MacDonald
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Josh MacDonald <jmacd@CS.Berkeley.EDU>
+ *
+ * This file was AUTOMATICALLY GENERATED using:
+ *
+ * $Id: edsio.el 1.2 Sun, 28 Jan 2007 12:21:11 -0800 jmacd $
+ */
+
+#include "xdelta.h"
+
+#include <errno.h>
+
+/* Declarations. */
+
+static const char* Xd_String_event_field_to_string (GenericEvent* ev, gint field);
+static const char* Xd_HandleIntInt_event_field_to_string (GenericEvent* ev, gint field);
+static const char* Xd_HandleStringString_event_field_to_string (GenericEvent* ev, gint field);
+static const char* Xd_Int_event_field_to_string (GenericEvent* ev, gint field);
+static void print_spaces (guint n) { int i; for (i = 0; i < n; i += 1) g_print (" "); }
+
+
+/* initialize this library. */
+
+gboolean
+xd_edsio_init (void)
+{
+ static gboolean once = FALSE;
+ static gboolean result = FALSE;
+ if (once) return result;
+ once = TRUE;
+ eventdelivery_initialize_event_def (EC_XdBackwardCompatibilityModeValue, EL_Information, EF_None, "BackwardCompatibilityMode", "Reading a version ${0} delta control", & Xd_String_event_field_to_string);
+ eventdelivery_initialize_event_def (EC_XdStreamLengthFailedValue, EL_Error, EF_None, "StreamLengthFailed", "${0}: Length validation failed, expected: ${1}, received: ${2}", & Xd_HandleIntInt_event_field_to_string);
+ eventdelivery_initialize_event_def (EC_XdStreamChecksumFailedValue, EL_Error, EF_None, "StreamChecksumFailed", "${0}: Checksum validation failed, expected: ${1}, received: ${2}", & Xd_HandleStringString_event_field_to_string);
+ eventdelivery_initialize_event_def (EC_XdIncompatibleDeltaValue, EL_Error, EF_None, "IncompatibleDelta", "The delta was not produced according by the `xdelta delta' command", NULL);
+ eventdelivery_initialize_event_def (EC_XdInvalidRsyncCacheValue, EL_Error, EF_None, "InvalidRsyncCache", "The rsync checksum cache is corrupt", NULL);
+ eventdelivery_initialize_event_def (EC_XdInvalidControlValue, EL_Error, EF_None, "InvalidControl", "Delta control is corrupt", NULL);
+ eventdelivery_initialize_event_def (EC_XdOutOfRangeSourceIndexValue, EL_Error, EF_None, "OutOfRangeSourceIndex", "Instruction references out-of-range source index: ${0}", & Xd_Int_event_field_to_string);
+ eventdelivery_initialize_event_def (EC_XdTooManySourcesValue, EL_Error, EF_None, "TooManySources", "Too many input sources", NULL);
+ eventdelivery_initialize_event_def (EC_XdTooFewSourcesValue, EL_Error, EF_None, "TooFewSources", "Too few input sources", NULL);
+ serializeio_initialize_type ("ST_Version0Instruction", ST_Version0Instruction, &unserialize_version0instruction_internal, &serialize_version0instruction_obj_internal, &serializeio_count_version0instruction_obj, &serializeio_print_version0instruction_obj);
+ serializeio_initialize_type ("ST_Version0Control", ST_Version0Control, &unserialize_version0control_internal, &serialize_version0control_obj_internal, &serializeio_count_version0control_obj, &serializeio_print_version0control_obj);
+ serializeio_initialize_type ("ST_Version0SourceInfo", ST_Version0SourceInfo, &unserialize_version0sourceinfo_internal, &serialize_version0sourceinfo_obj_internal, &serializeio_count_version0sourceinfo_obj, &serializeio_print_version0sourceinfo_obj);
+ serializeio_initialize_type ("ST_RsyncIndex", ST_RsyncIndex, &unserialize_rsyncindex_internal, &serialize_rsyncindex_obj_internal, &serializeio_count_rsyncindex_obj, &serializeio_print_rsyncindex_obj);
+ serializeio_initialize_type ("ST_RsyncIndexElt", ST_RsyncIndexElt, &unserialize_rsyncindexelt_internal, &serialize_rsyncindexelt_obj_internal, &serializeio_count_rsyncindexelt_obj, &serializeio_print_rsyncindexelt_obj);
+ serializeio_initialize_type ("ST_XdeltaInstruction", ST_XdeltaInstruction, &unserialize_xdeltainstruction_internal, &serialize_xdeltainstruction_obj_internal, &serializeio_count_xdeltainstruction_obj, &serializeio_print_xdeltainstruction_obj);
+ serializeio_initialize_type ("ST_XdeltaControl", ST_XdeltaControl, &unserialize_xdeltacontrol_internal, &serialize_xdeltacontrol_obj_internal, &serializeio_count_xdeltacontrol_obj, &serializeio_print_xdeltacontrol_obj);
+ serializeio_initialize_type ("ST_XdeltaSourceInfo", ST_XdeltaSourceInfo, &unserialize_xdeltasourceinfo_internal, &serialize_xdeltasourceinfo_obj_internal, &serializeio_count_xdeltasourceinfo_obj, &serializeio_print_xdeltasourceinfo_obj);
+ serializeio_initialize_type ("ST_XdeltaIndex", ST_XdeltaIndex, &unserialize_xdeltaindex_internal, &serialize_xdeltaindex_obj_internal, &serializeio_count_xdeltaindex_obj, &serializeio_print_xdeltaindex_obj);
+ serializeio_initialize_type ("ST_XdeltaChecksum", ST_XdeltaChecksum, &unserialize_xdeltachecksum_internal, &serialize_xdeltachecksum_obj_internal, &serializeio_count_xdeltachecksum_obj, &serializeio_print_xdeltachecksum_obj);
+ edsio_library_register (3, "xd");
+ result = TRUE;
+ return TRUE;
+};
+
+/* XdeltaChecksum Count
+ */
+
+guint
+serializeio_count_xdeltachecksum (guint16 high, guint16 low) {
+ guint size = sizeof (SerialXdeltaChecksum);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_xdeltachecksum_obj (SerialXdeltaChecksum const* obj) {
+ return serializeio_count_xdeltachecksum (obj->high, obj->low);
+}
+
+/* XdeltaChecksum Print
+ */
+
+void
+serializeio_print_xdeltachecksum_obj (SerialXdeltaChecksum* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_XdeltaChecksum]\n");
+ print_spaces (indent_spaces);
+ g_print ("high = ");
+ g_print ("%d\n", obj->high);
+ print_spaces (indent_spaces);
+ g_print ("low = ");
+ g_print ("%d\n", obj->low);
+}
+
+/* XdeltaChecksum Serialize
+ */
+
+gboolean
+serialize_xdeltachecksum_internal (SerialSink *sink, guint16 high, guint16 low)
+{
+ if (! (* sink->next_uint16) (sink, high)) goto bail;
+ if (! (* sink->next_uint16) (sink, low)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltachecksum_obj_internal (SerialSink *sink, SerialXdeltaChecksum* obj)
+{
+ return serialize_xdeltachecksum_internal (sink, obj->high, obj->low);
+}
+
+gboolean
+serialize_xdeltachecksum (SerialSink *sink, guint16 high, guint16 low)
+{
+ if (! (* sink->sink_type) (sink, ST_XdeltaChecksum, serializeio_count_xdeltachecksum (high, low), TRUE)) goto bail;
+ if (! serialize_xdeltachecksum_internal (sink, high, low)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltachecksum_obj (SerialSink *sink, const SerialXdeltaChecksum* obj) {
+
+ return serialize_xdeltachecksum (sink, obj->high, obj->low);
+}
+
+/* XdeltaChecksum Unserialize
+ */
+
+gboolean
+unserialize_xdeltachecksum_internal_noalloc (SerialSource *source, SerialXdeltaChecksum* result)
+{
+ if (! (* source->next_uint16) (source, &result->high)) goto bail;
+ if (! (* source->next_uint16) (source, &result->low)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltachecksum_internal (SerialSource *source, SerialXdeltaChecksum** result)
+{
+ SerialXdeltaChecksum* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialXdeltaChecksum));
+ if (! unser) goto bail;
+ if (! unserialize_xdeltachecksum_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltachecksum (SerialSource *source, SerialXdeltaChecksum** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_XdeltaChecksum) goto bail;
+ if (! unserialize_xdeltachecksum_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* XdeltaIndex Count
+ */
+
+guint
+serializeio_count_xdeltaindex (guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialXdeltaChecksum const* index) {
+ guint size = sizeof (SerialXdeltaIndex);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < index_len; i += 1)
+ {
+ size += serializeio_count_xdeltachecksum_obj (& (index[i]));
+ }
+ }
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_xdeltaindex_obj (SerialXdeltaIndex const* obj) {
+ return serializeio_count_xdeltaindex (obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+/* XdeltaIndex Print
+ */
+
+void
+serializeio_print_xdeltaindex_obj (SerialXdeltaIndex* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_XdeltaIndex]\n");
+ print_spaces (indent_spaces);
+ g_print ("file_len = ");
+ g_print ("%d\n", obj->file_len);
+ print_spaces (indent_spaces);
+ g_print ("file_md5 = ");
+ serializeio_print_bytes (obj->file_md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("index = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->index_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_xdeltachecksum_obj (& (obj->index[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+}
+
+/* XdeltaIndex Serialize
+ */
+
+gboolean
+serialize_xdeltaindex_internal (SerialSink *sink, guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialXdeltaChecksum const* index)
+{
+ if (! (* sink->next_uint) (sink, file_len)) goto bail;
+ if (! (* sink->next_bytes_known) (sink, file_md5, 16)) goto bail;
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, index_len)) goto bail;
+ for (i = 0; i < index_len; i += 1)
+ {
+ if (! serialize_xdeltachecksum_internal (sink, (index[i]).high, (index[i]).low)) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltaindex_obj_internal (SerialSink *sink, SerialXdeltaIndex* obj)
+{
+ return serialize_xdeltaindex_internal (sink, obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+gboolean
+serialize_xdeltaindex (SerialSink *sink, guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialXdeltaChecksum const* index)
+{
+ if (! (* sink->sink_type) (sink, ST_XdeltaIndex, serializeio_count_xdeltaindex (file_len, file_md5, index_len, index), TRUE)) goto bail;
+ if (! serialize_xdeltaindex_internal (sink, file_len, file_md5, index_len, index)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltaindex_obj (SerialSink *sink, const SerialXdeltaIndex* obj) {
+
+ return serialize_xdeltaindex (sink, obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+/* XdeltaIndex Unserialize
+ */
+
+gboolean
+unserialize_xdeltaindex_internal_noalloc (SerialSource *source, SerialXdeltaIndex* result)
+{
+ if (! (* source->next_uint) (source, &result->file_len)) goto bail;
+ if (! (* source->next_bytes_known) (source, result->file_md5, 16)) goto bail;
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->index_len)) goto bail;
+ if (! (result->index = serializeio_source_alloc (source, sizeof (SerialXdeltaChecksum) * result->index_len))) goto bail;
+ for (i = 0; i < result->index_len; i += 1)
+ {
+ if (! unserialize_xdeltachecksum_internal_noalloc (source, &(result->index[i]))) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltaindex_internal (SerialSource *source, SerialXdeltaIndex** result)
+{
+ SerialXdeltaIndex* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialXdeltaIndex));
+ if (! unser) goto bail;
+ if (! unserialize_xdeltaindex_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltaindex (SerialSource *source, SerialXdeltaIndex** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_XdeltaIndex) goto bail;
+ if (! unserialize_xdeltaindex_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* XdeltaSourceInfo Count
+ */
+
+guint
+serializeio_count_xdeltasourceinfo (const gchar* name, const guint8 md5[16], guint32 len, gboolean isdata, gboolean sequential) {
+ guint size = sizeof (SerialXdeltaSourceInfo);
+ ALIGN_8 (size);
+ size += strlen (name) + 1;
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_xdeltasourceinfo_obj (SerialXdeltaSourceInfo const* obj) {
+ return serializeio_count_xdeltasourceinfo (obj->name, obj->md5, obj->len, obj->isdata, obj->sequential);
+}
+
+/* XdeltaSourceInfo Print
+ */
+
+void
+serializeio_print_xdeltasourceinfo_obj (SerialXdeltaSourceInfo* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_XdeltaSourceInfo]\n");
+ print_spaces (indent_spaces);
+ g_print ("name = ");
+ g_print ("%s\n", obj->name);
+ print_spaces (indent_spaces);
+ g_print ("md5 = ");
+ serializeio_print_bytes (obj->md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("len = ");
+ g_print ("%d\n", obj->len);
+ print_spaces (indent_spaces);
+ g_print ("isdata = ");
+ g_print ("%s\n", obj->isdata ? "true" : "false");
+ print_spaces (indent_spaces);
+ g_print ("sequential = ");
+ g_print ("%s\n", obj->sequential ? "true" : "false");
+}
+
+/* XdeltaSourceInfo Serialize
+ */
+
+gboolean
+serialize_xdeltasourceinfo_internal (SerialSink *sink, const gchar* name, const guint8 md5[16], guint32 len, gboolean isdata, gboolean sequential)
+{
+ if (! (* sink->next_string) (sink, name)) goto bail;
+ if (! (* sink->next_bytes_known) (sink, md5, 16)) goto bail;
+ if (! (* sink->next_uint) (sink, len)) goto bail;
+ if (! (* sink->next_bool) (sink, isdata)) goto bail;
+ if (! (* sink->next_bool) (sink, sequential)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltasourceinfo_obj_internal (SerialSink *sink, SerialXdeltaSourceInfo* obj)
+{
+ return serialize_xdeltasourceinfo_internal (sink, obj->name, obj->md5, obj->len, obj->isdata, obj->sequential);
+}
+
+gboolean
+serialize_xdeltasourceinfo (SerialSink *sink, const gchar* name, const guint8 md5[16], guint32 len, gboolean isdata, gboolean sequential)
+{
+ if (! (* sink->sink_type) (sink, ST_XdeltaSourceInfo, serializeio_count_xdeltasourceinfo (name, md5, len, isdata, sequential), TRUE)) goto bail;
+ if (! serialize_xdeltasourceinfo_internal (sink, name, md5, len, isdata, sequential)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltasourceinfo_obj (SerialSink *sink, const SerialXdeltaSourceInfo* obj) {
+
+ return serialize_xdeltasourceinfo (sink, obj->name, obj->md5, obj->len, obj->isdata, obj->sequential);
+}
+
+/* XdeltaSourceInfo Unserialize
+ */
+
+gboolean
+unserialize_xdeltasourceinfo_internal_noalloc (SerialSource *source, SerialXdeltaSourceInfo* result)
+{
+ if (! (* source->next_string) (source, &result->name)) goto bail;
+ if (! (* source->next_bytes_known) (source, result->md5, 16)) goto bail;
+ if (! (* source->next_uint) (source, &result->len)) goto bail;
+ if (! (* source->next_bool) (source, &result->isdata)) goto bail;
+ if (! (* source->next_bool) (source, &result->sequential)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltasourceinfo_internal (SerialSource *source, SerialXdeltaSourceInfo** result)
+{
+ SerialXdeltaSourceInfo* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialXdeltaSourceInfo));
+ if (! unser) goto bail;
+ if (! unserialize_xdeltasourceinfo_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltasourceinfo (SerialSource *source, SerialXdeltaSourceInfo** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_XdeltaSourceInfo) goto bail;
+ if (! unserialize_xdeltasourceinfo_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* XdeltaControl Count
+ */
+
+guint
+serializeio_count_xdeltacontrol (const guint8 to_md5[16], guint32 to_len, gboolean has_data, guint32 source_info_len, SerialXdeltaSourceInfo* const* source_info, guint32 inst_len, SerialXdeltaInstruction const* inst) {
+ guint size = sizeof (SerialXdeltaControl);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < source_info_len; i += 1)
+ {
+ size += serializeio_count_xdeltasourceinfo_obj ((source_info[i])) + sizeof (void*);
+ }
+ }
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < inst_len; i += 1)
+ {
+ size += serializeio_count_xdeltainstruction_obj (& (inst[i]));
+ }
+ }
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_xdeltacontrol_obj (SerialXdeltaControl const* obj) {
+ return serializeio_count_xdeltacontrol (obj->to_md5, obj->to_len, obj->has_data, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+/* XdeltaControl Print
+ */
+
+void
+serializeio_print_xdeltacontrol_obj (SerialXdeltaControl* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_XdeltaControl]\n");
+ print_spaces (indent_spaces);
+ g_print ("to_md5 = ");
+ serializeio_print_bytes (obj->to_md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("to_len = ");
+ g_print ("%d\n", obj->to_len);
+ print_spaces (indent_spaces);
+ g_print ("has_data = ");
+ g_print ("%s\n", obj->has_data ? "true" : "false");
+ print_spaces (indent_spaces);
+ g_print ("source_info = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->source_info_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_xdeltasourceinfo_obj ((obj->source_info[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+ print_spaces (indent_spaces);
+ g_print ("inst = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->inst_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_xdeltainstruction_obj (& (obj->inst[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+}
+
+/* XdeltaControl Serialize
+ */
+
+gboolean
+serialize_xdeltacontrol_internal (SerialSink *sink, const guint8 to_md5[16], guint32 to_len, gboolean has_data, guint32 source_info_len, SerialXdeltaSourceInfo* const* source_info, guint32 inst_len, SerialXdeltaInstruction const* inst)
+{
+ if (! (* sink->next_bytes_known) (sink, to_md5, 16)) goto bail;
+ if (! (* sink->next_uint) (sink, to_len)) goto bail;
+ if (! (* sink->next_bool) (sink, has_data)) goto bail;
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, source_info_len)) goto bail;
+ for (i = 0; i < source_info_len; i += 1)
+ {
+ if (! serialize_xdeltasourceinfo_internal (sink, (source_info[i])->name, (source_info[i])->md5, (source_info[i])->len, (source_info[i])->isdata, (source_info[i])->sequential)) goto bail;
+ }
+ }
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, inst_len)) goto bail;
+ for (i = 0; i < inst_len; i += 1)
+ {
+ if (! serialize_xdeltainstruction_internal (sink, (inst[i]).index, (inst[i]).offset, (inst[i]).length)) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltacontrol_obj_internal (SerialSink *sink, SerialXdeltaControl* obj)
+{
+ return serialize_xdeltacontrol_internal (sink, obj->to_md5, obj->to_len, obj->has_data, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+gboolean
+serialize_xdeltacontrol (SerialSink *sink, const guint8 to_md5[16], guint32 to_len, gboolean has_data, guint32 source_info_len, SerialXdeltaSourceInfo* const* source_info, guint32 inst_len, SerialXdeltaInstruction const* inst)
+{
+ if (! (* sink->sink_type) (sink, ST_XdeltaControl, serializeio_count_xdeltacontrol (to_md5, to_len, has_data, source_info_len, source_info, inst_len, inst), TRUE)) goto bail;
+ if (! serialize_xdeltacontrol_internal (sink, to_md5, to_len, has_data, source_info_len, source_info, inst_len, inst)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltacontrol_obj (SerialSink *sink, const SerialXdeltaControl* obj) {
+
+ return serialize_xdeltacontrol (sink, obj->to_md5, obj->to_len, obj->has_data, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+/* XdeltaControl Unserialize
+ */
+
+gboolean
+unserialize_xdeltacontrol_internal_noalloc (SerialSource *source, SerialXdeltaControl* result)
+{
+ if (! (* source->next_bytes_known) (source, result->to_md5, 16)) goto bail;
+ if (! (* source->next_uint) (source, &result->to_len)) goto bail;
+ if (! (* source->next_bool) (source, &result->has_data)) goto bail;
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->source_info_len)) goto bail;
+ if (! (result->source_info = serializeio_source_alloc (source, sizeof (SerialXdeltaSourceInfo*) * result->source_info_len))) goto bail;
+ for (i = 0; i < result->source_info_len; i += 1)
+ {
+ if (! unserialize_xdeltasourceinfo_internal (source, &(result->source_info[i]))) goto bail;
+ }
+ }
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->inst_len)) goto bail;
+ if (! (result->inst = serializeio_source_alloc (source, sizeof (SerialXdeltaInstruction) * result->inst_len))) goto bail;
+ for (i = 0; i < result->inst_len; i += 1)
+ {
+ if (! unserialize_xdeltainstruction_internal_noalloc (source, &(result->inst[i]))) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltacontrol_internal (SerialSource *source, SerialXdeltaControl** result)
+{
+ SerialXdeltaControl* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialXdeltaControl));
+ if (! unser) goto bail;
+ if (! unserialize_xdeltacontrol_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltacontrol (SerialSource *source, SerialXdeltaControl** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_XdeltaControl) goto bail;
+ if (! unserialize_xdeltacontrol_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* XdeltaInstruction Count
+ */
+
+guint
+serializeio_count_xdeltainstruction (guint32 index, guint32 offset, guint32 length) {
+ guint size = sizeof (SerialXdeltaInstruction);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_xdeltainstruction_obj (SerialXdeltaInstruction const* obj) {
+ return serializeio_count_xdeltainstruction (obj->index, obj->offset, obj->length);
+}
+
+/* XdeltaInstruction Print
+ */
+
+void
+serializeio_print_xdeltainstruction_obj (SerialXdeltaInstruction* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_XdeltaInstruction]\n");
+ print_spaces (indent_spaces);
+ g_print ("index = ");
+ g_print ("%d\n", obj->index);
+ print_spaces (indent_spaces);
+ g_print ("offset = ");
+ g_print ("%d\n", obj->offset);
+ print_spaces (indent_spaces);
+ g_print ("length = ");
+ g_print ("%d\n", obj->length);
+}
+
+/* XdeltaInstruction Serialize
+ */
+
+gboolean
+serialize_xdeltainstruction_internal (SerialSink *sink, guint32 index, guint32 offset, guint32 length)
+{
+ if (! (* sink->next_uint) (sink, index)) goto bail;
+ if (! (* sink->next_uint) (sink, offset)) goto bail;
+ if (! (* sink->next_uint) (sink, length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltainstruction_obj_internal (SerialSink *sink, SerialXdeltaInstruction* obj)
+{
+ return serialize_xdeltainstruction_internal (sink, obj->index, obj->offset, obj->length);
+}
+
+gboolean
+serialize_xdeltainstruction (SerialSink *sink, guint32 index, guint32 offset, guint32 length)
+{
+ if (! (* sink->sink_type) (sink, ST_XdeltaInstruction, serializeio_count_xdeltainstruction (index, offset, length), TRUE)) goto bail;
+ if (! serialize_xdeltainstruction_internal (sink, index, offset, length)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_xdeltainstruction_obj (SerialSink *sink, const SerialXdeltaInstruction* obj) {
+
+ return serialize_xdeltainstruction (sink, obj->index, obj->offset, obj->length);
+}
+
+/* XdeltaInstruction Unserialize
+ */
+
+gboolean
+unserialize_xdeltainstruction_internal_noalloc (SerialSource *source, SerialXdeltaInstruction* result)
+{
+ if (! (* source->next_uint) (source, &result->index)) goto bail;
+ if (! (* source->next_uint) (source, &result->offset)) goto bail;
+ if (! (* source->next_uint) (source, &result->length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltainstruction_internal (SerialSource *source, SerialXdeltaInstruction** result)
+{
+ SerialXdeltaInstruction* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialXdeltaInstruction));
+ if (! unser) goto bail;
+ if (! unserialize_xdeltainstruction_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_xdeltainstruction (SerialSource *source, SerialXdeltaInstruction** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_XdeltaInstruction) goto bail;
+ if (! unserialize_xdeltainstruction_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* RsyncIndexElt Count
+ */
+
+guint
+serializeio_count_rsyncindexelt (const guint8 md5[16], SerialXdeltaChecksum const* cksum) {
+ guint size = sizeof (SerialRsyncIndexElt);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ size += serializeio_count_xdeltachecksum_obj (cksum) - sizeof (SerialXdeltaChecksum);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_rsyncindexelt_obj (SerialRsyncIndexElt const* obj) {
+ return serializeio_count_rsyncindexelt (obj->md5, &obj->cksum);
+}
+
+/* RsyncIndexElt Print
+ */
+
+void
+serializeio_print_rsyncindexelt_obj (SerialRsyncIndexElt* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_RsyncIndexElt]\n");
+ print_spaces (indent_spaces);
+ g_print ("md5 = ");
+ serializeio_print_bytes (obj->md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("cksum = ");
+ g_print ("{\n");
+ serializeio_print_xdeltachecksum_obj (& obj->cksum, indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ g_print ("}\n");
+}
+
+/* RsyncIndexElt Serialize
+ */
+
+gboolean
+serialize_rsyncindexelt_internal (SerialSink *sink, const guint8 md5[16], SerialXdeltaChecksum const* cksum)
+{
+ if (! (* sink->next_bytes_known) (sink, md5, 16)) goto bail;
+ if (! serialize_xdeltachecksum_internal (sink, cksum->high, cksum->low)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_rsyncindexelt_obj_internal (SerialSink *sink, SerialRsyncIndexElt* obj)
+{
+ return serialize_rsyncindexelt_internal (sink, obj->md5, &obj->cksum);
+}
+
+gboolean
+serialize_rsyncindexelt (SerialSink *sink, const guint8 md5[16], SerialXdeltaChecksum const* cksum)
+{
+ if (! (* sink->sink_type) (sink, ST_RsyncIndexElt, serializeio_count_rsyncindexelt (md5, cksum), TRUE)) goto bail;
+ if (! serialize_rsyncindexelt_internal (sink, md5, cksum)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_rsyncindexelt_obj (SerialSink *sink, const SerialRsyncIndexElt* obj) {
+
+ return serialize_rsyncindexelt (sink, obj->md5, &obj->cksum);
+}
+
+/* RsyncIndexElt Unserialize
+ */
+
+gboolean
+unserialize_rsyncindexelt_internal_noalloc (SerialSource *source, SerialRsyncIndexElt* result)
+{
+ if (! (* source->next_bytes_known) (source, result->md5, 16)) goto bail;
+ if (! unserialize_xdeltachecksum_internal_noalloc (source, &result->cksum)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_rsyncindexelt_internal (SerialSource *source, SerialRsyncIndexElt** result)
+{
+ SerialRsyncIndexElt* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialRsyncIndexElt));
+ if (! unser) goto bail;
+ if (! unserialize_rsyncindexelt_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_rsyncindexelt (SerialSource *source, SerialRsyncIndexElt** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_RsyncIndexElt) goto bail;
+ if (! unserialize_rsyncindexelt_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* RsyncIndex Count
+ */
+
+guint
+serializeio_count_rsyncindex (guint32 seg_len, guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialRsyncIndexElt const* index) {
+ guint size = sizeof (SerialRsyncIndex);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < index_len; i += 1)
+ {
+ size += serializeio_count_rsyncindexelt_obj (& (index[i]));
+ }
+ }
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_rsyncindex_obj (SerialRsyncIndex const* obj) {
+ return serializeio_count_rsyncindex (obj->seg_len, obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+/* RsyncIndex Print
+ */
+
+void
+serializeio_print_rsyncindex_obj (SerialRsyncIndex* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_RsyncIndex]\n");
+ print_spaces (indent_spaces);
+ g_print ("seg_len = ");
+ g_print ("%d\n", obj->seg_len);
+ print_spaces (indent_spaces);
+ g_print ("file_len = ");
+ g_print ("%d\n", obj->file_len);
+ print_spaces (indent_spaces);
+ g_print ("file_md5 = ");
+ serializeio_print_bytes (obj->file_md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("index = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->index_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_rsyncindexelt_obj (& (obj->index[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+}
+
+/* RsyncIndex Serialize
+ */
+
+gboolean
+serialize_rsyncindex_internal (SerialSink *sink, guint32 seg_len, guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialRsyncIndexElt const* index)
+{
+ if (! (* sink->next_uint) (sink, seg_len)) goto bail;
+ if (! (* sink->next_uint) (sink, file_len)) goto bail;
+ if (! (* sink->next_bytes_known) (sink, file_md5, 16)) goto bail;
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, index_len)) goto bail;
+ for (i = 0; i < index_len; i += 1)
+ {
+ if (! serialize_rsyncindexelt_internal (sink, (index[i]).md5, &(index[i]).cksum)) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_rsyncindex_obj_internal (SerialSink *sink, SerialRsyncIndex* obj)
+{
+ return serialize_rsyncindex_internal (sink, obj->seg_len, obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+gboolean
+serialize_rsyncindex (SerialSink *sink, guint32 seg_len, guint32 file_len, const guint8 file_md5[16], guint32 index_len, SerialRsyncIndexElt const* index)
+{
+ if (! (* sink->sink_type) (sink, ST_RsyncIndex, serializeio_count_rsyncindex (seg_len, file_len, file_md5, index_len, index), TRUE)) goto bail;
+ if (! serialize_rsyncindex_internal (sink, seg_len, file_len, file_md5, index_len, index)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_rsyncindex_obj (SerialSink *sink, const SerialRsyncIndex* obj) {
+
+ return serialize_rsyncindex (sink, obj->seg_len, obj->file_len, obj->file_md5, obj->index_len, obj->index);
+}
+
+/* RsyncIndex Unserialize
+ */
+
+gboolean
+unserialize_rsyncindex_internal_noalloc (SerialSource *source, SerialRsyncIndex* result)
+{
+ if (! (* source->next_uint) (source, &result->seg_len)) goto bail;
+ if (! (* source->next_uint) (source, &result->file_len)) goto bail;
+ if (! (* source->next_bytes_known) (source, result->file_md5, 16)) goto bail;
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->index_len)) goto bail;
+ if (! (result->index = serializeio_source_alloc (source, sizeof (SerialRsyncIndexElt) * result->index_len))) goto bail;
+ for (i = 0; i < result->index_len; i += 1)
+ {
+ if (! unserialize_rsyncindexelt_internal_noalloc (source, &(result->index[i]))) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_rsyncindex_internal (SerialSource *source, SerialRsyncIndex** result)
+{
+ SerialRsyncIndex* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialRsyncIndex));
+ if (! unser) goto bail;
+ if (! unserialize_rsyncindex_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_rsyncindex (SerialSource *source, SerialRsyncIndex** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_RsyncIndex) goto bail;
+ if (! unserialize_rsyncindex_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* Version0SourceInfo Count
+ */
+
+guint
+serializeio_count_version0sourceinfo (const guint8 md5[16], const guint8 real_md5[16], guint32 length) {
+ guint size = sizeof (SerialVersion0SourceInfo);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_version0sourceinfo_obj (SerialVersion0SourceInfo const* obj) {
+ return serializeio_count_version0sourceinfo (obj->md5, obj->real_md5, obj->length);
+}
+
+/* Version0SourceInfo Print
+ */
+
+void
+serializeio_print_version0sourceinfo_obj (SerialVersion0SourceInfo* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_Version0SourceInfo]\n");
+ print_spaces (indent_spaces);
+ g_print ("md5 = ");
+ serializeio_print_bytes (obj->md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("real_md5 = ");
+ serializeio_print_bytes (obj->real_md5, 16);
+ print_spaces (indent_spaces);
+ g_print ("length = ");
+ g_print ("%d\n", obj->length);
+}
+
+/* Version0SourceInfo Serialize
+ */
+
+gboolean
+serialize_version0sourceinfo_internal (SerialSink *sink, const guint8 md5[16], const guint8 real_md5[16], guint32 length)
+{
+ if (! (* sink->next_bytes_known) (sink, md5, 16)) goto bail;
+ if (! (* sink->next_bytes_known) (sink, real_md5, 16)) goto bail;
+ if (! (* sink->next_uint) (sink, length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0sourceinfo_obj_internal (SerialSink *sink, SerialVersion0SourceInfo* obj)
+{
+ return serialize_version0sourceinfo_internal (sink, obj->md5, obj->real_md5, obj->length);
+}
+
+gboolean
+serialize_version0sourceinfo (SerialSink *sink, const guint8 md5[16], const guint8 real_md5[16], guint32 length)
+{
+ if (! (* sink->sink_type) (sink, ST_Version0SourceInfo, serializeio_count_version0sourceinfo (md5, real_md5, length), TRUE)) goto bail;
+ if (! serialize_version0sourceinfo_internal (sink, md5, real_md5, length)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0sourceinfo_obj (SerialSink *sink, const SerialVersion0SourceInfo* obj) {
+
+ return serialize_version0sourceinfo (sink, obj->md5, obj->real_md5, obj->length);
+}
+
+/* Version0SourceInfo Unserialize
+ */
+
+gboolean
+unserialize_version0sourceinfo_internal_noalloc (SerialSource *source, SerialVersion0SourceInfo* result)
+{
+ if (! (* source->next_bytes_known) (source, result->md5, 16)) goto bail;
+ if (! (* source->next_bytes_known) (source, result->real_md5, 16)) goto bail;
+ if (! (* source->next_uint) (source, &result->length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0sourceinfo_internal (SerialSource *source, SerialVersion0SourceInfo** result)
+{
+ SerialVersion0SourceInfo* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialVersion0SourceInfo));
+ if (! unser) goto bail;
+ if (! unserialize_version0sourceinfo_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0sourceinfo (SerialSource *source, SerialVersion0SourceInfo** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_Version0SourceInfo) goto bail;
+ if (! unserialize_version0sourceinfo_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* Version0Control Count
+ */
+
+guint
+serializeio_count_version0control (gboolean normalized, guint32 data_len, SerialVersion0SourceInfo const* to_info, guint32 source_info_len, SerialVersion0SourceInfo* const* source_info, guint32 inst_len, SerialVersion0Instruction const* inst) {
+ guint size = sizeof (SerialVersion0Control);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ size += serializeio_count_version0sourceinfo_obj (to_info) - sizeof (SerialVersion0SourceInfo);
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < source_info_len; i += 1)
+ {
+ size += serializeio_count_version0sourceinfo_obj ((source_info[i])) + sizeof (void*);
+ }
+ }
+ ALIGN_8 (size);
+ {
+ gint i;
+ for (i = 0; i < inst_len; i += 1)
+ {
+ size += serializeio_count_version0instruction_obj (& (inst[i]));
+ }
+ }
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_version0control_obj (SerialVersion0Control const* obj) {
+ return serializeio_count_version0control (obj->normalized, obj->data_len, &obj->to_info, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+/* Version0Control Print
+ */
+
+void
+serializeio_print_version0control_obj (SerialVersion0Control* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_Version0Control]\n");
+ print_spaces (indent_spaces);
+ g_print ("normalized = ");
+ g_print ("%s\n", obj->normalized ? "true" : "false");
+ print_spaces (indent_spaces);
+ g_print ("data_len = ");
+ g_print ("%d\n", obj->data_len);
+ print_spaces (indent_spaces);
+ g_print ("to_info = ");
+ g_print ("{\n");
+ serializeio_print_version0sourceinfo_obj (& obj->to_info, indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ g_print ("}\n");
+ print_spaces (indent_spaces);
+ g_print ("source_info = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->source_info_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_version0sourceinfo_obj ((obj->source_info[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+ print_spaces (indent_spaces);
+ g_print ("inst = ");
+ g_print ("{\n");
+ {
+ gint i;
+ for (i = 0; i < obj->inst_len; i += 1)
+ {
+ print_spaces (indent_spaces);
+ g_print ("%d:\n", i);
+ print_spaces (indent_spaces);
+ serializeio_print_version0instruction_obj (& (obj->inst[i]), indent_spaces + 2);
+ print_spaces (indent_spaces);
+;
+ }
+ }
+ g_print ("}\n");
+}
+
+/* Version0Control Serialize
+ */
+
+gboolean
+serialize_version0control_internal (SerialSink *sink, gboolean normalized, guint32 data_len, SerialVersion0SourceInfo const* to_info, guint32 source_info_len, SerialVersion0SourceInfo* const* source_info, guint32 inst_len, SerialVersion0Instruction const* inst)
+{
+ if (! (* sink->next_bool) (sink, normalized)) goto bail;
+ if (! (* sink->next_uint) (sink, data_len)) goto bail;
+ if (! serialize_version0sourceinfo_internal (sink, to_info->md5, to_info->real_md5, to_info->length)) goto bail;
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, source_info_len)) goto bail;
+ for (i = 0; i < source_info_len; i += 1)
+ {
+ if (! serialize_version0sourceinfo_internal (sink, (source_info[i])->md5, (source_info[i])->real_md5, (source_info[i])->length)) goto bail;
+ }
+ }
+ {
+ gint i;
+ if (! (* sink->next_uint) (sink, inst_len)) goto bail;
+ for (i = 0; i < inst_len; i += 1)
+ {
+ if (! serialize_version0instruction_internal (sink, (inst[i]).offset, (inst[i]).length)) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0control_obj_internal (SerialSink *sink, SerialVersion0Control* obj)
+{
+ return serialize_version0control_internal (sink, obj->normalized, obj->data_len, &obj->to_info, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+gboolean
+serialize_version0control (SerialSink *sink, gboolean normalized, guint32 data_len, SerialVersion0SourceInfo const* to_info, guint32 source_info_len, SerialVersion0SourceInfo* const* source_info, guint32 inst_len, SerialVersion0Instruction const* inst)
+{
+ if (! (* sink->sink_type) (sink, ST_Version0Control, serializeio_count_version0control (normalized, data_len, to_info, source_info_len, source_info, inst_len, inst), TRUE)) goto bail;
+ if (! serialize_version0control_internal (sink, normalized, data_len, to_info, source_info_len, source_info, inst_len, inst)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0control_obj (SerialSink *sink, const SerialVersion0Control* obj) {
+
+ return serialize_version0control (sink, obj->normalized, obj->data_len, &obj->to_info, obj->source_info_len, obj->source_info, obj->inst_len, obj->inst);
+}
+
+/* Version0Control Unserialize
+ */
+
+gboolean
+unserialize_version0control_internal_noalloc (SerialSource *source, SerialVersion0Control* result)
+{
+ if (! (* source->next_bool) (source, &result->normalized)) goto bail;
+ if (! (* source->next_uint) (source, &result->data_len)) goto bail;
+ if (! unserialize_version0sourceinfo_internal_noalloc (source, &result->to_info)) goto bail;
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->source_info_len)) goto bail;
+ if (! (result->source_info = serializeio_source_alloc (source, sizeof (SerialVersion0SourceInfo*) * result->source_info_len))) goto bail;
+ for (i = 0; i < result->source_info_len; i += 1)
+ {
+ if (! unserialize_version0sourceinfo_internal (source, &(result->source_info[i]))) goto bail;
+ }
+ }
+ {
+ gint i;
+ if (! (* source->next_uint) (source, &result->inst_len)) goto bail;
+ if (! (result->inst = serializeio_source_alloc (source, sizeof (SerialVersion0Instruction) * result->inst_len))) goto bail;
+ for (i = 0; i < result->inst_len; i += 1)
+ {
+ if (! unserialize_version0instruction_internal_noalloc (source, &(result->inst[i]))) goto bail;
+ }
+ }
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0control_internal (SerialSource *source, SerialVersion0Control** result)
+{
+ SerialVersion0Control* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialVersion0Control));
+ if (! unser) goto bail;
+ if (! unserialize_version0control_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0control (SerialSource *source, SerialVersion0Control** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_Version0Control) goto bail;
+ if (! unserialize_version0control_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+/* Version0Instruction Count
+ */
+
+guint
+serializeio_count_version0instruction (guint32 offset, guint32 length) {
+ guint size = sizeof (SerialVersion0Instruction);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ ALIGN_8 (size);
+ return size;
+}
+
+guint
+serializeio_count_version0instruction_obj (SerialVersion0Instruction const* obj) {
+ return serializeio_count_version0instruction (obj->offset, obj->length);
+}
+
+/* Version0Instruction Print
+ */
+
+void
+serializeio_print_version0instruction_obj (SerialVersion0Instruction* obj, guint indent_spaces) {
+ print_spaces (indent_spaces);
+ g_print ("[ST_Version0Instruction]\n");
+ print_spaces (indent_spaces);
+ g_print ("offset = ");
+ g_print ("%d\n", obj->offset);
+ print_spaces (indent_spaces);
+ g_print ("length = ");
+ g_print ("%d\n", obj->length);
+}
+
+/* Version0Instruction Serialize
+ */
+
+gboolean
+serialize_version0instruction_internal (SerialSink *sink, guint32 offset, guint32 length)
+{
+ if (! (* sink->next_uint) (sink, offset)) goto bail;
+ if (! (* sink->next_uint) (sink, length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0instruction_obj_internal (SerialSink *sink, SerialVersion0Instruction* obj)
+{
+ return serialize_version0instruction_internal (sink, obj->offset, obj->length);
+}
+
+gboolean
+serialize_version0instruction (SerialSink *sink, guint32 offset, guint32 length)
+{
+ if (! (* sink->sink_type) (sink, ST_Version0Instruction, serializeio_count_version0instruction (offset, length), TRUE)) goto bail;
+ if (! serialize_version0instruction_internal (sink, offset, length)) goto bail;
+ if (sink->sink_quantum && ! sink->sink_quantum (sink)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+serialize_version0instruction_obj (SerialSink *sink, const SerialVersion0Instruction* obj) {
+
+ return serialize_version0instruction (sink, obj->offset, obj->length);
+}
+
+/* Version0Instruction Unserialize
+ */
+
+gboolean
+unserialize_version0instruction_internal_noalloc (SerialSource *source, SerialVersion0Instruction* result)
+{
+ if (! (* source->next_uint) (source, &result->offset)) goto bail;
+ if (! (* source->next_uint) (source, &result->length)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0instruction_internal (SerialSource *source, SerialVersion0Instruction** result)
+{
+ SerialVersion0Instruction* unser;
+ (*result) = NULL;
+ unser = serializeio_source_alloc (source, sizeof (SerialVersion0Instruction));
+ if (! unser) goto bail;
+ if (! unserialize_version0instruction_internal_noalloc (source, unser)) goto bail;
+ (*result) = unser;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+gboolean
+unserialize_version0instruction (SerialSource *source, SerialVersion0Instruction** result)
+{
+ if ( (* source->source_type) (source, TRUE) != ST_Version0Instruction) goto bail;
+ if (! unserialize_version0instruction_internal (source, result)) goto bail;
+ return TRUE;
+bail:
+ return FALSE;
+}
+
+void
+xd_generate_void_event_internal (XdVoidEventCode _code, const char* _srcfile, gint _srcline)
+{
+ XdVoidEvent *_e = g_new0 (XdVoidEvent, 1);
+ _e->code = _code.code;
+ _e->srcline = _srcline;
+ _e->srcfile = _srcfile;
+ eventdelivery_event_deliver ((GenericEvent*) _e);
+}
+
+const XdVoidEventCode EC_XdTooFewSources = { EC_XdTooFewSourcesValue };
+
+const XdVoidEventCode EC_XdTooManySources = { EC_XdTooManySourcesValue };
+
+void
+xd_generate_int_event_internal (XdIntEventCode _code, const char* _srcfile, gint _srcline, int index)
+{
+ XdIntEvent *_e = g_new0 (XdIntEvent, 1);
+ _e->code = _code.code;
+ _e->srcline = _srcline;
+ _e->srcfile = _srcfile;
+ _e->index = index;
+ eventdelivery_event_deliver ((GenericEvent*) _e);
+}
+
+const char*
+Xd_Int_event_field_to_string (GenericEvent* ev, gint field)
+{
+ XdIntEvent* it = (XdIntEvent*) ev;
+ switch (field)
+ {
+ case 0: return eventdelivery_int_to_string (it->index);
+ default: abort ();
+ }
+}
+
+const XdIntEventCode EC_XdOutOfRangeSourceIndex = { EC_XdOutOfRangeSourceIndexValue };
+
+const XdVoidEventCode EC_XdInvalidControl = { EC_XdInvalidControlValue };
+
+const XdVoidEventCode EC_XdInvalidRsyncCache = { EC_XdInvalidRsyncCacheValue };
+
+const XdVoidEventCode EC_XdIncompatibleDelta = { EC_XdIncompatibleDeltaValue };
+
+void
+xd_generate_handlestringstring_event_internal (XdHandleStringStringEventCode _code, const char* _srcfile, gint _srcline, FileHandle* stream, const char* expected, const char* received)
+{
+ XdHandleStringStringEvent *_e = g_new0 (XdHandleStringStringEvent, 1);
+ _e->code = _code.code;
+ _e->srcline = _srcline;
+ _e->srcfile = _srcfile;
+ _e->stream = stream;
+ _e->expected = expected;
+ _e->received = received;
+ eventdelivery_event_deliver ((GenericEvent*) _e);
+}
+
+const char*
+Xd_HandleStringString_event_field_to_string (GenericEvent* ev, gint field)
+{
+ XdHandleStringStringEvent* it = (XdHandleStringStringEvent*) ev;
+ switch (field)
+ {
+ case 0: return eventdelivery_handle_to_string (it->stream);
+ case 1: return eventdelivery_string_to_string (it->expected);
+ case 2: return eventdelivery_string_to_string (it->received);
+ default: abort ();
+ }
+}
+
+const XdHandleStringStringEventCode EC_XdStreamChecksumFailed = { EC_XdStreamChecksumFailedValue };
+
+void
+xd_generate_handleintint_event_internal (XdHandleIntIntEventCode _code, const char* _srcfile, gint _srcline, FileHandle* stream, int expected, int received)
+{
+ XdHandleIntIntEvent *_e = g_new0 (XdHandleIntIntEvent, 1);
+ _e->code = _code.code;
+ _e->srcline = _srcline;
+ _e->srcfile = _srcfile;
+ _e->stream = stream;
+ _e->expected = expected;
+ _e->received = received;
+ eventdelivery_event_deliver ((GenericEvent*) _e);
+}
+
+const char*
+Xd_HandleIntInt_event_field_to_string (GenericEvent* ev, gint field)
+{
+ XdHandleIntIntEvent* it = (XdHandleIntIntEvent*) ev;
+ switch (field)
+ {
+ case 0: return eventdelivery_handle_to_string (it->stream);
+ case 1: return eventdelivery_int_to_string (it->expected);
+ case 2: return eventdelivery_int_to_string (it->received);
+ default: abort ();
+ }
+}
+
+const XdHandleIntIntEventCode EC_XdStreamLengthFailed = { EC_XdStreamLengthFailedValue };
+
+void
+xd_generate_string_event_internal (XdStringEventCode _code, const char* _srcfile, gint _srcline, const char* version)
+{
+ XdStringEvent *_e = g_new0 (XdStringEvent, 1);
+ _e->code = _code.code;
+ _e->srcline = _srcline;
+ _e->srcfile = _srcfile;
+ _e->version = version;
+ eventdelivery_event_deliver ((GenericEvent*) _e);
+}
+
+const char*
+Xd_String_event_field_to_string (GenericEvent* ev, gint field)
+{
+ XdStringEvent* it = (XdStringEvent*) ev;
+ switch (field)
+ {
+ case 0: return eventdelivery_string_to_string (it->version);
+ default: abort ();
+ }
+}
+
+const XdStringEventCode EC_XdBackwardCompatibilityMode = { EC_XdBackwardCompatibilityModeValue };
+