|
|
|
/*
|
|
|
|
* upb - a minimalist implementation of protocol buffers.
|
|
|
|
*
|
|
|
|
* Definitions that will emit code for inline functions, per C99 inlining
|
|
|
|
* rules (see http://www.greenend.org.uk/rjk/2003/03/inline.html).
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "upb_struct.h"
|
|
|
|
|
|
|
|
#define UPB_DECLARE_ACCESSORS(ctype, name) \
|
|
|
|
extern ctype *upb_struct_get_ ## name ## _ptr( \
|
|
|
|
uint8_t *s, struct upb_struct_field *f); \
|
|
|
|
extern ctype upb_struct_get_ ## name( \
|
|
|
|
uint8_t *s, struct upb_struct_field *f); \
|
|
|
|
extern void upb_struct_set_ ## name( \
|
|
|
|
uint8_t *s, struct upb_struct_field *f, ctype val);
|
|
|
|
|
|
|
|
#define UPB_DECLARE_ARRAY_ACCESSORS(ctype, name) \
|
|
|
|
extern ctype *upb_array_get_ ## name ## _ptr(struct upb_array *a, int n); \
|
|
|
|
extern ctype upb_array_get_ ## name(struct upb_array *a, int n); \
|
|
|
|
extern void upb_array_set_ ## name(struct upb_array *a, int n, ctype val);
|
|
|
|
|
|
|
|
#define UPB_DECLARE_ALL_ACCESSORS(ctype, name) \
|
|
|
|
UPB_DECLARE_ACCESSORS(ctype, name) \
|
|
|
|
UPB_DECLARE_ARRAY_ACCESSORS(ctype, name)
|
|
|
|
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(double, double)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(float, float)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(int32_t, int32)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(int64_t, int64)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(uint32_t, uint32)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(uint64_t, uint64)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(bool, bool)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(struct upb_struct_delimited*, bytes)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(struct upb_struct_delimited*, string)
|
|
|
|
UPB_DECLARE_ALL_ACCESSORS(uint8_t*, substruct)
|
|
|
|
UPB_DECLARE_ACCESSORS(struct upb_array*, array)
|
|
|
|
|
|
|
|
extern void upb_struct_set(uint8_t *s, struct upb_struct_field *f);
|
|
|
|
extern void upb_struct_unset(uint8_t *s, struct upb_struct_field *f);
|
|
|
|
extern bool upb_struct_is_set(uint8_t *s, struct upb_struct_field *f);
|
|
|
|
extern bool upb_struct_all_required_fields_set(
|
|
|
|
uint8_t *s, struct upb_struct_definition *d);
|
|
|
|
extern void upb_struct_clear(uint8_t *s, struct upb_struct_definition *d);
|
|
|
|
|