Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions hpb_generator/generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -214,15 +214,15 @@ void WriteHeader(const google::protobuf::FileDescriptor* file, Context& ctx) {
}
ctx.Emit({{"class_name", ClassName(desc)},
{"minitable_name",
upb::generator::MiniTableMessagePtrVarName(desc->full_name())},
upb::generator::MiniTableMessageVarName(desc->full_name())},
{"outer_namespace", outer_namespace},
{"c_api_msg_type",
upb::generator::CApiMessageType(desc->full_name())}},
R"cc(
template <>
struct AssociatedUpbTypes<$outer_namespace$$class_name$> {
using CMessageType = $c_api_msg_type$;
static inline const upb_MiniTable* kMiniTable = $minitable_name$;
static inline const upb_MiniTable* kMiniTable = &$minitable_name$;
};
)cc");
}
Expand Down
5 changes: 2 additions & 3 deletions upb/message/accessors.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@
// Must be last.
#include "upb/port/def.inc"

bool upb_Message_SetMapEntry(upb_Map* map, const upb_MiniTable* m,
const upb_MiniTableField* f,
bool upb_Message_SetMapEntry(upb_Map* map, const upb_MiniTableField* f,
upb_Message* map_entry_message, upb_Arena* arena) {
UPB_ASSERT(!upb_Message_IsFrozen(map_entry_message));
const upb_MiniTable* map_entry_mini_table =
upb_MiniTable_MapEntrySubMessage(m, f);
upb_MiniTable_MapEntrySubMessage(f);
UPB_ASSERT(map_entry_mini_table);
const upb_MiniTableField* map_entry_key_field =
upb_MiniTable_MapKey(map_entry_mini_table);
Expand Down
12 changes: 5 additions & 7 deletions upb/message/accessors.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,7 @@ UPB_API_INLINE upb_Map* upb_Message_GetOrCreateMutableMap(
const upb_MiniTableField* f, upb_Arena* arena);

UPB_API_INLINE upb_Message* upb_Message_GetOrCreateMutableMessage(
upb_Message* msg, const upb_MiniTable* mini_table,
const upb_MiniTableField* f, upb_Arena* arena);
upb_Message* msg, const upb_MiniTableField* f, upb_Arena* arena);

UPB_API_INLINE upb_StringView
upb_Message_GetString(const upb_Message* msg, const upb_MiniTableField* field,
Expand All @@ -117,9 +116,9 @@ UPB_API_INLINE uint64_t upb_Message_GetUInt64(const upb_Message* msg,
const upb_MiniTableField* f,
uint64_t default_val);

UPB_API_INLINE void upb_Message_SetClosedEnum(
upb_Message* msg, const upb_MiniTable* msg_mini_table,
const upb_MiniTableField* f, int32_t value);
UPB_API_INLINE void upb_Message_SetClosedEnum(upb_Message* msg,
const upb_MiniTableField* f,
int32_t value);

// BaseField Setters ///////////////////////////////////////////////////////////

Expand Down Expand Up @@ -302,8 +301,7 @@ UPB_API_INLINE const upb_MiniTableField* upb_Message_WhichOneof(
const upb_MiniTableField* f);

// Updates a map entry given an entry message.
bool upb_Message_SetMapEntry(upb_Map* map, const upb_MiniTable* mini_table,
const upb_MiniTableField* field,
bool upb_Message_SetMapEntry(upb_Map* map, const upb_MiniTableField* field,
upb_Message* map_entry_message, upb_Arena* arena);

#ifdef __cplusplus
Expand Down
12 changes: 3 additions & 9 deletions upb/message/accessors_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -333,9 +333,7 @@ TEST(GeneratedCode, SubMessage) {
new_nested_message);

upb_Message* mutable_message = upb_Message_GetOrCreateMutableMessage(
UPB_UPCAST(msg),
&protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
UPB_UPCAST(msg), optional_message_field, arena);
EXPECT_EQ(
true,
protobuf_test_messages_proto2_TestAllTypesProto2_optional_nested_message(
Expand Down Expand Up @@ -438,13 +436,9 @@ TEST(GeneratedCode, GetMutableMessage) {
const upb_MiniTableField* optional_message_field =
find_proto2_field(kFieldOptionalNestedMessage);
upb_Message* msg1 = upb_Message_GetOrCreateMutableMessage(
UPB_UPCAST(msg),
&protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
UPB_UPCAST(msg), optional_message_field, arena);
upb_Message* msg2 = upb_Message_GetOrCreateMutableMessage(
UPB_UPCAST(msg),
&protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
UPB_UPCAST(msg), optional_message_field, arena);
// Verify that newly constructed sub message is stored in msg.
EXPECT_EQ(msg1, msg2);

Expand Down
4 changes: 2 additions & 2 deletions upb/message/compare.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2,
if (size1 != size2) return false;

const upb_MiniTableField* f = upb_MiniTable_MapValue(m);
const upb_MiniTable* m2_value = upb_MiniTable_SubMessage(m, f);
const upb_MiniTable* m2_value = upb_MiniTable_SubMessage(f);
const upb_CType ctype = upb_MiniTableField_CType(f);

upb_MessageValue key, val1, val2;
Expand Down Expand Up @@ -109,7 +109,7 @@ static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1,
if (!got1) return true; // Loop termination condition.
if (f1 != f2) return false; // Must have identical fields set.

const upb_MiniTable* subm = upb_MiniTable_SubMessage(m, f1);
const upb_MiniTable* subm = upb_MiniTable_SubMessage(f1);
const upb_CType ctype = upb_MiniTableField_CType(f1);

bool eq;
Expand Down
19 changes: 9 additions & 10 deletions upb/message/copy.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ upb_Map* upb_Map_DeepClone(const upb_Map* map, upb_CType key_type,
upb_MiniTable_MapValue(map_entry_table);
const upb_MiniTable* value_sub =
upb_MiniTableField_CType(value_field) == kUpb_CType_Message
? upb_MiniTable_GetSubMessageTable(map_entry_table, value_field)
? upb_MiniTable_GetSubMessageTable(value_field)
: NULL;
upb_CType value_field_type = upb_MiniTableField_CType(value_field);
if (!upb_Clone_MessageValue(&val, value_field_type, value_sub, arena)) {
Expand All @@ -116,8 +116,7 @@ static upb_Map* upb_Message_Map_DeepClone(const upb_Map* map,
upb_Message* clone,
upb_Arena* arena) {
UPB_ASSERT(!upb_Message_IsFrozen(clone));
const upb_MiniTable* map_entry_table =
upb_MiniTable_MapEntrySubMessage(mini_table, f);
const upb_MiniTable* map_entry_table = upb_MiniTable_MapEntrySubMessage(f);
UPB_ASSERT(map_entry_table);

const upb_MiniTableField* key_field = upb_MiniTable_MapKey(map_entry_table);
Expand Down Expand Up @@ -161,12 +160,12 @@ static bool upb_Message_Array_DeepClone(const upb_Array* array,
upb_Message* clone, upb_Arena* arena) {
UPB_ASSERT(!upb_Message_IsFrozen(clone));
UPB_PRIVATE(_upb_MiniTableField_CheckIsArray)(field);
upb_Array* cloned_array = upb_Array_DeepClone(
array, upb_MiniTableField_CType(field),
upb_MiniTableField_CType(field) == kUpb_CType_Message
? upb_MiniTable_GetSubMessageTable(mini_table, field)
: NULL,
arena);
upb_Array* cloned_array =
upb_Array_DeepClone(array, upb_MiniTableField_CType(field),
upb_MiniTableField_CType(field) == kUpb_CType_Message
? upb_MiniTable_GetSubMessageTable(field)
: NULL,
arena);

// Clear out upb_Array* due to parent memcpy.
upb_Message_SetBaseField(clone, field, &cloned_array);
Expand Down Expand Up @@ -198,7 +197,7 @@ upb_Message* _upb_Message_Copy(upb_Message* dst, const upb_Message* src,
const upb_Message* sub_message = upb_Message_GetMessage(src, field);
if (sub_message != NULL) {
const upb_MiniTable* sub_message_table =
upb_MiniTable_GetSubMessageTable(mini_table, field);
upb_MiniTable_GetSubMessageTable(field);
upb_Message* dst_sub_message =
upb_Message_DeepClone(sub_message, sub_message_table, arena);
if (dst_sub_message == NULL) {
Expand Down
9 changes: 3 additions & 6 deletions upb/message/internal/accessors.h
Original file line number Diff line number Diff line change
Expand Up @@ -500,16 +500,14 @@ UPB_API_INLINE struct upb_Map* upb_Message_GetOrCreateMutableMap(
}

UPB_API_INLINE struct upb_Message* upb_Message_GetOrCreateMutableMessage(
struct upb_Message* msg, const upb_MiniTable* mini_table,
const upb_MiniTableField* f, upb_Arena* arena) {
struct upb_Message* msg, const upb_MiniTableField* f, upb_Arena* arena) {
UPB_ASSERT(arena);
UPB_ASSUME(upb_MiniTableField_CType(f) == kUpb_CType_Message);
UPB_ASSUME(!upb_MiniTableField_IsExtension(f));
struct upb_Message* sub_message =
*UPB_PTR_AT(msg, f->UPB_ONLYBITS(offset), struct upb_Message*);
if (!sub_message) {
const upb_MiniTable* sub_mini_table =
upb_MiniTable_SubMessage(mini_table, f);
const upb_MiniTable* sub_mini_table = upb_MiniTable_SubMessage(f);
UPB_ASSERT(sub_mini_table);
sub_message = _upb_Message_New(sub_mini_table, arena);
*UPB_PTR_AT(msg, f->UPB_ONLYBITS(offset), struct upb_Message*) =
Expand Down Expand Up @@ -645,13 +643,12 @@ UPB_API_INLINE void upb_Message_SetBaseFieldUInt64(struct upb_Message* msg,
}

UPB_API_INLINE void upb_Message_SetClosedEnum(struct upb_Message* msg,
const upb_MiniTable* m,
const upb_MiniTableField* f,
int32_t value) {
UPB_ASSERT(upb_MiniTableField_IsClosedEnum(f));
UPB_ASSUME(UPB_PRIVATE(_upb_MiniTableField_GetRep)(f) == kUpb_FieldRep_4Byte);
UPB_ASSERT(
upb_MiniTableEnum_CheckValue(upb_MiniTable_GetSubEnumTable(m, f), value));
upb_MiniTableEnum_CheckValue(upb_MiniTable_GetSubEnumTable(f), value));
upb_Message_SetBaseField(msg, f, &value);
}

Expand Down
4 changes: 2 additions & 2 deletions upb/message/message.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ void upb_Message_Freeze(upb_Message* msg, const upb_MiniTable* m) {

for (size_t i = 0; i < field_count; i++) {
const upb_MiniTableField* f = upb_MiniTable_GetFieldByIndex(m, i);
const upb_MiniTable* m2 = upb_MiniTable_SubMessage(m, f);
const upb_MiniTable* m2 = upb_MiniTable_SubMessage(f);

switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(f)) {
case kUpb_FieldMode_Array: {
Expand All @@ -263,7 +263,7 @@ void upb_Message_Freeze(upb_Message* msg, const upb_MiniTable* m) {
upb_Map* map = upb_Message_GetMutableMap(msg, f);
if (map) {
const upb_MiniTableField* f2 = upb_MiniTable_MapValue(m2);
const upb_MiniTable* m3 = upb_MiniTable_SubMessage(m2, f2);
const upb_MiniTable* m3 = upb_MiniTable_SubMessage(f2);
upb_Map_Freeze(map, m3);
}
break;
Expand Down
9 changes: 4 additions & 5 deletions upb/message/promote.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,7 @@ upb_UnknownToMessageRet upb_MiniTable_PromoteUnknownToMessage(
upb_Message* message = NULL;
// Callers should check that message is not set first before calling
// PromotoUnknownToMessage.
UPB_ASSERT(upb_MiniTable_GetSubMessageTable(mini_table, field) ==
sub_mini_table);
UPB_ASSERT(upb_MiniTable_GetSubMessageTable(field) == sub_mini_table);
bool is_oneof = upb_MiniTableField_IsInOneof(field);
if (!is_oneof || UPB_PRIVATE(_upb_Message_GetOneofCase)(msg, field) ==
upb_MiniTableField_Number(field)) {
Expand Down Expand Up @@ -298,7 +297,7 @@ upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMap(
UPB_ASSERT(!upb_Message_IsFrozen(msg));

const upb_MiniTable* map_entry_mini_table =
upb_MiniTable_MapEntrySubMessage(mini_table, field);
upb_MiniTable_MapEntrySubMessage(field);
UPB_ASSERT(upb_MiniTable_FieldCount(map_entry_mini_table) == 2);
// Find all unknowns with given field number and parse.
upb_FindUnknownRet unknown;
Expand All @@ -315,8 +314,8 @@ upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMap(
upb_Map* map = upb_Message_GetOrCreateMutableMap(msg, map_entry_mini_table,
field, arena);
upb_Message* map_entry_message = ret.message;
bool insert_success = upb_Message_SetMapEntry(map, mini_table, field,
map_entry_message, arena);
bool insert_success =
upb_Message_SetMapEntry(map, field, map_entry_message, arena);
if (!insert_success) return kUpb_UnknownToMessage_OutOfMemory;
upb_StringView del =
upb_StringView_FromDataAndSize(unknown.ptr, unknown.len);
Expand Down
4 changes: 2 additions & 2 deletions upb/message/test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -846,15 +846,15 @@ TEST(MessageTest, Freeze) {
ASSERT_TRUE(upb_Message_IsFrozen(UPB_UPCAST(nest)));

const upb_MiniTableField* fa = upb_MiniTable_FindFieldByNumber(m, 20);
const upb_MiniTable* ma = upb_MiniTable_SubMessage(m, fa);
const upb_MiniTable* ma = upb_MiniTable_SubMessage(fa);
upb_Array_Freeze(arr, ma);
ASSERT_FALSE(upb_Message_IsFrozen(msg));
ASSERT_TRUE(upb_Array_IsFrozen(arr));
ASSERT_FALSE(upb_Map_IsFrozen(map));
ASSERT_TRUE(upb_Message_IsFrozen(UPB_UPCAST(nest)));

const upb_MiniTableField* fm = upb_MiniTable_FindFieldByNumber(m, 10);
const upb_MiniTable* mm = upb_MiniTable_SubMessage(m, fm);
const upb_MiniTable* mm = upb_MiniTable_SubMessage(fm);
upb_Map_Freeze(map, mm);
ASSERT_FALSE(upb_Message_IsFrozen(msg));
ASSERT_TRUE(upb_Array_IsFrozen(arr));
Expand Down
Loading
Loading