From e2b7f01dfc654fb4407e83ea1be57974a3ef493a Mon Sep 17 00:00:00 2001 From: Graham Miller Date: Fri, 14 Jan 2011 13:20:41 -0500 Subject: initial commit --- main.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..2e12c6e --- /dev/null +++ b/main.c @@ -0,0 +1,116 @@ +#include + +#include "gob.h" +#include "encode.h" + + +int main() { + gob_encoder enc = gob_alloc_encoder(); + char size_buf[16]; + char buf[1024]; + int num_bytes; + int total_bytes = 0; + char *write_ptr = buf; + + int type_id = gob_allocate_type_id(); + + num_bytes = gob_encode_int(enc, write_ptr, 1024-total_bytes, -1*type_id); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024-total_bytes, 3); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // start of wireType + num_bytes = gob_start_struct(enc, write_ptr, 1024-total_bytes); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // field delta for s (structType) + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024-total_bytes, 1); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // start of structType + num_bytes = gob_start_struct(enc, write_ptr, 1024-total_bytes); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + num_bytes = gob_encode_common_type(enc, write_ptr, 1024-total_bytes, "MyType", type_id); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // field delta for field ([]*fieldType) + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024-total_bytes, 1); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // send slice size + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024-total_bytes, 2); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // send symbol field type + num_bytes = gob_encode_field_type(enc, write_ptr, 1024-total_bytes, "Name", GOB_STRING_ID); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // send price-size array type + num_bytes = gob_encode_array_(enc, write_ptr, 1024-total_bytes, "Name", GOB_STRING_ID); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // end struct type + num_bytes = gob_end_struct(enc, write_ptr, 1024-total_bytes); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // end_wire_type + num_bytes = gob_end_struct(enc, write_ptr, 1024-total_bytes); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + + // precomputed message len... + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024, 10); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + num_bytes = gob_encode_int(enc, write_ptr, 1024-total_bytes, type_id); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + num_bytes = gob_encode_unsigned_int(enc, write_ptr, 1024-total_bytes, 1); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + num_bytes = gob_encode_string(enc, write_ptr, 1024-total_bytes, "hello"); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + // end MyType + num_bytes = gob_end_struct(enc, write_ptr, 1024-total_bytes); + total_bytes += num_bytes; + write_ptr += num_bytes; + CU_ASSERT(total_bytes < 1024); + + gob_free_encoder(enc); + +} -- cgit v1.3.1