Age | Commit message (Collapse) | Author | Files | Lines |
|
This commit adds a new FT_INLINE allocation type that forces bytes
fields to be inlined into the struct. E.g., pb_byte_t my_bytes[32].
This requires max_size for the bytes field. The FT_INLINE type is
represented as a new LTYPE: FT_LTYPE_FIXED_LENGTH_BYTES.
This commit also updates the documentation with FT_INLINE and
FT_LTYPE_FIXED_LENGTH_BYTES.
Added an AUTHORS file in apparent order of appearance in the git log
history from $(git log --all).
|
|
Add bazel BUILD file for nanopb.
|
|
|
|
Fix suggested by Ulenspiegel.
Also added testcase for the same.
|
|
|
|
|
|
|
|
|
|
Fixes a potential security issue (#205). Only relevant if the user
code writes untrusted data to _count fields, but this is allowed as
per the security model.
|
|
|
|
Attempt at reproducing issue #204.
|
|
|
|
The FieldMaxSize class was reusing the same list instance,
causing problems when multiple files were specified on the
protoc command line.
|
|
|
|
Added explanation of `oneof` section usage
|
|
|
|
|
|
|
|
Update API reference to match headers
|
|
Update typedefs and function prototypes in the API reference to match
header files. Delete documentation for pb_skip_varint/pb_skip_string,
which are superseded by pb_skip_field, and add pb_get_encoded_size.
|
|
|
|
Generate MIN/MAX/ARRAYSIZE for enums
|
|
Add -D option to specify output directory
|
|
This generates #defines mirroring the following values from the generated C++ code of GPB
* const Foo Foo_MIN: the smallest valid value of the enum (VALUE_A in the example).
* const Foo Foo_MAX: the largest valid value of the enum (VALUE_C in the example).
* const Foo Foo_ARRAYSIZE: always defined as Foo_MAX + 1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is now handled automatically using shift operations.
|
|
|
|
This supports platforms where uint8_t does not exist.
If you are using a custom pb_syshdr.h, this may require adding
definitions for uint_least8_t etc.
|
|
This will still catch the most common bug of long int vs. long long int.
The uint8_t checks do not seem necessary, test for this will be added
in later commit.
|
|
This was never very clean code, but it was fast. Hopefully
compilers are smart enough to optimize it away, or the speed
difference is not very large. This should be checked.
However working code is always more important than fast code,
and the previous way couldn't really work for platforms that
do not have byte-sized memory access. Related to PR #191.
|
|
pb_istream_from_buffer: add const to prototype
|
|
This commit changes the prototype for pb_istream_from_buffer from:
pb_istream_t pb_istream_from_buffer(uint8_t *buf, size_t bufsize);
to
pb_istream_t pb_istream_from_buffer(const uint8_t *buf, size_t bufsize);
This allows pb_istream_from_buffer users to point to const buffers
without having to inspect code (to ensure practical const-ness) and then be
forced to manually cast away const.
In order to not break compatibility with existing programs (by
introducing a const/non-const union in the pb_istream_t state) we simply
cast away the const in pb_istream_from_buffer and re-apply it when
possible in the callbacks. Unfortunately we lose any compiler help in
the callbacks to ensure we are treating the buffer as const but manual
inspection is easy enough.
|
|
|
|
Add testcase for the same.
|
|
|
|
|
|
Fixes compilation error with anonymous unions when
it is not the last field in message. Also fixes
extraneous newlines in header file. Cleanup the
pb.h extraneous use of ##.
|
|
|
|
|
|
|
|
Cmake updates
|
|
* No need to specify the src path and the module path. Let cmake do it.
|
|
* Use CMAKE_CURRENT_LIST_DIR to learn the path of the currently running
file to determine location of NanoPB.
* Simplifies use in other projects.
|
|
Treat the source directory as immutable. Copy the generator directory
which previously generated files in-tree to the build directory and
then generate files.
Many emerging continuous integration build systems test builds across
multiple versions of dependencies protobuf and python versions in
particular. The previous source tree builds resulted in stale files
from the last build breaking the current build. By placing the build
files in the build directory, the build system automatically removes
stale files (removes output build directory) and regenerates them as
necessary.
|