Simple buffer "subclass" of `ProtobufCBuffer`. A `ProtobufCBufferSimple` object is declared on the stack and uses a scratch buffer provided by the user for the initial allocation. It performs exponential resizing, using dynamically allocated memory. A `ProtobufCBufferSimple` object can be created and used as follows: ~~~{.c} uint8_t pad[128]; ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad); ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple; ~~~ `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a message has been serialized to a `ProtobufCBufferSimple` object, the serialized data bytes can be accessed from the `.data` field. To free the memory allocated by a `ProtobufCBufferSimple` object, if any, call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example: ~~~{.c} PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple); ~~~ \see PROTOBUF_C_BUFFER_SIMPLE_INIT \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR