1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* A very simple encoding test case using person.proto. 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Just puts constant data in the fields and encodes into 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * buffer, which is then written to stdout. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdio.h> 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <pb_encode.h> 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "person.pb.h" 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "test_helpers.h" 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint main() 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint8_t buffer[Person_size]; 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org pb_ostream_t stream; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Initialize the structure with constants */ 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Person person = {"Test Person 99", 99, true, "test@person.com", 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 3, {{"555-12345678", true, Person_PhoneType_MOBILE}, 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {"99-2342", false, 0}, 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {"1234-5678", true, Person_PhoneType_WORK}, 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }}; 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org stream = pb_ostream_from_buffer(buffer, sizeof(buffer)); 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Now encode it and check if we succeeded. */ 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pb_encode(&stream, Person_fields, &person)) 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Write the result data to stdout */ 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_BINARY_MODE(stdout); 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fwrite(buffer, 1, stream.bytes_written, stdout); 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 0; /* Success */ 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream)); 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 1; /* Failure */ 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org