Petteri Aimonen
214b0eae8a
Change the callback function to use void**.
...
NOTE: This change breaks backwards-compatibility by default.
If you have old callback functions, you can define PB_OLD_CALLBACK_STYLE
to retain the old behaviour.
If you want to convert your old callbacks to new signature, you need
to do the following:
1) Change decode callback argument to void **arg
and encode callback argument to void * const *arg.
2) Change any reference to arg into *arg.
The rationale for making the new behaviour the default is that it
simplifies the common case of "allocate some memory in decode callback".
Update issue 69
Status: FixedInGit
2013-04-02 19:55:21 +03:00
Petteri Aimonen
6f3740f74e
Fix warning on clang.
...
Update issue 67
Status: FixedInGit
2013-03-13 15:34:12 +02:00
Petteri Aimonen
1396dce2ae
Add support for packed structures on IAR and MSVC.
...
Update issue 66
Status: FixedInGit
2013-03-13 15:22:00 +02:00
Petteri Aimonen
6468f23d23
Make the generator options accept a file name in addition to format string.
2013-03-09 23:03:09 +02:00
Petteri Aimonen
03e5393072
Add PB_SYSTEM_HEADER compile time option.
...
This allows replacing the C99 standard include file names with
a single system-specific file. It should provide all the necessary
system functions (typedefs, memset, memcpy, strlen).
Update issue 62
Status: FixedInGit
2013-03-09 14:56:34 +02:00
Petteri Aimonen
d580b225e8
Rename pb_field_iterator_t field 'current' to 'pos'.
...
This avoids a name clash when compiling as Linux kernel module.
Update issue 60
Status: FixedInGit
2013-03-09 14:52:38 +02:00
Petteri Aimonen
0352647118
Implement error message support for the encoder side.
...
Update issue 7
Status: FixedInGit
2013-03-09 14:49:15 +02:00
Petteri Aimonen
9b6641ac64
alltypes.proto no longer needs to include nanopb.proto
2013-03-09 14:45:41 +02:00
Petteri Aimonen
5f3bf35e01
Switch alltypes.proto to use the new .options file mechanism.
2013-03-09 14:23:44 +02:00
Petteri Aimonen
6f8dbc73eb
Add simple support for separate options file.
...
Update issue 12
Still needs documentation.
2013-03-09 14:21:21 +02:00
Petteri Aimonen
e1b8a555f3
Fix additional bug with empty message types.
...
pb_field_next() would access past the fields array.
2013-03-09 13:12:09 +02:00
Petteri Aimonen
60109c0be1
Add option to run the tests with mudflap to detect pointer errors.
2013-03-09 13:09:14 +02:00
Petteri Aimonen
96d4016838
Improve the fuzztest.
...
Enable -fstack-protector-all to detect any stack smashing bugs. Also
use test_decode3 for maximal vulnerable surface.
2013-03-09 12:51:47 +02:00
Petteri Aimonen
a9c88f5570
Fix error in backwards compatibility testcase
2013-03-09 12:43:35 +02:00
Petteri Aimonen
d2e3c1ad93
Fix bug with decoding empty message types. Add test for the same.
...
Note: the bug only applies to empty message types. Empty messages
of non-empty message types are not affected.
Update issue 65
Status: FixedInGit
2013-03-09 12:35:07 +02:00
Petteri Aimonen
5522e02133
Add a dummy field if struct would otherwise be empty.
...
Update issue 64
Status: FixedInGit
2013-03-06 18:02:57 +02:00
Petteri Aimonen
64bf72d73d
Add generator option to configure #include directives.
...
This suits complex projects, where there are multiple interdependent .proto files
in various directories. Patch by Michael Haberler.
2013-03-04 19:27:42 +02:00
Petteri Aimonen
104710b26c
Setting version to 0.2.1-dev
2013-03-02 16:35:17 +02:00
Petteri Aimonen
c8e0732e6b
Publishing nanopb-0.2.0
nanopb-0.2.0
2013-03-02 16:32:54 +02:00
Petteri Aimonen
86ae2541e6
Update changelog
2013-03-02 16:32:15 +02:00
Petteri Aimonen
f8a143fdfe
Update documentation
2013-03-02 16:27:31 +02:00
Petteri Aimonen
0e3053894f
Add --extension option to generator.
...
Patch courtesy of Michael Haberler.
2013-02-28 16:42:34 +02:00
Pavel Ilin
57e81ca73b
Added CMake file for use in projects linking against nanopb.
2013-02-22 20:25:39 +02:00
Petteri Aimonen
5442e690f6
Merge branch 'dev-0.2'
2013-02-21 19:38:56 +02:00
Petteri Aimonen
80a2d33fa9
Move STATIC_ASSERTs to .pb.c file.
...
This way the .pb.h will remain cleaner and easier to read.
2013-02-21 19:35:20 +02:00
Petteri Aimonen
41f98343c8
Separate PB_HTYPE to PB_ATYPE and PB_HTYPE.
...
Also clean up the logic so that it is easier to implement more
allocation types in the future.
Update issue 53
Status: FixedInGit
2013-02-20 22:55:59 +02:00
Petteri Aimonen
69085d9387
Rename PB_HTYPE_ARRAY -> PB_HTYPE_REPEATED.
...
This is a more logical name in parallel with PB_HTYPE_REQUIRED and PB_HTYPE_OPTIONAL.
Warning: This breaks backwards-compatibility of generated .pb.c files.
You will have to regenerate the files and recompile.
2013-02-20 21:58:18 +02:00
Petteri Aimonen
258ba8335d
Reformat generated .pb.c files using macros.
...
This has the following advantages:
1) Easier to modify pb_field_t encoding
2) Simpler generator logic
3) Tidier looking, easier to read .pb.c files
Update issue 58
Status: FixedInGit
2013-02-17 00:10:47 +02:00
Petteri Aimonen
5b536d40a1
Setting version to 0.1.9.1-dev
2013-02-13 21:13:35 +02:00
Petteri Aimonen
4cc3372b03
Publishing nanopb-0.1.9
nanopb-0.1.9
2013-02-13 21:12:09 +02:00
Petteri Aimonen
9d3d7b5730
Add gitignore.
...
This is a bit bloated gitignore file. Having binaries
in a separate build directory would be cleaner, but I don't
bother to make that change now.
2013-02-11 22:03:14 +02:00
Petteri Aimonen
ec4a7a0cce
Replace pb_type_t enum with #defines.
...
See issue #57 .
2013-02-11 21:55:55 +02:00
Petteri Aimonen
c1a355b23e
Set version to 0.2.0-dev
2013-02-11 21:54:24 +02:00
Petteri Aimonen
22e0a78e5e
Update changelog
2013-02-07 18:06:42 +02:00
Petteri Aimonen
c1bd1a6ad3
Fix error message bugs with packed arrays.
...
Error messages were not propagated correctly with PB_HTYPE_ARRAY.
Error status (boolean return value) was correct.
Update issue 56
Status: FixedInGit
2013-02-07 17:56:52 +02:00
Petteri Aimonen
e7bf063abc
Add check for sizeof(double) == 8.
...
Update issue 54
Status: FixedInGit
2013-02-07 17:48:50 +02:00
Petteri Aimonen
47b10ec0ab
Sanitize filenames before putting them in #ifndef.
...
Update issue 50
Status: FixedInGit
2013-02-07 17:40:17 +02:00
Petteri Aimonen
4b7ddabbcf
Fix compiler warning on MSVC (issue #57 )
2013-02-07 17:19:53 +02:00
Petteri Aimonen
c3729599b0
Use unsigned datatypes where appropriate.
2013-02-06 22:18:52 +02:00
Petteri Aimonen
4f379364b3
Improve the pb_decode_varint implementations.
...
Results for ARM: -4% execution time, +1% code size
2013-02-06 22:11:02 +02:00
Petteri Aimonen
d23939d688
Avoid unnecessary looping in required fields check.
...
Results for ARM: -6% execution time, -1% code size
2013-02-06 21:52:59 +02:00
Petteri Aimonen
4ba6a3027d
Add compile-time option PB_BUFFER_ONLY.
...
This allows slight optimizations if only memory buffer support
(as opposed to stream callbacks) is wanted. On ARM difference
is -12% execution time, -4% code size when enabled.
2013-02-06 20:54:25 +02:00
Petteri Aimonen
39b8a5e2bb
Make pb_decode_varint32 a separate implementation.
...
This avoids doing 64-bit arithmetic for 32-bit varint decodings.
It does increase the code size somewhat.
Results for ARM Cortex-M3: -10% execution time, +1% code size, -2% ram usage.
2013-02-05 22:39:32 +02:00
Petteri Aimonen
c372ebc665
Performance improvement: replace memcpy with loop.
...
In the pb_istream_from_buffer and pb_ostream_from_buffer, memcpy was
used to transfer values to the buffer. For the common case of
count = 1-10 bytes, a simple loop is faster.
2013-02-05 22:06:36 +02:00
Petteri Aimonen
38ced18639
Add Java package name to nanopb.proto.
...
This fixes problems when interoperating with Java.
Fix suggested by trepidacious:
https://groups.google.com/forum/#!topic/nanopb/hZgrj6h9OnY
2013-02-05 11:47:37 +02:00
Petteri Aimonen
e4b55179d1
Add an example of handling doubles on AVR platform.
2013-01-29 22:10:37 +02:00
Petteri Aimonen
2392d25574
Fix misleading comment (current generator sets LTYPE always).
2013-01-21 21:18:38 +02:00
Petteri Aimonen
eab4151a99
Oops, typoed #ifdef; again fixing previous commit.
2013-01-16 16:32:48 +02:00
Petteri Aimonen
8e840cc81a
Put previous commit (issue 52) inside #ifndef
2013-01-16 16:31:45 +02:00
Petteri Aimonen
88eba4bc27
Fix bug with error messages.
...
Update issue 52
Status: FixedInGit
2013-01-16 16:28:51 +02:00