xref: /aosp_15_r20/external/nanopb-c/tests/map/encode_map.c (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard Worker /* Encode a message using map field */
2*c8d645caSAndroid Build Coastguard Worker 
3*c8d645caSAndroid Build Coastguard Worker #include <stdio.h>
4*c8d645caSAndroid Build Coastguard Worker #include <stdlib.h>
5*c8d645caSAndroid Build Coastguard Worker #include <pb_encode.h>
6*c8d645caSAndroid Build Coastguard Worker #include "map.pb.h"
7*c8d645caSAndroid Build Coastguard Worker #include "test_helpers.h"
8*c8d645caSAndroid Build Coastguard Worker 
main(int argc,char ** argv)9*c8d645caSAndroid Build Coastguard Worker int main(int argc, char **argv)
10*c8d645caSAndroid Build Coastguard Worker {
11*c8d645caSAndroid Build Coastguard Worker     uint8_t buffer[MyMessage_size];
12*c8d645caSAndroid Build Coastguard Worker     MyMessage msg = MyMessage_init_zero;
13*c8d645caSAndroid Build Coastguard Worker     pb_ostream_t stream;
14*c8d645caSAndroid Build Coastguard Worker 
15*c8d645caSAndroid Build Coastguard Worker     /* Fill in the map entries */
16*c8d645caSAndroid Build Coastguard Worker     msg.numbers_count = 3;
17*c8d645caSAndroid Build Coastguard Worker     strncpy(msg.numbers[0].key, "one", sizeof(msg.numbers[0].key));
18*c8d645caSAndroid Build Coastguard Worker     strncpy(msg.numbers[1].key, "two", sizeof(msg.numbers[1].key));
19*c8d645caSAndroid Build Coastguard Worker     strncpy(msg.numbers[2].key, "seven", sizeof(msg.numbers[2].key));
20*c8d645caSAndroid Build Coastguard Worker     msg.numbers[0].value = 1;
21*c8d645caSAndroid Build Coastguard Worker     msg.numbers[1].value = 2;
22*c8d645caSAndroid Build Coastguard Worker     msg.numbers[2].value = 7;
23*c8d645caSAndroid Build Coastguard Worker 
24*c8d645caSAndroid Build Coastguard Worker     stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
25*c8d645caSAndroid Build Coastguard Worker 
26*c8d645caSAndroid Build Coastguard Worker     if (pb_encode(&stream, MyMessage_fields, &msg))
27*c8d645caSAndroid Build Coastguard Worker     {
28*c8d645caSAndroid Build Coastguard Worker         SET_BINARY_MODE(stdout);
29*c8d645caSAndroid Build Coastguard Worker         fwrite(buffer, 1, stream.bytes_written, stdout);
30*c8d645caSAndroid Build Coastguard Worker         return 0;
31*c8d645caSAndroid Build Coastguard Worker     }
32*c8d645caSAndroid Build Coastguard Worker     else
33*c8d645caSAndroid Build Coastguard Worker     {
34*c8d645caSAndroid Build Coastguard Worker         fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream));
35*c8d645caSAndroid Build Coastguard Worker         return 1;
36*c8d645caSAndroid Build Coastguard Worker     }
37*c8d645caSAndroid Build Coastguard Worker }
38