Skip to content

Commit f15d28a

Browse files
Add upb_Message_SetExtensionMessage as a helper for setting a extension field that is a message. This is the extension equivalent of upb_Message_SetBaseFieldMessage.
PiperOrigin-RevId: 767253667
1 parent e389116 commit f15d28a

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

upb/message/accessors.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,10 @@ UPB_API_INLINE bool upb_Message_SetExtension(upb_Message* msg,
215215
const upb_MiniTableExtension* e,
216216
const void* value, upb_Arena* a);
217217

218+
UPB_API_INLINE bool upb_Message_SetExtensionMessage(
219+
struct upb_Message* msg, const upb_MiniTableExtension* e,
220+
struct upb_Message* value, upb_Arena* a);
221+
218222
UPB_API_INLINE bool upb_Message_SetExtensionBool(
219223
struct upb_Message* msg, const upb_MiniTableExtension* e, bool value,
220224
upb_Arena* a);

upb/message/internal/accessors.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,16 @@ UPB_API_INLINE void upb_Message_SetClosedEnum(struct upb_Message* msg,
688688

689689
// Extension Setters ///////////////////////////////////////////////////////////
690690

691+
UPB_API_INLINE bool upb_Message_SetExtensionMessage(
692+
struct upb_Message* msg, const upb_MiniTableExtension* e,
693+
struct upb_Message* value, upb_Arena* a) {
694+
UPB_ASSERT(value);
695+
UPB_ASSUME(upb_MiniTableExtension_CType(e) == kUpb_CType_Message);
696+
UPB_ASSUME(UPB_PRIVATE(_upb_MiniTableExtension_GetRep)(e) ==
697+
UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte));
698+
return upb_Message_SetExtension(msg, e, &value, a);
699+
}
700+
691701
UPB_API_INLINE bool upb_Message_SetExtensionBool(
692702
struct upb_Message* msg, const upb_MiniTableExtension* e, bool value,
693703
upb_Arena* a) {

0 commit comments

Comments
 (0)