1 /*
2 ** upb_encode: parsing into a upb_msg using a upb_msglayout.
3 */
4
5 #ifndef UPB_ENCODE_H_
6 #define UPB_ENCODE_H_
7
8 #include "upb/msg.h"
9
10 /* Must be last. */
11 #include "upb/port_def.inc"
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 enum {
18 /* If set, the results of serializing will be deterministic across all
19 * instances of this binary. There are no guarantees across different
20 * binary builds.
21 *
22 * If your proto contains maps, the encoder will need to malloc()/free()
23 * memory during encode. */
24 UPB_ENCODE_DETERMINISTIC = 1,
25
26 /* When set, unknown fields are not printed. */
27 UPB_ENCODE_SKIPUNKNOWN = 2,
28 };
29
30 #define UPB_ENCODE_MAXDEPTH(depth) ((depth) << 16)
31
32 char *upb_encode_ex(const void *msg, const upb_msglayout *l, int options,
33 upb_arena *arena, size_t *size);
34
upb_encode(const void * msg,const upb_msglayout * l,upb_arena * arena,size_t * size)35 UPB_INLINE char *upb_encode(const void *msg, const upb_msglayout *l,
36 upb_arena *arena, size_t *size) {
37 return upb_encode_ex(msg, l, 0, arena, size);
38 }
39
40 #include "upb/port_undef.inc"
41
42 #ifdef __cplusplus
43 } /* extern "C" */
44 #endif
45
46 #endif /* UPB_ENCODE_H_ */
47