File indexing completed on 2026-09-15 09:27:12
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef UPB_MESSAGE_MESSAGE_H_
0013 #define UPB_MESSAGE_MESSAGE_H_
0014
0015 #include <stddef.h>
0016 #include <stdint.h>
0017
0018 #include "upb/base/string_view.h"
0019 #include "upb/mem/arena.h"
0020 #include "upb/message/array.h"
0021 #include "upb/message/internal/extension.h"
0022 #include "upb/message/internal/message.h"
0023 #include "upb/message/internal/types.h"
0024 #include "upb/mini_table/extension.h"
0025 #include "upb/mini_table/message.h"
0026
0027
0028 #include "upb/port/def.inc"
0029
0030 typedef struct upb_Message upb_Message;
0031
0032 #ifdef __cplusplus
0033 extern "C" {
0034 #endif
0035
0036
0037 UPB_API upb_Message* upb_Message_New(const upb_MiniTable* m, upb_Arena* arena);
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 #define kUpb_Message_UnknownBegin 0
0051 #define kUpb_Message_ExtensionBegin 0
0052
0053 UPB_INLINE bool upb_Message_NextUnknown(const upb_Message* msg,
0054 upb_StringView* data, uintptr_t* iter);
0055
0056 UPB_INLINE bool upb_Message_HasUnknown(const upb_Message* msg);
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084 typedef enum upb_Message_DeleteUnknownStatus {
0085 kUpb_DeleteUnknown_DeletedLast,
0086 kUpb_DeleteUnknown_IterUpdated,
0087 kUpb_DeleteUnknown_AllocFail,
0088 } upb_Message_DeleteUnknownStatus;
0089 upb_Message_DeleteUnknownStatus upb_Message_DeleteUnknown(upb_Message* msg,
0090 upb_StringView* data,
0091 uintptr_t* iter,
0092 upb_Arena* arena);
0093
0094
0095 size_t upb_Message_ExtensionCount(const upb_Message* msg);
0096
0097
0098 UPB_INLINE bool upb_Message_NextExtension(const upb_Message* msg,
0099 const upb_MiniTableExtension** out_e,
0100 upb_MessageValue* out_v,
0101 uintptr_t* iter);
0102
0103
0104 UPB_INLINE bool UPB_PRIVATE(_upb_Message_NextExtensionReverse)(
0105 const struct upb_Message* msg, const upb_MiniTableExtension** out_e,
0106 upb_MessageValue* out_v, uintptr_t* iter);
0107
0108
0109 UPB_API void upb_Message_Freeze(upb_Message* msg, const upb_MiniTable* m);
0110
0111
0112 UPB_API_INLINE bool upb_Message_IsFrozen(const upb_Message* msg);
0113
0114 #ifdef UPB_TRACING_ENABLED
0115 UPB_API void upb_Message_LogNewMessage(const upb_MiniTable* m,
0116 const upb_Arena* arena);
0117
0118 UPB_API void upb_Message_SetNewMessageTraceHandler(
0119 void (*handler)(const upb_MiniTable* m, const upb_Arena* arena));
0120 #endif
0121
0122 #ifdef __cplusplus
0123 }
0124 #endif
0125
0126 #include "upb/port/undef.inc"
0127
0128 #endif