#include "labcomm.h" #include "labcomm_private.h" #include "example.h" static unsigned char signature_bytes_log_message[] = { // struct { 2 fields 0, 0, 0, 17, 0, 0, 0, 2, // int 'sequence' 0, 0, 0, 8, 115, 101, 113, 117, 101, 110, 99, 101, 0, 0, 0, 35, // array [_] 'line' 0, 0, 0, 4, 108, 105, 110, 101, // array [_] 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, // struct { 2 fields 0, 0, 0, 17, 0, 0, 0, 2, // boolean 'last' 0, 0, 0, 4, 108, 97, 115, 116, 0, 0, 0, 32, // string 'data' 0, 0, 0, 4, 100, 97, 116, 97, 0, 0, 0, 39, // } // } // } }; labcomm_signature_t labcomm_signature_example_log_message = { LABCOMM_SAMPLE, "log_message", (int (*)(void *))labcomm_sizeof_example_log_message, sizeof(signature_bytes_log_message), signature_bytes_log_message }; static unsigned char signature_bytes_data[] = { 0, 0, 0, 37, }; labcomm_signature_t labcomm_signature_example_data = { LABCOMM_SAMPLE, "data", (int (*)(void *))labcomm_sizeof_example_data, sizeof(signature_bytes_data), signature_bytes_data }; static void decode_log_message( labcomm_decoder_t *d, void (*handle)( example_log_message *v, void *context ), void *context ) { example_log_message v; v.sequence = labcomm_decode_int(d); v.line.n_0 = labcomm_decode_int(d); v.line.a = malloc(sizeof(v.line.a[0]) * v.line.n_0); { int i_0_0; for (i_0_0 = 0 ; i_0_0 < v.line.n_0 ; i_0_0++) { int i_0 = i_0_0; v.line.a[i_0].last = labcomm_decode_boolean(d); v.line.a[i_0].data = labcomm_decode_string(d); } } handle(&v, context); { { int i_0_0; for (i_0_0 = 0 ; i_0_0 < v.line.n_0 ; i_0_0++) { int i_0 = i_0_0; free(v.line.a[i_0].data); } } free(v.line.a); } } void labcomm_decoder_register_example_log_message( struct labcomm_decoder *d, void (*handler)( example_log_message *v, void *context ), void *context ) { labcomm_internal_decoder_register( d, &labcomm_signature_example_log_message, (labcomm_decoder_typecast_t)decode_log_message, (labcomm_handler_typecast_t)handler, context ); } static void encode_log_message( labcomm_encoder_t *e, example_log_message *v ) { e->writer.write(&e->writer, labcomm_writer_start); labcomm_encode_type_index(e, &labcomm_signature_example_log_message); { labcomm_encode_int(e, (*v).sequence); labcomm_encode_int(e, (*v).line.n_0); { int i_0_0; for (i_0_0 = 0 ; i_0_0 < (*v).line.n_0 ; i_0_0++) { int i_0 = i_0_0; labcomm_encode_boolean(e, (*v).line.a[i_0].last); labcomm_encode_string(e, (*v).line.a[i_0].data); } } } e->writer.write(&e->writer, labcomm_writer_end); } void labcomm_encode_example_log_message( labcomm_encoder_t *e, example_log_message *v ) { labcomm_internal_encode(e, &labcomm_signature_example_log_message, v); } void labcomm_encoder_register_example_log_message( struct labcomm_encoder *e ) { labcomm_internal_encoder_register( e, &labcomm_signature_example_log_message, (labcomm_encode_typecast_t)encode_log_message ); } int labcomm_sizeof_example_log_message(example_log_message *v) { int result = 4; { int i_0_0; for (i_0_0 = 0 ; i_0_0 < (*v).line.n_0 ; i_0_0++) { int i_0 = i_0_0; result += 4 + strlen((*v).line.a[i_0].data); result += 1; } } result += 4; return result; } static void decode_data( labcomm_decoder_t *d, void (*handle)( example_data *v, void *context ), void *context ) { example_data v; v = labcomm_decode_float(d); handle(&v, context); } void labcomm_decoder_register_example_data( struct labcomm_decoder *d, void (*handler)( example_data *v, void *context ), void *context ) { labcomm_internal_decoder_register( d, &labcomm_signature_example_data, (labcomm_decoder_typecast_t)decode_data, (labcomm_handler_typecast_t)handler, context ); } static void encode_data( labcomm_encoder_t *e, example_data *v ) { e->writer.write(&e->writer, labcomm_writer_start); labcomm_encode_type_index(e, &labcomm_signature_example_data); { labcomm_encode_float(e, (*v)); } e->writer.write(&e->writer, labcomm_writer_end); } void labcomm_encode_example_data( labcomm_encoder_t *e, example_data *v ) { labcomm_internal_encode(e, &labcomm_signature_example_data, v); } void labcomm_encoder_register_example_data( struct labcomm_encoder *e ) { labcomm_internal_encoder_register( e, &labcomm_signature_example_data, (labcomm_encode_typecast_t)encode_data ); } int labcomm_sizeof_example_data(example_data *v) { return 8; }