Merge the generated has_<name> fields into a single one.

git-svn-id: https://svn.kapsi.fi/jpa/nanopb-dev@1008 e3a754e5-d11d-0410-8d38-ebb782a927b9
This commit is contained in:
Michael Poole
2011-11-13 18:10:19 +00:00
committed by Petteri Aimonen
parent 43b8e20744
commit 8e5337e9ef
12 changed files with 87 additions and 40 deletions

View File

@@ -250,14 +250,34 @@ generates these declarations and definitions for the structure *Person_PhoneNumb
pb_membersize(Person_PhoneNumber, number), 0, 0},
{2, PB_HTYPE_OPTIONAL | PB_LTYPE_VARINT,
pb_delta_end(Person_PhoneNumber, type, number),
pb_delta(Person_PhoneNumber, has_type, type),
pb_delta_end(Person_PhoneNumber, type, number), 0,
pb_membersize(Person_PhoneNumber, type), 0,
&Person_PhoneNumber_type_default},
}
};
#define Person_PhoneNumber_has(STRUCT, FIELD) PB_HAS_FIELD(STRUCT, Person_PhoneNumber, FIELD)
#define Person_PhoneNumber_set(STRUCT, FIELD) PB_SET_FIELD(STRUCT, Person_PhoneNumber, FIELD)
#define Person_PhoneNumber_clear(STRUCT, FIELD) PB_CLEAR_FIELD(STRUCT, Person_PhoneNumber, FIELD)
#define Person_PhoneNumber_number_index 0
#define Person_PhoneNumber_number_tag 1
#define Person_PhoneNumber_type_index 1
#define Person_PhoneNumber_type_tag 2
Optional Fields
===============
The *has_fields* member of each generated structure is an array where
each bit indicates the presence of the corresponding (optional) field.
The generated header file provides helper macros to read and update
that array; in the previous example, they are
*Person_PhoneNumber_has*, *Person_PhoneNumber_set* and
*Person_PhoneNumber_clear*.
For convenience, *pb_encode* only checks these bits for optional
fields. *pb_decode* sets the corresponding bit for every field it
decodes, whether the field is optional or not.
Return values and error handling
================================