/* Encode a message using map field */ #include #include #include #include "map.pb.h" #include "test_helpers.h" int main(int argc, char **argv) { uint8_t buffer[MyMessage_size]; MyMessage msg = MyMessage_init_zero; pb_ostream_t stream; /* Fill in the map entries */ msg.numbers_count = 3; strncpy(msg.numbers[0].key, "one", sizeof(msg.numbers[0].key)); strncpy(msg.numbers[1].key, "two", sizeof(msg.numbers[1].key)); strncpy(msg.numbers[2].key, "seven", sizeof(msg.numbers[2].key)); msg.numbers[0].value = 1; msg.numbers[1].value = 2; msg.numbers[2].value = 7; stream = pb_ostream_from_buffer(buffer, sizeof(buffer)); if (pb_encode(&stream, MyMessage_fields, &msg)) { SET_BINARY_MODE(stdout); fwrite(buffer, 1, stream.bytes_written, stdout); return 0; } else { fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream)); return 1; } }