From f17ed90f7704d77e3eb59a6f6b693ab4c598936a Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Thu, 27 Aug 2009 11:10:13 -0700 Subject: Some cleanup and reformatting, fixed the benchmarks. --- src/upb.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/upb.c (limited to 'src/upb.c') diff --git a/src/upb.c b/src/upb.c new file mode 100644 index 0000000..e82a8e4 --- /dev/null +++ b/src/upb.c @@ -0,0 +1,37 @@ +/* + * upb - a minimalist implementation of protocol buffers. + * + * Copyright (c) 2009 Joshua Haberman. See LICENSE for details. + * + */ + +#include + +#include "upb.h" + +#define alignof(t) offsetof(struct { char c; t x; }, x) +#define TYPE_INFO(proto_type, wire_type, ctype) \ + [GOOGLE_PROTOBUF_FIELDDESCRIPTORPROTO_TYPE_ ## proto_type] = \ + {alignof(ctype), sizeof(ctype), wire_type, #ctype}, + +struct upb_type_info upb_type_info[] = { + TYPE_INFO(DOUBLE, UPB_WIRE_TYPE_64BIT, double) + TYPE_INFO(FLOAT, UPB_WIRE_TYPE_32BIT, float) + TYPE_INFO(INT64, UPB_WIRE_TYPE_VARINT, int64_t) + TYPE_INFO(UINT64, UPB_WIRE_TYPE_VARINT, uint64_t) + TYPE_INFO(INT32, UPB_WIRE_TYPE_VARINT, int32_t) + TYPE_INFO(FIXED64, UPB_WIRE_TYPE_64BIT, uint64_t) + TYPE_INFO(FIXED32, UPB_WIRE_TYPE_32BIT, uint32_t) + TYPE_INFO(BOOL, UPB_WIRE_TYPE_VARINT, bool) + TYPE_INFO(MESSAGE, UPB_WIRE_TYPE_DELIMITED, void*) + TYPE_INFO(GROUP, UPB_WIRE_TYPE_START_GROUP, void*) + TYPE_INFO(UINT32, UPB_WIRE_TYPE_VARINT, uint32_t) + TYPE_INFO(ENUM, UPB_WIRE_TYPE_VARINT, uint32_t) + TYPE_INFO(SFIXED32, UPB_WIRE_TYPE_32BIT, int32_t) + TYPE_INFO(SFIXED64, UPB_WIRE_TYPE_64BIT, int64_t) + TYPE_INFO(SINT32, UPB_WIRE_TYPE_VARINT, int32_t) + TYPE_INFO(SINT64, UPB_WIRE_TYPE_VARINT, int64_t) + TYPE_INFO(STRING, UPB_WIRE_TYPE_DELIMITED, struct upb_string*) + TYPE_INFO(BYTES, UPB_WIRE_TYPE_DELIMITED, struct upb_string*) +}; + -- cgit v1.2.3