Google Protocol Buffers tools.
Project description
About
!!! Work in progress !!!
Google Protocol Buffers tools in Python 3.6+.
C source code generator.
Only supports proto3.
Project homepage: https://github.com/eerimoq/pbtools
Documentation: http://pbtools.readthedocs.org/en/latest
Installation
pip install pbtools
Example usage
C source code
In this example we use the simple proto-file hello_world.proto.
syntax = "proto3";
package hello_world;
message Foo {
int32 bar = 1;
}
Next we generate C source code from the proto-file.
$ pbtools generate_c_source examples/hello_world/hello_world.proto
Successfully created hello_world.[hc].
See hello_world.h and hello_world.c for the contents of the generated files.
We’ll use the generated types and functions below.
struct hello_world_foo_t {
struct pbtools_message_base_t base;
int32_t bar;
};
struct hello_world_foo_t *hello_world_foo_new(
void *workspace_p,
size_t size);
int hello_world_foo_encode(
struct hello_world_foo_t *self_p,
void *encoded_p,
size_t size);
int hello_world_foo_decode(
struct hello_world_foo_t *self_p,
const uint8_t *encoded_p,
size_t size);
Encode and decode the Foo-message.
#include <stdio.h>
#include "hello_world.h"
int main(int argc, const char *argv[])
{
int size;
uint8_t workspace[64];
uint8_t encoded[16];
struct hello_world_foo_t *foo_p;
/* Encode. */
foo_p = hello_world_foo_new(&workspace[0], sizeof(workspace));
if (foo_p == NULL) {
return (1);
}
foo_p->bar = 78;
size = hello_world_foo_encode(foo_p, &encoded[0], sizeof(encoded));
if (size < 0) {
return (2);
}
printf("Successfully encoded Foo into %d bytes.\n", size);
/* Decode. */
foo_p = hello_world_foo_new(&workspace[0], sizeof(workspace));
if (foo_p == NULL) {
return (3);
}
size = hello_world_foo_decode(foo_p, &encoded[0], size);
if (size < 0) {
return (4);
}
printf("Successfully decoded %d bytes into Foo.\n", size);
printf("Foo.bar: %d\n", foo_p->bar);
return (0);
}
See hello_world for all files used in this example.
Command line tool
The generate C source subcommand
Below is an example of how to generate C source code from a proto-file.
$ pbtools generate_c_source examples/address_book/address_book.proto
Successfully created address_book.[hc].
See address_book.h and address_book.c for the contents of the generated files.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pbtools-0.3.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a82a8c75ffecf7ae4f9f2b2007aa3037bce8a4f91b108d92e2ed28863dc3c9b0 |
|
MD5 | db5c6d76a8181c338172882acee87c83 |
|
BLAKE2b-256 | aa2127ec58a6089c9c1540309d5ace69a91121b727b5d269fab521431ca2cb6d |