1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2023 Google LLC. All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file or at 6 // https://developers.google.com/open-source/licenses/bsd 7 8 #ifndef UPB_MINI_TABLE_INTERNAL_SUB_H_ 9 #define UPB_MINI_TABLE_INTERNAL_SUB_H_ 10 11 // Must be last. 12 #include "upb/port/def.inc" 13 14 union upb_MiniTableSub { 15 const struct upb_MiniTable* UPB_PRIVATE(submsg); 16 const struct upb_MiniTableEnum* UPB_PRIVATE(subenum); 17 }; 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 UPB_PRIVATE(_upb_MiniTableSub_FromEnum)23UPB_INLINE union upb_MiniTableSub UPB_PRIVATE(_upb_MiniTableSub_FromEnum)( 24 const struct upb_MiniTableEnum* subenum) { 25 union upb_MiniTableSub out; 26 out.UPB_PRIVATE(subenum) = subenum; 27 return out; 28 } 29 UPB_PRIVATE(_upb_MiniTableSub_FromMessage)30UPB_INLINE union upb_MiniTableSub UPB_PRIVATE(_upb_MiniTableSub_FromMessage)( 31 const struct upb_MiniTable* submsg) { 32 union upb_MiniTableSub out; 33 out.UPB_PRIVATE(submsg) = submsg; 34 return out; 35 } 36 UPB_PRIVATE(_upb_MiniTableSub_Enum)37UPB_INLINE const struct upb_MiniTableEnum* UPB_PRIVATE(_upb_MiniTableSub_Enum)( 38 const union upb_MiniTableSub sub) { 39 return sub.UPB_PRIVATE(subenum); 40 } 41 UPB_PRIVATE(_upb_MiniTableSub_Message)42UPB_INLINE const struct upb_MiniTable* UPB_PRIVATE(_upb_MiniTableSub_Message)( 43 const union upb_MiniTableSub sub) { 44 return sub.UPB_PRIVATE(submsg); 45 } 46 47 #ifdef __cplusplus 48 } /* extern "C" */ 49 #endif 50 51 #include "upb/port/undef.inc" 52 53 #endif /* UPB_MINI_TABLE_INTERNAL_SUB_H_ */ 54