|
|
|
@ -13,31 +13,31 @@ |
|
|
|
|
#include "upb_string.h" |
|
|
|
|
|
|
|
|
|
#define alignof(t) offsetof(struct { char c; t x; }, x) |
|
|
|
|
#define TYPE_INFO(wire_type, ctype, allows_delimited) \ |
|
|
|
|
#define TYPE_INFO(wire_type, ctype, allows_delimited, inmemory_type) \ |
|
|
|
|
{alignof(ctype), sizeof(ctype), wire_type, \
|
|
|
|
|
(1 << wire_type) | (allows_delimited << UPB_WIRE_TYPE_DELIMITED), \
|
|
|
|
|
#ctype}, |
|
|
|
|
UPB_TYPE(inmemory_type), #ctype}, |
|
|
|
|
|
|
|
|
|
const upb_type_info upb_types[] = { |
|
|
|
|
{0, 0, 0, 0, ""}, // There is no type 0.
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, double, 1) // DOUBLE
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, float, 1) // FLOAT
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int64_t, 1) // INT64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint64_t, 1) // UINT64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int32_t, 1) // INT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, uint64_t, 1) // FIXED64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, uint32_t, 1) // FIXED32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, bool, 1) // BOOL
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1) // STRING
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_START_GROUP, void*, 0) // GROUP
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1) // MESSAGE
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1) // BYTES
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint32_t, 1) // UINT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint32_t, 1) // ENUM
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, int32_t, 1) // SFIXED32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, int64_t, 1) // SFIXED64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int32_t, 1) // SINT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int64_t, 1) // SINT64
|
|
|
|
|
{0, 0, 0, 0, 0, ""}, // There is no type 0.
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, double, 1, DOUBLE) // DOUBLE
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, float, 1, FLOAT) // FLOAT
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int64_t, 1, INT64) // INT64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint64_t, 1, UINT64) // UINT64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int32_t, 1, INT32) // INT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, uint64_t, 1, UINT64) // FIXED64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, uint32_t, 1, UINT32) // FIXED32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, bool, 1, BOOL) // BOOL
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1, STRING) // STRING
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_START_GROUP, void*, 0, MESSAGE) // GROUP
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1, MESSAGE) // MESSAGE
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_DELIMITED, void*, 1, STRING) // BYTES
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint32_t, 1, UINT32) // UINT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, uint32_t, 1, ENUM) // ENUM
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_32BIT, int32_t, 1, INT32) // SFIXED32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_64BIT, int64_t, 1, INT64) // SFIXED64
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int32_t, 1, INT32) // SINT32
|
|
|
|
|
TYPE_INFO(UPB_WIRE_TYPE_VARINT, int64_t, 1, INT64) // SINT64
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void upb_seterr(upb_status *status, enum upb_status_code code, |
|
|
|
|