summaryrefslogtreecommitdiff
path: root/upbc
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2018-12-24 12:01:36 -0800
committerJoshua Haberman <jhaberman@gmail.com>2018-12-24 12:01:36 -0800
commit45d61f42990d2823a914680098c0e24c15ebf396 (patch)
tree59af1c21fc7c7ee90f5134c981f1b75c8044b3fe /upbc
parenta3a02d63190c99d6b53545ef23f6aa3671c2e8c0 (diff)
parentc3011c15483b775123ff40d58fe8c29f93efa431 (diff)
Merge branch 'arrayapi' into defcleanup
Diffstat (limited to 'upbc')
-rw-r--r--upbc/generator.cc30
1 files changed, 19 insertions, 11 deletions
diff --git a/upbc/generator.cc b/upbc/generator.cc
index 76b88be..4c3b2c0 100644
--- a/upbc/generator.cc
+++ b/upbc/generator.cc
@@ -385,14 +385,15 @@ void GenerateMessageInHeader(const protobuf::Descriptor* message, Output& output
for (auto field : FieldNumberOrder(message)) {
if (field->is_repeated()) {
output(
- "UPB_INLINE $0* $1_$2_mutable($1 *msg, size_t *len) { "
- "return ($0*)_upb_array_mutable_accessor(msg, $3, len); }\n",
+ "UPB_INLINE $0* $1_$2_mutable($1 *msg, size_t *len) {\n"
+ " return ($0*)_upb_array_mutable_accessor(msg, $3, len);\n"
+ "}\n",
CType(field), msgname, field->name(),
GetSizeInit(layout.GetFieldOffset(field)));
output(
"UPB_INLINE $0* $1_$2_resize($1 *msg, size_t len, "
- "upb_arena *arena) { "
- "return ($0*)_upb_array_resize_accessor(msg, $3, len, $4, $5, arena); "
+ "upb_arena *arena) {\n"
+ " return ($0*)_upb_array_resize_accessor(msg, $3, len, $4, $5, arena);\n"
"}\n",
CType(field), msgname, field->name(),
GetSizeInit(layout.GetFieldOffset(field)),
@@ -426,16 +427,23 @@ void GenerateMessageInHeader(const protobuf::Descriptor* message, Output& output
);
}
} else {
- output("UPB_INLINE void $0_set_$1($0 *msg, $2 value) { ", msgname,
+ output("UPB_INLINE void $0_set_$1($0 *msg, $2 value) {\n", msgname,
field->name(), CType(field));
if (field->containing_oneof()) {
- output("UPB_WRITE_ONEOF(msg, $0, $1, value, $2, $3); }\n", CType(field),
- GetSizeInit(layout.GetFieldOffset(field)),
- GetSizeInit(layout.GetOneofCaseOffset(field->containing_oneof())),
- field->number());
+ output(
+ " UPB_WRITE_ONEOF(msg, $0, $1, value, $2, $3);\n"
+ "}\n",
+ CType(field), GetSizeInit(layout.GetFieldOffset(field)),
+ GetSizeInit(layout.GetOneofCaseOffset(field->containing_oneof())),
+ field->number());
} else {
- output("UPB_FIELD_AT(msg, $0, $1) = value; }\n", CType(field),
- GetSizeInit(layout.GetFieldOffset(field)));
+ if (MessageLayout::HasHasbit(field)) {
+ output(" _upb_sethas(msg, $0);\n", layout.GetHasbitIndex(field));
+ }
+ output(
+ " UPB_FIELD_AT(msg, $0, $1) = value;\n"
+ "}\n",
+ CType(field), GetSizeInit(layout.GetFieldOffset(field)));
}
if (field->cpp_type() == protobuf::FieldDescriptor::CPPTYPE_MESSAGE) {
output(
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback