diff options
| author | Graham Miller <graham.miller@gmail.com> | 2011-01-14 13:20:41 -0500 |
|---|---|---|
| committer | Graham Miller <graham.miller@gmail.com> | 2011-01-14 13:20:41 -0500 |
| commit | e2b7f01dfc654fb4407e83ea1be57974a3ef493a (patch) | |
| tree | 4e723404cb00c7ac660d6f45be275dc092046784 /main.c | |
| download | libgob-e2b7f01dfc654fb4407e83ea1be57974a3ef493a.tar.gz libgob-e2b7f01dfc654fb4407e83ea1be57974a3ef493a.tar.bz2 | |
initial commit
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 116 |
1 files changed, 116 insertions, 0 deletions
@@ -0,0 +1,116 @@ +#include <stdio.h> + +#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); + +} |
