summaryrefslogtreecommitdiff
path: root/descriptor
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2009-08-12 13:47:24 -0700
committerJoshua Haberman <joshua@reverberate.org>2009-08-12 13:47:24 -0700
commit2282d2489bd8db3cd4ddbe0dd813732bffcf6452 (patch)
tree814fc94cd8ca4993363fb0ebe45b14e320a7a792 /descriptor
parent89a6c6d71f87bab63ee17c60f0feb56215f5c116 (diff)
Refactoring: unify upb_msg.
The cost is that a upb_msg will now always have an overhead of 2*sizeof(void*). This is comparable to proto2 overhead. The benefit is that upb_msg is now self-describing, and read-only algorithms can now operate on a upb_msg regardless of the memory-management scheme. Also, upb_array and upb_string now know inherently if they own their associated memory, and upb_array has a generic pointer for memory management purposes like upb_msg does.
Diffstat (limited to 'descriptor')
-rw-r--r--descriptor/descriptor.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/descriptor/descriptor.h b/descriptor/descriptor.h
index 39d3117..7096023 100644
--- a/descriptor/descriptor.h
+++ b/descriptor/descriptor.h
@@ -131,6 +131,8 @@ typedef struct google_protobuf_MethodOptions
/* The message definitions themselves. */
struct google_protobuf_UninterpretedOption_NamePart {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -144,6 +146,8 @@ struct google_protobuf_UninterpretedOption_NamePart {
UPB_DEFINE_MSG_ARRAY(google_protobuf_UninterpretedOption_NamePart)
struct google_protobuf_DescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -167,6 +171,8 @@ struct google_protobuf_DescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_DescriptorProto)
struct google_protobuf_EnumDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -182,6 +188,8 @@ struct google_protobuf_EnumDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_EnumDescriptorProto)
struct google_protobuf_UninterpretedOption {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -203,6 +211,8 @@ struct google_protobuf_UninterpretedOption {
UPB_DEFINE_MSG_ARRAY(google_protobuf_UninterpretedOption)
struct google_protobuf_FileDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -228,6 +238,8 @@ struct google_protobuf_FileDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_FileDescriptorProto)
struct google_protobuf_MethodDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -245,6 +257,8 @@ struct google_protobuf_MethodDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_MethodDescriptorProto)
struct google_protobuf_EnumValueOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -256,6 +270,8 @@ struct google_protobuf_EnumValueOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_EnumValueOptions)
struct google_protobuf_EnumValueDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -271,6 +287,8 @@ struct google_protobuf_EnumValueDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_EnumValueDescriptorProto)
struct google_protobuf_ServiceDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -286,6 +304,8 @@ struct google_protobuf_ServiceDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_ServiceDescriptorProto)
struct google_protobuf_FileDescriptorSet {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -297,6 +317,8 @@ struct google_protobuf_FileDescriptorSet {
UPB_DEFINE_MSG_ARRAY(google_protobuf_FileDescriptorSet)
struct google_protobuf_DescriptorProto_ExtensionRange {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -310,6 +332,8 @@ struct google_protobuf_DescriptorProto_ExtensionRange {
UPB_DEFINE_MSG_ARRAY(google_protobuf_DescriptorProto_ExtensionRange)
struct google_protobuf_FieldOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -329,6 +353,8 @@ struct google_protobuf_FieldOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_FieldOptions)
struct google_protobuf_FileOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -348,6 +374,8 @@ struct google_protobuf_FileOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_FileOptions)
struct google_protobuf_MessageOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -361,6 +389,8 @@ struct google_protobuf_MessageOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_MessageOptions)
struct google_protobuf_EnumOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -372,6 +402,8 @@ struct google_protobuf_EnumOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_EnumOptions)
struct google_protobuf_FieldDescriptorProto {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -397,6 +429,8 @@ struct google_protobuf_FieldDescriptorProto {
UPB_DEFINE_MSG_ARRAY(google_protobuf_FieldDescriptorProto)
struct google_protobuf_ServiceOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
@@ -408,6 +442,8 @@ struct google_protobuf_ServiceOptions {
UPB_DEFINE_MSG_ARRAY(google_protobuf_ServiceOptions)
struct google_protobuf_MethodOptions {
+ struct upb_msgdef *def;
+ void *gptr;
union {
uint8_t bytes[1];
struct {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback