Ported Ruby to ABSL wyhash.
This commit is contained in:
parent
88e6a36562
commit
9d578a3a9c
File diff suppressed because it is too large
Load Diff
@ -168,7 +168,7 @@
|
||||
|
||||
/* Configure whether fasttable is switched on or not. *************************/
|
||||
|
||||
#if defined(__has_attribute)
|
||||
#ifdef __has_attribute
|
||||
#define UPB_HAS_ATTRIBUTE(x) __has_attribute(x)
|
||||
#else
|
||||
#define UPB_HAS_ATTRIBUTE(x) 0
|
||||
@ -636,6 +636,48 @@ void upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
||||
/* Returns a reference to the message's unknown data. */
|
||||
const char *upb_msg_getunknown(const upb_msg *msg, size_t *len);
|
||||
|
||||
/** upb_extreg *******************************************************************/
|
||||
|
||||
/* Extension registry: a dynamic data structure that stores a map of:
|
||||
* (upb_msglayout, number) -> extension info
|
||||
*
|
||||
* upb_decode() uses upb_extreg to look up extensions while parsing binary
|
||||
* format.
|
||||
*
|
||||
* upb_extreg is part of the mini-table (msglayout) family of objects. Like all
|
||||
* mini-table objects, it is suitable for reflection-less builds that do not
|
||||
* want to expose names into the binary.
|
||||
*
|
||||
* Unlike most mini-table types, upb_extreg requires dynamic memory allocation
|
||||
* and dynamic initialization:
|
||||
* * If reflection is being used, then upb_symtab will construct an appropriate
|
||||
* upb_extreg automatically.
|
||||
* * For a mini-table only build, the user must manually construct the
|
||||
* upb_extreg and populate it with all of the extensions the user cares about.
|
||||
* * A third alternative is to manually unpack relevant extensions after the
|
||||
* main parse is complete, similar to how Any works. This is perhaps the
|
||||
* nicest solution from the perspective of reducing dependencies, avoiding
|
||||
* dynamic memory allocation, and avoiding the need to parse uninteresting
|
||||
* extensions. The downsides are:
|
||||
* (1) parse errors are not caught during the main parse
|
||||
* (2) the CPU hit of parsing comes during access, which could cause an
|
||||
* undesirable stutter in application performance.
|
||||
*
|
||||
* Users cannot directly get or put into this map. Users can only add the
|
||||
* extensions from a generated module and pass the extension registry to the
|
||||
* binary decoder.
|
||||
*
|
||||
* A upb_symtab provides a upb_extreg, so any users who use reflection do not
|
||||
* need to populate a upb_extreg directly.
|
||||
*/
|
||||
|
||||
struct upb_extreg;
|
||||
typedef struct upb_extreg upb_extreg;
|
||||
|
||||
/* Creates a upb_extreg in the given arena. The arena must outlive any use of
|
||||
* the extreg. */
|
||||
upb_extreg *upb_extreg_new(upb_arena *arena);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
@ -657,12 +699,13 @@ enum {
|
||||
#define UPB_DECODE_MAXDEPTH(depth) ((depth) << 16)
|
||||
|
||||
bool _upb_decode(const char *buf, size_t size, upb_msg *msg,
|
||||
const upb_msglayout *l, upb_arena *arena, int options);
|
||||
const upb_msglayout *l, const upb_extreg *extreg, int options,
|
||||
upb_arena *arena);
|
||||
|
||||
UPB_INLINE
|
||||
bool upb_decode(const char *buf, size_t size, upb_msg *msg,
|
||||
const upb_msglayout *l, upb_arena *arena) {
|
||||
return _upb_decode(buf, size, msg, l, arena, 0);
|
||||
return _upb_decode(buf, size, msg, l, NULL, 0, arena);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -1047,9 +1090,34 @@ typedef struct {
|
||||
int16_t presence; /* If >0, hasbit_index. If <0, ~oneof_index. */
|
||||
uint16_t submsg_index; /* undefined if descriptortype != MESSAGE or GROUP. */
|
||||
uint8_t descriptortype;
|
||||
uint8_t label; /* google.protobuf.Label or _UPB_LABEL_* above. */
|
||||
int8_t mode; /* upb_fieldmode, with flags from upb_labelflags */
|
||||
} upb_msglayout_field;
|
||||
|
||||
typedef enum {
|
||||
_UPB_MODE_MAP = 0,
|
||||
_UPB_MODE_ARRAY = 1,
|
||||
_UPB_MODE_SCALAR = 2,
|
||||
} upb_fieldmode;
|
||||
|
||||
/* Extra flags on the mode field. */
|
||||
enum upb_labelflags {
|
||||
_UPB_MODE_IS_PACKED = 4,
|
||||
};
|
||||
|
||||
UPB_INLINE upb_fieldmode _upb_getmode(const upb_msglayout_field *field) {
|
||||
return (upb_fieldmode)(field->mode & 3);
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
|
||||
/* This works because upb_fieldmode has no value 3. */
|
||||
return !(field->mode & _UPB_MODE_SCALAR);
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_issubmsg(const upb_msglayout_field *field) {
|
||||
return field->descriptortype == UPB_DTYPE_MESSAGE ||
|
||||
field->descriptortype == UPB_DTYPE_GROUP;
|
||||
}
|
||||
|
||||
struct upb_decstate;
|
||||
struct upb_msglayout;
|
||||
|
||||
@ -1070,27 +1138,65 @@ struct upb_msglayout {
|
||||
uint16_t size;
|
||||
uint16_t field_count;
|
||||
bool extendable;
|
||||
uint8_t dense_below;
|
||||
uint8_t table_mask;
|
||||
/* To constant-initialize the tables of variable length, we need a flexible
|
||||
* array member, and we need to compile in C99 mode. */
|
||||
_upb_fasttable_entry fasttable[];
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
upb_msglayout_field field;
|
||||
const upb_msglayout *extendee;
|
||||
const upb_msglayout *submsg; /* NULL for non-submessage fields. */
|
||||
} upb_msglayout_ext;
|
||||
|
||||
/** upb_extreg ****************************************************************/
|
||||
|
||||
/* Adds the given extension info for message type |l| and field number |num|
|
||||
* into the registry. Returns false if this message type and field number were
|
||||
* already in the map, or if memory allocation fails. */
|
||||
bool _upb_extreg_add(upb_extreg *r, const upb_msglayout_ext *e, size_t count);
|
||||
|
||||
/* Looks up the extension (if any) defined for message type |l| and field
|
||||
* number |num|. If an extension was found, copies the field info into |*ext|
|
||||
* and returns true. Otherwise returns false. */
|
||||
const upb_msglayout_field *_upb_extreg_get(const upb_extreg *r,
|
||||
const upb_msglayout *l,
|
||||
uint32_t num);
|
||||
|
||||
/** upb_msg *******************************************************************/
|
||||
|
||||
/* Internal members of a upb_msg. We can change this without breaking binary
|
||||
* compatibility. We put these before the user's data. The user's upb_msg*
|
||||
* points after the upb_msg_internal. */
|
||||
/* Internal members of a upb_msg that track unknown fields and/or extensions.
|
||||
* We can change this without breaking binary compatibility. We put these
|
||||
* before the user's data. The user's upb_msg* points after the
|
||||
* upb_msg_internal. */
|
||||
|
||||
typedef struct {
|
||||
uint32_t len;
|
||||
/* Total size of this structure, including the data that follows.
|
||||
* Must be aligned to 8, which is alignof(upb_msg_ext) */
|
||||
uint32_t size;
|
||||
/* Data follows. */
|
||||
} upb_msg_unknowndata;
|
||||
|
||||
/* Used when a message is not extendable. */
|
||||
/* Offsets relative to the beginning of this structure.
|
||||
*
|
||||
* Unknown data grows forward from the beginning to unknown_end.
|
||||
* Extension data grows backward from size to ext_begin.
|
||||
* When the two meet, we're out of data and have to realloc.
|
||||
*
|
||||
* If we imagine that the final member of this struct is:
|
||||
* char data[size - overhead]; // overhead = sizeof(upb_msg_internaldata)
|
||||
*
|
||||
* Then we have:
|
||||
* unknown data: data[0 .. (unknown_end - overhead)]
|
||||
* extensions data: data[(ext_begin - overhead) .. (size - overhead)] */
|
||||
uint32_t unknown_end;
|
||||
uint32_t ext_begin;
|
||||
/* Data follows, as if there were an array:
|
||||
* char data[size - sizeof(upb_msg_internaldata)]; */
|
||||
} upb_msg_internaldata;
|
||||
|
||||
typedef struct {
|
||||
upb_msg_unknowndata *unknown;
|
||||
upb_msg_internaldata *internal;
|
||||
} upb_msg_internal;
|
||||
|
||||
/* Maps upb_fieldtype_t -> memory size. */
|
||||
@ -1129,6 +1235,35 @@ void _upb_msg_discardunknown_shallow(upb_msg *msg);
|
||||
bool _upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
||||
upb_arena *arena);
|
||||
|
||||
/** upb_msg_ext ***************************************************************/
|
||||
|
||||
/* The internal representation of an extension is self-describing: it contains
|
||||
* enough information that we can serialize it to binary format without needing
|
||||
* to look it up in a registry. */
|
||||
typedef struct {
|
||||
const upb_msglayout_ext *ext;
|
||||
union {
|
||||
upb_strview str;
|
||||
void *ptr;
|
||||
double dbl;
|
||||
char scalar_data[8];
|
||||
} data;
|
||||
} upb_msg_ext;
|
||||
|
||||
/* Adds the given extension data to the given message. The returned extension will
|
||||
* have its "ext" member initialized according to |ext|. */
|
||||
upb_msg_ext *_upb_msg_getorcreateext(upb_msg *msg, const upb_msglayout_ext *ext,
|
||||
upb_arena *arena);
|
||||
|
||||
/* Returns an array of extensions for this message. Note: the array is
|
||||
* ordered in reverse relative to the order of creation. */
|
||||
const upb_msg_ext *_upb_msg_getexts(const upb_msg *msg, size_t *count);
|
||||
|
||||
/* Returns an extension for the given field number, or NULL if no extension
|
||||
* exists for this field number. */
|
||||
const upb_msg_ext *_upb_msg_getext(const upb_msg *msg,
|
||||
const upb_msglayout_ext *ext);
|
||||
|
||||
/** Hasbit access *************************************************************/
|
||||
|
||||
UPB_INLINE bool _upb_hasbit(const upb_msg *msg, size_t idx) {
|
||||
@ -1192,14 +1327,6 @@ UPB_INLINE bool _upb_has_submsg_nohasbit(const upb_msg *msg, size_t ofs) {
|
||||
return *UPB_PTR_AT(msg, ofs, const upb_msg*) != NULL;
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_isrepeated(const upb_msglayout_field *field) {
|
||||
return (field->label & 3) == UPB_LABEL_REPEATED;
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
|
||||
return field->label >= UPB_LABEL_REPEATED;
|
||||
}
|
||||
|
||||
/** upb_array *****************************************************************/
|
||||
|
||||
/* Our internal representation for repeated fields. */
|
||||
@ -2121,13 +2248,19 @@ UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_
|
||||
UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileDescriptorSet_serialize(const google_protobuf_FileDescriptorSet *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileDescriptorSet_msginit, arena, len);
|
||||
@ -2158,13 +2291,19 @@ UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorPr
|
||||
UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileDescriptorProto_serialize(const google_protobuf_FileDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileDescriptorProto_msginit, arena, len);
|
||||
@ -2321,13 +2460,19 @@ UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_new(
|
||||
UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_serialize(const google_protobuf_DescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_msginit, arena, len);
|
||||
@ -2480,13 +2625,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_Descr
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_ExtensionRange_serialize(const google_protobuf_DescriptorProto_ExtensionRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, len);
|
||||
@ -2529,13 +2680,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_Descri
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_ReservedRange_serialize(const google_protobuf_DescriptorProto_ReservedRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, len);
|
||||
@ -2563,13 +2720,19 @@ UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRange
|
||||
UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ExtensionRangeOptions_serialize(const google_protobuf_ExtensionRangeOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, arena, len);
|
||||
@ -2600,13 +2763,19 @@ UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptor
|
||||
UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FieldDescriptorProto_serialize(const google_protobuf_FieldDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FieldDescriptorProto_msginit, arena, len);
|
||||
@ -2697,13 +2866,19 @@ UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptor
|
||||
UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_OneofDescriptorProto_serialize(const google_protobuf_OneofDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_OneofDescriptorProto_msginit, arena, len);
|
||||
@ -2740,13 +2915,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorPr
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumDescriptorProto_serialize(const google_protobuf_EnumDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumDescriptorProto_msginit, arena, len);
|
||||
@ -2824,13 +3005,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobu
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumDescriptorProto_EnumReservedRange_serialize(const google_protobuf_EnumDescriptorProto_EnumReservedRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, len);
|
||||
@ -2858,13 +3045,19 @@ UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDe
|
||||
UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumValueDescriptorProto_serialize(const google_protobuf_EnumValueDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, arena, len);
|
||||
@ -2907,13 +3100,19 @@ UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescri
|
||||
UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ServiceDescriptorProto_serialize(const google_protobuf_ServiceDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, arena, len);
|
||||
@ -2965,13 +3164,19 @@ UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescript
|
||||
UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MethodDescriptorProto_serialize(const google_protobuf_MethodDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MethodDescriptorProto_msginit, arena, len);
|
||||
@ -3032,13 +3237,19 @@ UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_new(upb_aren
|
||||
UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileOptions_serialize(const google_protobuf_FileOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileOptions_msginit, arena, len);
|
||||
@ -3189,13 +3400,19 @@ UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_new(up
|
||||
UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MessageOptions_serialize(const google_protobuf_MessageOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MessageOptions_msginit, arena, len);
|
||||
@ -3250,13 +3467,19 @@ UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_new(upb_ar
|
||||
UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FieldOptions_serialize(const google_protobuf_FieldOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FieldOptions_msginit, arena, len);
|
||||
@ -3323,13 +3546,19 @@ UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_new(upb_ar
|
||||
UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_OneofOptions_serialize(const google_protobuf_OneofOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_OneofOptions_msginit, arena, len);
|
||||
@ -3360,13 +3589,19 @@ UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_new(upb_aren
|
||||
UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumOptions_serialize(const google_protobuf_EnumOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumOptions_msginit, arena, len);
|
||||
@ -3409,13 +3644,19 @@ UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_ne
|
||||
UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumValueOptions_serialize(const google_protobuf_EnumValueOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumValueOptions_msginit, arena, len);
|
||||
@ -3452,13 +3693,19 @@ UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_new(up
|
||||
UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ServiceOptions_serialize(const google_protobuf_ServiceOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ServiceOptions_msginit, arena, len);
|
||||
@ -3495,13 +3742,19 @@ UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_new(upb_
|
||||
UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MethodOptions_serialize(const google_protobuf_MethodOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MethodOptions_msginit, arena, len);
|
||||
@ -3544,13 +3797,19 @@ UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOpt
|
||||
UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_UninterpretedOption_serialize(const google_protobuf_UninterpretedOption *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_UninterpretedOption_msginit, arena, len);
|
||||
@ -3617,13 +3876,19 @@ UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_Uninter
|
||||
UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_UninterpretedOption_NamePart_serialize(const google_protobuf_UninterpretedOption_NamePart *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, len);
|
||||
@ -3651,13 +3916,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_new(up
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_SourceCodeInfo_serialize(const google_protobuf_SourceCodeInfo *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_SourceCodeInfo_msginit, arena, len);
|
||||
@ -3688,13 +3959,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeIn
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_SourceCodeInfo_Location_serialize(const google_protobuf_SourceCodeInfo_Location *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, arena, len);
|
||||
@ -3755,13 +4032,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_GeneratedCodeInfo_serialize(const google_protobuf_GeneratedCodeInfo *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, arena, len);
|
||||
@ -3792,13 +4075,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_Generat
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_GeneratedCodeInfo_Annotation_serialize(const google_protobuf_GeneratedCodeInfo_Annotation *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, len);
|
||||
|
@ -78,12 +78,6 @@ if RUBY_PLATFORM == "java"
|
||||
system("mvn --batch-mode package")
|
||||
end
|
||||
else
|
||||
unless ENV['IN_DOCKER'] == 'true'
|
||||
# We need wyhash in-tree.
|
||||
FileUtils.mkdir_p("ext/google/protobuf_c/third_party/wyhash")
|
||||
FileUtils.cp("../third_party/wyhash/wyhash.h", "ext/google/protobuf_c/third_party/wyhash/wyhash.h")
|
||||
end
|
||||
|
||||
Rake::ExtensionTask.new("protobuf_c", spec) do |ext|
|
||||
unless RUBY_PLATFORM =~ /darwin/
|
||||
# TODO: also set "no_native to true" for mac if possible. As is,
|
||||
|
@ -41,7 +41,6 @@
|
||||
|
||||
#include "message.h"
|
||||
#include "protobuf.h"
|
||||
#include "third_party/wyhash/wyhash.h"
|
||||
|
||||
static upb_strview Convert_StringData(VALUE str, upb_arena *arena) {
|
||||
upb_strview ret;
|
||||
@ -328,19 +327,19 @@ bool Msgval_IsEqual(upb_msgval val1, upb_msgval val2, TypeInfo type_info) {
|
||||
uint64_t Msgval_GetHash(upb_msgval val, TypeInfo type_info, uint64_t seed) {
|
||||
switch (type_info.type) {
|
||||
case UPB_TYPE_BOOL:
|
||||
return wyhash(&val, 1, seed, _wyp);
|
||||
return Wyhash(&val, 1, seed, kWyhashSalt);
|
||||
case UPB_TYPE_FLOAT:
|
||||
case UPB_TYPE_INT32:
|
||||
case UPB_TYPE_UINT32:
|
||||
case UPB_TYPE_ENUM:
|
||||
return wyhash(&val, 4, seed, _wyp);
|
||||
return Wyhash(&val, 4, seed, kWyhashSalt);
|
||||
case UPB_TYPE_DOUBLE:
|
||||
case UPB_TYPE_INT64:
|
||||
case UPB_TYPE_UINT64:
|
||||
return wyhash(&val, 8, seed, _wyp);
|
||||
return Wyhash(&val, 8, seed, kWyhashSalt);
|
||||
case UPB_TYPE_STRING:
|
||||
case UPB_TYPE_BYTES:
|
||||
return wyhash(val.str_val.data, val.str_val.size, seed, _wyp);
|
||||
return Wyhash(val.str_val.data, val.str_val.size, seed, kWyhashSalt);
|
||||
case UPB_TYPE_MESSAGE:
|
||||
return Message_Hash(val.msg_val, type_info.def.msgdef, seed);
|
||||
default:
|
||||
|
@ -17,5 +17,4 @@ end
|
||||
$objs = ["protobuf.o", "convert.o", "defs.o", "message.o",
|
||||
"repeated_field.o", "map.o", "ruby-upb.o", "wrap_memcpy.o"]
|
||||
|
||||
find_header('third_party/wyhash/wyhash.h', '../../../..')
|
||||
create_makefile("google/protobuf_c")
|
||||
|
@ -35,7 +35,6 @@
|
||||
#include "map.h"
|
||||
#include "protobuf.h"
|
||||
#include "repeated_field.h"
|
||||
#include "third_party/wyhash/wyhash.h"
|
||||
|
||||
static VALUE cParseError = Qnil;
|
||||
static ID descriptor_instancevar_interned;
|
||||
@ -717,7 +716,7 @@ uint64_t Message_Hash(const upb_msg* msg, const upb_msgdef* m, uint64_t seed) {
|
||||
&size);
|
||||
|
||||
if (data) {
|
||||
uint64_t ret = wyhash(data, size, seed, _wyp);
|
||||
uint64_t ret = Wyhash(data, size, seed, kWyhashSalt);
|
||||
upb_arena_free(arena);
|
||||
return ret;
|
||||
} else {
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "defs.h"
|
||||
#include "message.h"
|
||||
#include "protobuf.h"
|
||||
#include "third_party/wyhash/wyhash.h"
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Repeated field container type.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -636,6 +636,48 @@ void upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
||||
/* Returns a reference to the message's unknown data. */
|
||||
const char *upb_msg_getunknown(const upb_msg *msg, size_t *len);
|
||||
|
||||
/** upb_extreg *******************************************************************/
|
||||
|
||||
/* Extension registry: a dynamic data structure that stores a map of:
|
||||
* (upb_msglayout, number) -> extension info
|
||||
*
|
||||
* upb_decode() uses upb_extreg to look up extensions while parsing binary
|
||||
* format.
|
||||
*
|
||||
* upb_extreg is part of the mini-table (msglayout) family of objects. Like all
|
||||
* mini-table objects, it is suitable for reflection-less builds that do not
|
||||
* want to expose names into the binary.
|
||||
*
|
||||
* Unlike most mini-table types, upb_extreg requires dynamic memory allocation
|
||||
* and dynamic initialization:
|
||||
* * If reflection is being used, then upb_symtab will construct an appropriate
|
||||
* upb_extreg automatically.
|
||||
* * For a mini-table only build, the user must manually construct the
|
||||
* upb_extreg and populate it with all of the extensions the user cares about.
|
||||
* * A third alternative is to manually unpack relevant extensions after the
|
||||
* main parse is complete, similar to how Any works. This is perhaps the
|
||||
* nicest solution from the perspective of reducing dependencies, avoiding
|
||||
* dynamic memory allocation, and avoiding the need to parse uninteresting
|
||||
* extensions. The downsides are:
|
||||
* (1) parse errors are not caught during the main parse
|
||||
* (2) the CPU hit of parsing comes during access, which could cause an
|
||||
* undesirable stutter in application performance.
|
||||
*
|
||||
* Users cannot directly get or put into this map. Users can only add the
|
||||
* extensions from a generated module and pass the extension registry to the
|
||||
* binary decoder.
|
||||
*
|
||||
* A upb_symtab provides a upb_extreg, so any users who use reflection do not
|
||||
* need to populate a upb_extreg directly.
|
||||
*/
|
||||
|
||||
struct upb_extreg;
|
||||
typedef struct upb_extreg upb_extreg;
|
||||
|
||||
/* Creates a upb_extreg in the given arena. The arena must outlive any use of
|
||||
* the extreg. */
|
||||
upb_extreg *upb_extreg_new(upb_arena *arena);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
@ -657,12 +699,13 @@ enum {
|
||||
#define UPB_DECODE_MAXDEPTH(depth) ((depth) << 16)
|
||||
|
||||
bool _upb_decode(const char *buf, size_t size, upb_msg *msg,
|
||||
const upb_msglayout *l, upb_arena *arena, int options);
|
||||
const upb_msglayout *l, const upb_extreg *extreg, int options,
|
||||
upb_arena *arena);
|
||||
|
||||
UPB_INLINE
|
||||
bool upb_decode(const char *buf, size_t size, upb_msg *msg,
|
||||
const upb_msglayout *l, upb_arena *arena) {
|
||||
return _upb_decode(buf, size, msg, l, arena, 0);
|
||||
return _upb_decode(buf, size, msg, l, NULL, 0, arena);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -836,6 +879,10 @@ typedef struct upb_tabval {
|
||||
|
||||
/* upb_table ******************************************************************/
|
||||
|
||||
uint64_t Wyhash(const void *data, size_t len, uint64_t seed,
|
||||
const uint64_t salt[]);
|
||||
extern const uint64_t kWyhashSalt[5];
|
||||
|
||||
typedef struct _upb_tabent {
|
||||
upb_tabkey key;
|
||||
upb_tabval val;
|
||||
@ -1047,9 +1094,34 @@ typedef struct {
|
||||
int16_t presence; /* If >0, hasbit_index. If <0, ~oneof_index. */
|
||||
uint16_t submsg_index; /* undefined if descriptortype != MESSAGE or GROUP. */
|
||||
uint8_t descriptortype;
|
||||
uint8_t label; /* google.protobuf.Label or _UPB_LABEL_* above. */
|
||||
int8_t mode; /* upb_fieldmode, with flags from upb_labelflags */
|
||||
} upb_msglayout_field;
|
||||
|
||||
typedef enum {
|
||||
_UPB_MODE_MAP = 0,
|
||||
_UPB_MODE_ARRAY = 1,
|
||||
_UPB_MODE_SCALAR = 2,
|
||||
} upb_fieldmode;
|
||||
|
||||
/* Extra flags on the mode field. */
|
||||
enum upb_labelflags {
|
||||
_UPB_MODE_IS_PACKED = 4,
|
||||
};
|
||||
|
||||
UPB_INLINE upb_fieldmode _upb_getmode(const upb_msglayout_field *field) {
|
||||
return (upb_fieldmode)(field->mode & 3);
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
|
||||
/* This works because upb_fieldmode has no value 3. */
|
||||
return !(field->mode & _UPB_MODE_SCALAR);
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_issubmsg(const upb_msglayout_field *field) {
|
||||
return field->descriptortype == UPB_DTYPE_MESSAGE ||
|
||||
field->descriptortype == UPB_DTYPE_GROUP;
|
||||
}
|
||||
|
||||
struct upb_decstate;
|
||||
struct upb_msglayout;
|
||||
|
||||
@ -1070,27 +1142,65 @@ struct upb_msglayout {
|
||||
uint16_t size;
|
||||
uint16_t field_count;
|
||||
bool extendable;
|
||||
uint8_t dense_below;
|
||||
uint8_t table_mask;
|
||||
/* To constant-initialize the tables of variable length, we need a flexible
|
||||
* array member, and we need to compile in C99 mode. */
|
||||
_upb_fasttable_entry fasttable[];
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
upb_msglayout_field field;
|
||||
const upb_msglayout *extendee;
|
||||
const upb_msglayout *submsg; /* NULL for non-submessage fields. */
|
||||
} upb_msglayout_ext;
|
||||
|
||||
/** upb_extreg ****************************************************************/
|
||||
|
||||
/* Adds the given extension info for message type |l| and field number |num|
|
||||
* into the registry. Returns false if this message type and field number were
|
||||
* already in the map, or if memory allocation fails. */
|
||||
bool _upb_extreg_add(upb_extreg *r, const upb_msglayout_ext *e, size_t count);
|
||||
|
||||
/* Looks up the extension (if any) defined for message type |l| and field
|
||||
* number |num|. If an extension was found, copies the field info into |*ext|
|
||||
* and returns true. Otherwise returns false. */
|
||||
const upb_msglayout_field *_upb_extreg_get(const upb_extreg *r,
|
||||
const upb_msglayout *l,
|
||||
uint32_t num);
|
||||
|
||||
/** upb_msg *******************************************************************/
|
||||
|
||||
/* Internal members of a upb_msg. We can change this without breaking binary
|
||||
* compatibility. We put these before the user's data. The user's upb_msg*
|
||||
* points after the upb_msg_internal. */
|
||||
/* Internal members of a upb_msg that track unknown fields and/or extensions.
|
||||
* We can change this without breaking binary compatibility. We put these
|
||||
* before the user's data. The user's upb_msg* points after the
|
||||
* upb_msg_internal. */
|
||||
|
||||
typedef struct {
|
||||
uint32_t len;
|
||||
/* Total size of this structure, including the data that follows.
|
||||
* Must be aligned to 8, which is alignof(upb_msg_ext) */
|
||||
uint32_t size;
|
||||
/* Data follows. */
|
||||
} upb_msg_unknowndata;
|
||||
|
||||
/* Used when a message is not extendable. */
|
||||
/* Offsets relative to the beginning of this structure.
|
||||
*
|
||||
* Unknown data grows forward from the beginning to unknown_end.
|
||||
* Extension data grows backward from size to ext_begin.
|
||||
* When the two meet, we're out of data and have to realloc.
|
||||
*
|
||||
* If we imagine that the final member of this struct is:
|
||||
* char data[size - overhead]; // overhead = sizeof(upb_msg_internaldata)
|
||||
*
|
||||
* Then we have:
|
||||
* unknown data: data[0 .. (unknown_end - overhead)]
|
||||
* extensions data: data[(ext_begin - overhead) .. (size - overhead)] */
|
||||
uint32_t unknown_end;
|
||||
uint32_t ext_begin;
|
||||
/* Data follows, as if there were an array:
|
||||
* char data[size - sizeof(upb_msg_internaldata)]; */
|
||||
} upb_msg_internaldata;
|
||||
|
||||
typedef struct {
|
||||
upb_msg_unknowndata *unknown;
|
||||
upb_msg_internaldata *internal;
|
||||
} upb_msg_internal;
|
||||
|
||||
/* Maps upb_fieldtype_t -> memory size. */
|
||||
@ -1129,6 +1239,35 @@ void _upb_msg_discardunknown_shallow(upb_msg *msg);
|
||||
bool _upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
||||
upb_arena *arena);
|
||||
|
||||
/** upb_msg_ext ***************************************************************/
|
||||
|
||||
/* The internal representation of an extension is self-describing: it contains
|
||||
* enough information that we can serialize it to binary format without needing
|
||||
* to look it up in a registry. */
|
||||
typedef struct {
|
||||
const upb_msglayout_ext *ext;
|
||||
union {
|
||||
upb_strview str;
|
||||
void *ptr;
|
||||
double dbl;
|
||||
char scalar_data[8];
|
||||
} data;
|
||||
} upb_msg_ext;
|
||||
|
||||
/* Adds the given extension data to the given message. The returned extension will
|
||||
* have its "ext" member initialized according to |ext|. */
|
||||
upb_msg_ext *_upb_msg_getorcreateext(upb_msg *msg, const upb_msglayout_ext *ext,
|
||||
upb_arena *arena);
|
||||
|
||||
/* Returns an array of extensions for this message. Note: the array is
|
||||
* ordered in reverse relative to the order of creation. */
|
||||
const upb_msg_ext *_upb_msg_getexts(const upb_msg *msg, size_t *count);
|
||||
|
||||
/* Returns an extension for the given field number, or NULL if no extension
|
||||
* exists for this field number. */
|
||||
const upb_msg_ext *_upb_msg_getext(const upb_msg *msg,
|
||||
const upb_msglayout_ext *ext);
|
||||
|
||||
/** Hasbit access *************************************************************/
|
||||
|
||||
UPB_INLINE bool _upb_hasbit(const upb_msg *msg, size_t idx) {
|
||||
@ -1192,14 +1331,6 @@ UPB_INLINE bool _upb_has_submsg_nohasbit(const upb_msg *msg, size_t ofs) {
|
||||
return *UPB_PTR_AT(msg, ofs, const upb_msg*) != NULL;
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_isrepeated(const upb_msglayout_field *field) {
|
||||
return (field->label & 3) == UPB_LABEL_REPEATED;
|
||||
}
|
||||
|
||||
UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field) {
|
||||
return field->label >= UPB_LABEL_REPEATED;
|
||||
}
|
||||
|
||||
/** upb_array *****************************************************************/
|
||||
|
||||
/* Our internal representation for repeated fields. */
|
||||
@ -2121,13 +2252,19 @@ UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_
|
||||
UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileDescriptorSet *google_protobuf_FileDescriptorSet_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorSet *ret = google_protobuf_FileDescriptorSet_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorSet_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileDescriptorSet_serialize(const google_protobuf_FileDescriptorSet *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileDescriptorSet_msginit, arena, len);
|
||||
@ -2158,13 +2295,19 @@ UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorPr
|
||||
UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileDescriptorProto *google_protobuf_FileDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileDescriptorProto *ret = google_protobuf_FileDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileDescriptorProto_serialize(const google_protobuf_FileDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileDescriptorProto_msginit, arena, len);
|
||||
@ -2321,13 +2464,19 @@ UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_new(
|
||||
UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto *google_protobuf_DescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto *ret = google_protobuf_DescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_serialize(const google_protobuf_DescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_msginit, arena, len);
|
||||
@ -2480,13 +2629,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_Descr
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange *google_protobuf_DescriptorProto_ExtensionRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ExtensionRange *ret = google_protobuf_DescriptorProto_ExtensionRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ExtensionRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_ExtensionRange_serialize(const google_protobuf_DescriptorProto_ExtensionRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, arena, len);
|
||||
@ -2529,13 +2684,19 @@ UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_Descri
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_DescriptorProto_ReservedRange *google_protobuf_DescriptorProto_ReservedRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_DescriptorProto_ReservedRange *ret = google_protobuf_DescriptorProto_ReservedRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_DescriptorProto_ReservedRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_DescriptorProto_ReservedRange_serialize(const google_protobuf_DescriptorProto_ReservedRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, arena, len);
|
||||
@ -2563,13 +2724,19 @@ UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRange
|
||||
UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ExtensionRangeOptions *google_protobuf_ExtensionRangeOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ExtensionRangeOptions *ret = google_protobuf_ExtensionRangeOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ExtensionRangeOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ExtensionRangeOptions_serialize(const google_protobuf_ExtensionRangeOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, arena, len);
|
||||
@ -2600,13 +2767,19 @@ UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptor
|
||||
UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FieldDescriptorProto *google_protobuf_FieldDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldDescriptorProto *ret = google_protobuf_FieldDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FieldDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FieldDescriptorProto_serialize(const google_protobuf_FieldDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FieldDescriptorProto_msginit, arena, len);
|
||||
@ -2697,13 +2870,19 @@ UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptor
|
||||
UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_OneofDescriptorProto *google_protobuf_OneofDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofDescriptorProto *ret = google_protobuf_OneofDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_OneofDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_OneofDescriptorProto_serialize(const google_protobuf_OneofDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_OneofDescriptorProto_msginit, arena, len);
|
||||
@ -2740,13 +2919,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorPr
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto *google_protobuf_EnumDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto *ret = google_protobuf_EnumDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumDescriptorProto_serialize(const google_protobuf_EnumDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumDescriptorProto_msginit, arena, len);
|
||||
@ -2824,13 +3009,19 @@ UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobu
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange *google_protobuf_EnumDescriptorProto_EnumReservedRange_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumDescriptorProto_EnumReservedRange *ret = google_protobuf_EnumDescriptorProto_EnumReservedRange_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumDescriptorProto_EnumReservedRange_serialize(const google_protobuf_EnumDescriptorProto_EnumReservedRange *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena, len);
|
||||
@ -2858,13 +3049,19 @@ UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDe
|
||||
UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumValueDescriptorProto *google_protobuf_EnumValueDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueDescriptorProto *ret = google_protobuf_EnumValueDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumValueDescriptorProto_serialize(const google_protobuf_EnumValueDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, arena, len);
|
||||
@ -2907,13 +3104,19 @@ UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescri
|
||||
UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ServiceDescriptorProto *google_protobuf_ServiceDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceDescriptorProto *ret = google_protobuf_ServiceDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ServiceDescriptorProto_serialize(const google_protobuf_ServiceDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, arena, len);
|
||||
@ -2965,13 +3168,19 @@ UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescript
|
||||
UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MethodDescriptorProto *google_protobuf_MethodDescriptorProto_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodDescriptorProto *ret = google_protobuf_MethodDescriptorProto_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MethodDescriptorProto_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MethodDescriptorProto_serialize(const google_protobuf_MethodDescriptorProto *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MethodDescriptorProto_msginit, arena, len);
|
||||
@ -3032,13 +3241,19 @@ UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_new(upb_aren
|
||||
UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FileOptions *google_protobuf_FileOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FileOptions *ret = google_protobuf_FileOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FileOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FileOptions_serialize(const google_protobuf_FileOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FileOptions_msginit, arena, len);
|
||||
@ -3189,13 +3404,19 @@ UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_new(up
|
||||
UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MessageOptions *google_protobuf_MessageOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MessageOptions *ret = google_protobuf_MessageOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MessageOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MessageOptions_serialize(const google_protobuf_MessageOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MessageOptions_msginit, arena, len);
|
||||
@ -3250,13 +3471,19 @@ UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_new(upb_ar
|
||||
UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_FieldOptions *google_protobuf_FieldOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_FieldOptions *ret = google_protobuf_FieldOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_FieldOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_FieldOptions_serialize(const google_protobuf_FieldOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_FieldOptions_msginit, arena, len);
|
||||
@ -3323,13 +3550,19 @@ UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_new(upb_ar
|
||||
UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_OneofOptions *google_protobuf_OneofOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_OneofOptions *ret = google_protobuf_OneofOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_OneofOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_OneofOptions_serialize(const google_protobuf_OneofOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_OneofOptions_msginit, arena, len);
|
||||
@ -3360,13 +3593,19 @@ UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_new(upb_aren
|
||||
UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumOptions *google_protobuf_EnumOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumOptions *ret = google_protobuf_EnumOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumOptions_serialize(const google_protobuf_EnumOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumOptions_msginit, arena, len);
|
||||
@ -3409,13 +3648,19 @@ UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_ne
|
||||
UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_EnumValueOptions *google_protobuf_EnumValueOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_EnumValueOptions *ret = google_protobuf_EnumValueOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_EnumValueOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_EnumValueOptions_serialize(const google_protobuf_EnumValueOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_EnumValueOptions_msginit, arena, len);
|
||||
@ -3452,13 +3697,19 @@ UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_new(up
|
||||
UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_ServiceOptions *google_protobuf_ServiceOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_ServiceOptions *ret = google_protobuf_ServiceOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_ServiceOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_ServiceOptions_serialize(const google_protobuf_ServiceOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_ServiceOptions_msginit, arena, len);
|
||||
@ -3495,13 +3746,19 @@ UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_new(upb_
|
||||
UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_MethodOptions *google_protobuf_MethodOptions_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_MethodOptions *ret = google_protobuf_MethodOptions_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_MethodOptions_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_MethodOptions_serialize(const google_protobuf_MethodOptions *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_MethodOptions_msginit, arena, len);
|
||||
@ -3544,13 +3801,19 @@ UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOpt
|
||||
UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_UninterpretedOption *google_protobuf_UninterpretedOption_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption *ret = google_protobuf_UninterpretedOption_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_UninterpretedOption_serialize(const google_protobuf_UninterpretedOption *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_UninterpretedOption_msginit, arena, len);
|
||||
@ -3617,13 +3880,19 @@ UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_Uninter
|
||||
UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_UninterpretedOption_NamePart *google_protobuf_UninterpretedOption_NamePart_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_UninterpretedOption_NamePart *ret = google_protobuf_UninterpretedOption_NamePart_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_UninterpretedOption_NamePart_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_UninterpretedOption_NamePart_serialize(const google_protobuf_UninterpretedOption_NamePart *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, arena, len);
|
||||
@ -3651,13 +3920,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_new(up
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo *google_protobuf_SourceCodeInfo_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo *ret = google_protobuf_SourceCodeInfo_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_SourceCodeInfo_serialize(const google_protobuf_SourceCodeInfo *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_SourceCodeInfo_msginit, arena, len);
|
||||
@ -3688,13 +3963,19 @@ UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeIn
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_SourceCodeInfo_Location *google_protobuf_SourceCodeInfo_Location_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_SourceCodeInfo_Location *ret = google_protobuf_SourceCodeInfo_Location_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_SourceCodeInfo_Location_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_SourceCodeInfo_Location_serialize(const google_protobuf_SourceCodeInfo_Location *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, arena, len);
|
||||
@ -3755,13 +4036,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo *google_protobuf_GeneratedCodeInfo_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo *ret = google_protobuf_GeneratedCodeInfo_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_GeneratedCodeInfo_serialize(const google_protobuf_GeneratedCodeInfo *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, arena, len);
|
||||
@ -3792,13 +4079,19 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_Generat
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse(const char *buf, size_t size,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
|
||||
return (ret && upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) ? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena)) return NULL;
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation *google_protobuf_GeneratedCodeInfo_Annotation_parse_ex(const char *buf, size_t size,
|
||||
upb_arena *arena, int options) {
|
||||
const upb_extreg *extreg, int options,
|
||||
upb_arena *arena) {
|
||||
google_protobuf_GeneratedCodeInfo_Annotation *ret = google_protobuf_GeneratedCodeInfo_Annotation_new(arena);
|
||||
return (ret && _upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, options))
|
||||
? ret : NULL;
|
||||
if (!ret) return NULL;
|
||||
if (!_upb_decode(buf, size, ret, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, extreg, options, arena)) {
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
UPB_INLINE char *google_protobuf_GeneratedCodeInfo_Annotation_serialize(const google_protobuf_GeneratedCodeInfo_Annotation *msg, upb_arena *arena, size_t *len) {
|
||||
return upb_encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena, len);
|
||||
|
25
third_party/wyhash/LICENSE
vendored
25
third_party/wyhash/LICENSE
vendored
@ -1,25 +0,0 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <http://unlicense.org/>
|
||||
|
145
third_party/wyhash/wyhash.h
vendored
145
third_party/wyhash/wyhash.h
vendored
@ -1,145 +0,0 @@
|
||||
/* Copyright 2020 王一 Wang Yi <godspeed_china@yeah.net>
|
||||
This is free and unencumbered software released into the public domain. http://unlicense.org/
|
||||
See github.com/wangyi-fudan/wyhash/ LICENSE
|
||||
*/
|
||||
#ifndef wyhash_final_version
|
||||
#define wyhash_final_version
|
||||
//defines that change behavior
|
||||
#ifndef WYHASH_CONDOM
|
||||
#define WYHASH_CONDOM 1 //0: read 8 bytes before and after boundaries, dangerous but fastest. 1: normal valid behavior 2: extra protection against entropy loss (probability=2^-63), aka. "blind multiplication"
|
||||
#endif
|
||||
#define WYHASH_32BIT_MUM 0 //faster on 32 bit system
|
||||
//includes
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#if defined(_MSC_VER) && defined(_M_X64)
|
||||
#include <intrin.h>
|
||||
#pragma intrinsic(_umul128)
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
||||
#define _likely_(x) __builtin_expect(x,1)
|
||||
#define _unlikely_(x) __builtin_expect(x,0)
|
||||
#else
|
||||
#define _likely_(x) (x)
|
||||
#define _unlikely_(x) (x)
|
||||
#endif
|
||||
//mum function
|
||||
static inline uint64_t _wyrot(uint64_t x) { return (x>>32)|(x<<32); }
|
||||
static inline void _wymum(uint64_t *A, uint64_t *B){
|
||||
#if(WYHASH_32BIT_MUM)
|
||||
uint64_t hh=(*A>>32)*(*B>>32), hl=(*A>>32)*(unsigned)*B, lh=(unsigned)*A*(*B>>32), ll=(uint64_t)(unsigned)*A*(unsigned)*B;
|
||||
#if(WYHASH_CONDOM>1)
|
||||
*A^=_wyrot(hl)^hh; *B^=_wyrot(lh)^ll;
|
||||
#else
|
||||
*A=_wyrot(hl)^hh; *B=_wyrot(lh)^ll;
|
||||
#endif
|
||||
#elif defined(__SIZEOF_INT128__)
|
||||
__uint128_t r=*A; r*=*B;
|
||||
#if(WYHASH_CONDOM>1)
|
||||
*A^=(uint64_t)r; *B^=(uint64_t)(r>>64);
|
||||
#else
|
||||
*A=(uint64_t)r; *B=(uint64_t)(r>>64);
|
||||
#endif
|
||||
#elif defined(_MSC_VER) && defined(_M_X64)
|
||||
#if(WYHASH_CONDOM>1)
|
||||
uint64_t a, b;
|
||||
a=_umul128(*A,*B,&b);
|
||||
*A^=a; *B^=b;
|
||||
#else
|
||||
*A=_umul128(*A,*B,B);
|
||||
#endif
|
||||
#else
|
||||
uint64_t ha=*A>>32, hb=*B>>32, la=(uint32_t)*A, lb=(uint32_t)*B, hi, lo;
|
||||
uint64_t rh=ha*hb, rm0=ha*lb, rm1=hb*la, rl=la*lb, t=rl+(rm0<<32), c=t<rl;
|
||||
lo=t+(rm1<<32); c+=lo<t; hi=rh+(rm0>>32)+(rm1>>32)+c;
|
||||
#if(WYHASH_CONDOM>1)
|
||||
*A^=lo; *B^=hi;
|
||||
#else
|
||||
*A=lo; *B=hi;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
static inline uint64_t _wymix(uint64_t A, uint64_t B){ _wymum(&A,&B); return A^B; }
|
||||
//read functions
|
||||
#ifndef WYHASH_LITTLE_ENDIAN
|
||||
#if defined(_WIN32) || defined(__LITTLE_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||
#define WYHASH_LITTLE_ENDIAN 1
|
||||
#elif defined(__BIG_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||
#define WYHASH_LITTLE_ENDIAN 0
|
||||
#endif
|
||||
#endif
|
||||
#if (WYHASH_LITTLE_ENDIAN)
|
||||
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return v;}
|
||||
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return v;}
|
||||
#elif defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
||||
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return __builtin_bswap64(v);}
|
||||
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return __builtin_bswap32(v);}
|
||||
#elif defined(_MSC_VER)
|
||||
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return _byteswap_uint64(v);}
|
||||
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return _byteswap_ulong(v);}
|
||||
#endif
|
||||
static inline uint64_t _wyr3(const uint8_t *p, unsigned k) { return (((uint64_t)p[0])<<16)|(((uint64_t)p[k>>1])<<8)|p[k-1];}
|
||||
//wyhash function
|
||||
static inline uint64_t _wyfinish16(const uint8_t *p, uint64_t len, uint64_t seed, const uint64_t *secret, uint64_t i){
|
||||
#if(WYHASH_CONDOM>0)
|
||||
uint64_t a, b;
|
||||
if(_likely_(i<=8)){
|
||||
if(_likely_(i>=4)){ a=_wyr4(p); b=_wyr4(p+i-4); }
|
||||
else if (_likely_(i)){ a=_wyr3(p,i); b=0; }
|
||||
else a=b=0;
|
||||
}
|
||||
else{ a=_wyr8(p); b=_wyr8(p+i-8); }
|
||||
return _wymix(secret[1]^len,_wymix(a^secret[1], b^seed));
|
||||
#else
|
||||
#define oneshot_shift ((i<8)*((8-i)<<3))
|
||||
return _wymix(secret[1]^len,_wymix((_wyr8(p)<<oneshot_shift)^secret[1],(_wyr8(p+i-8)>>oneshot_shift)^seed));
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline uint64_t _wyfinish(const uint8_t *p, uint64_t len, uint64_t seed, const uint64_t *secret, uint64_t i){
|
||||
if(_likely_(i<=16)) return _wyfinish16(p,len,seed,secret,i);
|
||||
return _wyfinish(p+16,len,_wymix(_wyr8(p)^secret[1],_wyr8(p+8)^seed),secret,i-16);
|
||||
}
|
||||
|
||||
static inline uint64_t wyhash(const void *key, uint64_t len, uint64_t seed, const uint64_t *secret){
|
||||
const uint8_t *p=(const uint8_t *)key;
|
||||
uint64_t i=len; seed^=*secret;
|
||||
if(_unlikely_(i>64)){
|
||||
uint64_t see1=seed;
|
||||
do{
|
||||
seed=_wymix(_wyr8(p)^secret[1],_wyr8(p+8)^seed)^_wymix(_wyr8(p+16)^secret[2],_wyr8(p+24)^seed);
|
||||
see1=_wymix(_wyr8(p+32)^secret[3],_wyr8(p+40)^see1)^_wymix(_wyr8(p+48)^secret[4],_wyr8(p+56)^see1);
|
||||
p+=64; i-=64;
|
||||
}while(i>64);
|
||||
seed^=see1;
|
||||
}
|
||||
return _wyfinish(p,len,seed,secret,i);
|
||||
}
|
||||
//utility functions
|
||||
static const uint64_t _wyp[5] = {0xa0761d6478bd642full, 0xe7037ed1a0b428dbull, 0x8ebc6af09c88c6e3ull, 0x589965cc75374cc3ull, 0x1d8e4e27c47d124full};
|
||||
static inline uint64_t wyhash64(uint64_t A, uint64_t B){ A^=_wyp[0]; B^=_wyp[1]; _wymum(&A,&B); return _wymix(A^_wyp[0],B^_wyp[1]);}
|
||||
static inline uint64_t wyrand(uint64_t *seed){ *seed+=_wyp[0]; return _wymix(*seed,*seed^_wyp[1]);}
|
||||
static inline double wy2u01(uint64_t r){ const double _wynorm=1.0/(1ull<<52); return (r>>12)*_wynorm;}
|
||||
static inline double wy2gau(uint64_t r){ const double _wynorm=1.0/(1ull<<20); return ((r&0x1fffff)+((r>>21)&0x1fffff)+((r>>42)&0x1fffff))*_wynorm-3.0;}
|
||||
static inline uint64_t wy2u0k(uint64_t r, uint64_t k){ _wymum(&r,&k); return k; }
|
||||
|
||||
static inline void make_secret(uint64_t seed, uint64_t *secret){
|
||||
uint8_t c[] = {15, 23, 27, 29, 30, 39, 43, 45, 46, 51, 53, 54, 57, 58, 60, 71, 75, 77, 78, 83, 85, 86, 89, 90, 92, 99, 101, 102, 105, 106, 108, 113, 114, 116, 120, 135, 139, 141, 142, 147, 149, 150, 153, 154, 156, 163, 165, 166, 169, 170, 172, 177, 178, 180, 184, 195, 197, 198, 201, 202, 204, 209, 210, 212, 216, 225, 226, 228, 232, 240 };
|
||||
for(size_t i=0;i<5;i++){
|
||||
uint8_t ok;
|
||||
do{
|
||||
ok=1; secret[i]=0;
|
||||
for(size_t j=0;j<64;j+=8) secret[i]|=((uint64_t)c[wyrand(&seed)%sizeof(c)])<<j;
|
||||
if(secret[i]%2==0){ ok=0; continue; }
|
||||
for(size_t j=0;j<i;j++)
|
||||
#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
||||
if(__builtin_popcountll(secret[j]^secret[i])!=32){ ok=0; break; }
|
||||
#elif defined(_MSC_VER) && defined(_M_X64)
|
||||
if(_mm_popcnt_u64(secret[j]^secret[i])!=32){ ok=0; break; }
|
||||
#endif
|
||||
if(!ok)continue;
|
||||
for(uint64_t j=3;j<0x100000000ull;j+=2) if(secret[i]%j==0){ ok=0; break; }
|
||||
}while(!ok);
|
||||
}
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user