Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-21 09:28:40

0001 // Protocol Buffers - Google's data interchange format
0002 // Copyright 2023 Google LLC.  All rights reserved.
0003 //
0004 // Use of this source code is governed by a BSD-style
0005 // license that can be found in the LICENSE file or at
0006 // https://developers.google.com/open-source/licenses/bsd
0007 
0008 #ifndef UPB_MESSAGE_ACCESSORS_H_
0009 #define UPB_MESSAGE_ACCESSORS_H_
0010 
0011 #include <stdint.h>
0012 
0013 #include "upb/base/string_view.h"
0014 #include "upb/mem/arena.h"
0015 #include "upb/message/array.h"
0016 #include "upb/message/internal/accessors.h"
0017 #include "upb/message/map.h"
0018 #include "upb/message/message.h"
0019 #include "upb/message/tagged_ptr.h"
0020 #include "upb/message/value.h"
0021 #include "upb/mini_table/extension.h"
0022 #include "upb/mini_table/field.h"
0023 #include "upb/mini_table/message.h"
0024 
0025 // Must be last.
0026 #include "upb/port/def.inc"
0027 
0028 #ifdef __cplusplus
0029 extern "C" {
0030 #endif
0031 
0032 // Functions ending in BaseField() take a (upb_MiniTableField*) argument
0033 // and work only on non-extension fields.
0034 //
0035 // Functions ending in Extension() take a (upb_MiniTableExtension*) argument
0036 // and work only on extensions.
0037 
0038 UPB_API_INLINE void upb_Message_Clear(upb_Message* msg, const upb_MiniTable* m);
0039 
0040 UPB_API_INLINE void upb_Message_ClearBaseField(upb_Message* msg,
0041                                                const upb_MiniTableField* f);
0042 
0043 UPB_API_INLINE void upb_Message_ClearExtension(upb_Message* msg,
0044                                                const upb_MiniTableExtension* e);
0045 
0046 UPB_API_INLINE void upb_Message_ClearOneof(upb_Message* msg,
0047                                            const upb_MiniTable* m,
0048                                            const upb_MiniTableField* f);
0049 
0050 UPB_API_INLINE bool upb_Message_HasBaseField(const upb_Message* msg,
0051                                              const upb_MiniTableField* f);
0052 
0053 UPB_API_INLINE bool upb_Message_HasExtension(const upb_Message* msg,
0054                                              const upb_MiniTableExtension* e);
0055 
0056 UPB_API_INLINE upb_MessageValue
0057 upb_Message_GetField(const upb_Message* msg, const upb_MiniTableField* f,
0058                      upb_MessageValue default_val);
0059 
0060 UPB_API_INLINE upb_TaggedMessagePtr upb_Message_GetTaggedMessagePtr(
0061     const upb_Message* msg, const upb_MiniTableField* field,
0062     upb_Message* default_val);
0063 
0064 UPB_API_INLINE const upb_Array* upb_Message_GetArray(
0065     const upb_Message* msg, const upb_MiniTableField* f);
0066 
0067 UPB_API_INLINE bool upb_Message_GetBool(const upb_Message* msg,
0068                                         const upb_MiniTableField* f,
0069                                         bool default_val);
0070 
0071 UPB_API_INLINE double upb_Message_GetDouble(const upb_Message* msg,
0072                                             const upb_MiniTableField* field,
0073                                             double default_val);
0074 
0075 UPB_API_INLINE float upb_Message_GetFloat(const upb_Message* msg,
0076                                           const upb_MiniTableField* f,
0077                                           float default_val);
0078 
0079 UPB_API_INLINE int32_t upb_Message_GetInt32(const upb_Message* msg,
0080                                             const upb_MiniTableField* f,
0081                                             int32_t default_val);
0082 
0083 UPB_API_INLINE int64_t upb_Message_GetInt64(const upb_Message* msg,
0084                                             const upb_MiniTableField* f,
0085                                             int64_t default_val);
0086 
0087 UPB_API_INLINE const upb_Map* upb_Message_GetMap(const upb_Message* msg,
0088                                                  const upb_MiniTableField* f);
0089 
0090 UPB_API_INLINE const upb_Message* upb_Message_GetMessage(
0091     const upb_Message* msg, const upb_MiniTableField* f);
0092 
0093 UPB_API_INLINE upb_Array* upb_Message_GetMutableArray(
0094     upb_Message* msg, const upb_MiniTableField* f);
0095 
0096 UPB_API_INLINE upb_Map* upb_Message_GetMutableMap(upb_Message* msg,
0097                                                   const upb_MiniTableField* f);
0098 
0099 UPB_API_INLINE upb_Message* upb_Message_GetMutableMessage(
0100     upb_Message* msg, const upb_MiniTableField* f);
0101 
0102 UPB_API_INLINE upb_Array* upb_Message_GetOrCreateMutableArray(
0103     upb_Message* msg, const upb_MiniTableField* f, upb_Arena* arena);
0104 
0105 UPB_API_INLINE upb_Map* upb_Message_GetOrCreateMutableMap(
0106     upb_Message* msg, const upb_MiniTable* map_entry_mini_table,
0107     const upb_MiniTableField* f, upb_Arena* arena);
0108 
0109 UPB_API_INLINE upb_Message* upb_Message_GetOrCreateMutableMessage(
0110     upb_Message* msg, const upb_MiniTable* mini_table,
0111     const upb_MiniTableField* f, upb_Arena* arena);
0112 
0113 UPB_API_INLINE upb_StringView
0114 upb_Message_GetString(const upb_Message* msg, const upb_MiniTableField* field,
0115                       upb_StringView default_val);
0116 
0117 UPB_API_INLINE uint32_t upb_Message_GetUInt32(const upb_Message* msg,
0118                                               const upb_MiniTableField* f,
0119                                               uint32_t default_val);
0120 
0121 UPB_API_INLINE uint64_t upb_Message_GetUInt64(const upb_Message* msg,
0122                                               const upb_MiniTableField* f,
0123                                               uint64_t default_val);
0124 
0125 UPB_API_INLINE void upb_Message_SetClosedEnum(
0126     upb_Message* msg, const upb_MiniTable* msg_mini_table,
0127     const upb_MiniTableField* f, int32_t value);
0128 
0129 // BaseField Setters ///////////////////////////////////////////////////////////
0130 
0131 UPB_API_INLINE void upb_Message_SetBaseField(upb_Message* msg,
0132                                              const upb_MiniTableField* f,
0133                                              const void* val);
0134 
0135 UPB_API_INLINE void upb_Message_SetBaseFieldBool(struct upb_Message* msg,
0136                                                  const upb_MiniTableField* f,
0137                                                  bool value);
0138 
0139 UPB_API_INLINE void upb_Message_SetBaseFieldDouble(struct upb_Message* msg,
0140                                                    const upb_MiniTableField* f,
0141                                                    double value);
0142 
0143 UPB_API_INLINE void upb_Message_SetBaseFieldFloat(struct upb_Message* msg,
0144                                                   const upb_MiniTableField* f,
0145                                                   float value);
0146 
0147 UPB_API_INLINE void upb_Message_SetBaseFieldInt32(struct upb_Message* msg,
0148                                                   const upb_MiniTableField* f,
0149                                                   int32_t value);
0150 
0151 UPB_API_INLINE void upb_Message_SetBaseFieldInt64(struct upb_Message* msg,
0152                                                   const upb_MiniTableField* f,
0153                                                   int64_t value);
0154 
0155 UPB_API_INLINE void upb_Message_SetBaseFieldMessage(struct upb_Message* msg,
0156                                                     const upb_MiniTableField* f,
0157                                                     upb_Message* value);
0158 
0159 UPB_API_INLINE void upb_Message_SetBaseFieldString(struct upb_Message* msg,
0160                                                    const upb_MiniTableField* f,
0161                                                    upb_StringView value);
0162 
0163 UPB_API_INLINE void upb_Message_SetBaseFieldUInt32(struct upb_Message* msg,
0164                                                    const upb_MiniTableField* f,
0165                                                    uint32_t value);
0166 
0167 UPB_API_INLINE void upb_Message_SetBaseFieldUInt64(struct upb_Message* msg,
0168                                                    const upb_MiniTableField* f,
0169                                                    uint64_t value);
0170 
0171 // Extension Getters ///////////////////////////////////////////////////////////
0172 UPB_API_INLINE bool upb_Message_GetExtensionBool(
0173     const upb_Message* msg, const upb_MiniTableExtension* f, bool default_val);
0174 
0175 UPB_API_INLINE double upb_Message_GetExtensionDouble(
0176     const upb_Message* msg, const upb_MiniTableExtension* f,
0177     double default_val);
0178 
0179 UPB_API_INLINE float upb_Message_GetExtensionFloat(
0180     const upb_Message* msg, const upb_MiniTableExtension* f, float default_val);
0181 
0182 UPB_API_INLINE int32_t upb_Message_GetExtensionInt32(
0183     const upb_Message* msg, const upb_MiniTableExtension* f,
0184     int32_t default_val);
0185 
0186 UPB_API_INLINE int64_t upb_Message_GetExtensionInt64(
0187     const upb_Message* msg, const upb_MiniTableExtension* f,
0188     int64_t default_val);
0189 
0190 UPB_API_INLINE uint32_t upb_Message_GetExtensionUInt32(
0191     const upb_Message* msg, const upb_MiniTableExtension* f,
0192     uint32_t default_val);
0193 
0194 UPB_API_INLINE uint64_t upb_Message_GetExtensionUInt64(
0195     const upb_Message* msg, const upb_MiniTableExtension* f,
0196     uint64_t default_val);
0197 
0198 UPB_API_INLINE upb_StringView upb_Message_GetExtensionString(
0199     const upb_Message* msg, const upb_MiniTableExtension* f,
0200     upb_StringView default_val);
0201 
0202 UPB_API_INLINE upb_Message* upb_Message_GetExtensionMessage(
0203     const upb_Message* msg, const upb_MiniTableExtension* f,
0204     struct upb_Message* default_val);
0205 
0206 UPB_API_INLINE const upb_Array* upb_Message_GetExtensionArray(
0207     const upb_Message* msg, const upb_MiniTableExtension* f);
0208 
0209 UPB_API_INLINE upb_Array* upb_Message_GetExtensionMutableArray(
0210     upb_Message* msg, const upb_MiniTableExtension* f);
0211 
0212 // Extension Setters ///////////////////////////////////////////////////////////
0213 
0214 UPB_API_INLINE bool upb_Message_SetExtension(upb_Message* msg,
0215                                              const upb_MiniTableExtension* e,
0216                                              const void* value, upb_Arena* a);
0217 
0218 UPB_API_INLINE bool upb_Message_SetExtensionMessage(
0219     struct upb_Message* msg, const upb_MiniTableExtension* e,
0220     struct upb_Message* value, upb_Arena* a);
0221 
0222 UPB_API_INLINE bool upb_Message_SetExtensionBool(
0223     struct upb_Message* msg, const upb_MiniTableExtension* e, bool value,
0224     upb_Arena* a);
0225 
0226 UPB_API_INLINE bool upb_Message_SetExtensionDouble(
0227     struct upb_Message* msg, const upb_MiniTableExtension* e, double value,
0228     upb_Arena* a);
0229 
0230 UPB_API_INLINE bool upb_Message_SetExtensionFloat(
0231     struct upb_Message* msg, const upb_MiniTableExtension* e, float value,
0232     upb_Arena* a);
0233 
0234 UPB_API_INLINE bool upb_Message_SetExtensionInt32(
0235     struct upb_Message* msg, const upb_MiniTableExtension* e, int32_t value,
0236     upb_Arena* a);
0237 
0238 UPB_API_INLINE bool upb_Message_SetExtensionInt64(
0239     struct upb_Message* msg, const upb_MiniTableExtension* e, int64_t value,
0240     upb_Arena* a);
0241 
0242 UPB_API_INLINE bool upb_Message_SetExtensionString(
0243     struct upb_Message* msg, const upb_MiniTableExtension* e,
0244     upb_StringView value, upb_Arena* a);
0245 
0246 UPB_API_INLINE bool upb_Message_SetExtensionUInt32(
0247     struct upb_Message* msg, const upb_MiniTableExtension* e, uint32_t value,
0248     upb_Arena* a);
0249 
0250 UPB_API_INLINE bool upb_Message_SetExtensionUInt64(
0251     struct upb_Message* msg, const upb_MiniTableExtension* e, uint64_t value,
0252     upb_Arena* a);
0253 
0254 // Universal Setters ///////////////////////////////////////////////////////////
0255 
0256 UPB_API_INLINE bool upb_Message_SetBool(upb_Message* msg,
0257                                         const upb_MiniTableField* f, bool value,
0258                                         upb_Arena* a);
0259 
0260 UPB_API_INLINE bool upb_Message_SetDouble(upb_Message* msg,
0261                                           const upb_MiniTableField* f,
0262                                           double value, upb_Arena* a);
0263 
0264 UPB_API_INLINE bool upb_Message_SetFloat(upb_Message* msg,
0265                                          const upb_MiniTableField* f,
0266                                          float value, upb_Arena* a);
0267 
0268 UPB_API_INLINE bool upb_Message_SetInt32(upb_Message* msg,
0269                                          const upb_MiniTableField* f,
0270                                          int32_t value, upb_Arena* a);
0271 
0272 UPB_API_INLINE bool upb_Message_SetInt64(upb_Message* msg,
0273                                          const upb_MiniTableField* f,
0274                                          int64_t value, upb_Arena* a);
0275 
0276 // Unlike the other similarly-named setters, this function can only be
0277 // called on base fields. Prefer upb_Message_SetBaseFieldMessage().
0278 UPB_API_INLINE void upb_Message_SetMessage(upb_Message* msg,
0279                                            const upb_MiniTableField* f,
0280                                            upb_Message* value);
0281 
0282 UPB_API_INLINE bool upb_Message_SetString(upb_Message* msg,
0283                                           const upb_MiniTableField* f,
0284                                           upb_StringView value, upb_Arena* a);
0285 
0286 UPB_API_INLINE bool upb_Message_SetUInt32(upb_Message* msg,
0287                                           const upb_MiniTableField* f,
0288                                           uint32_t value, upb_Arena* a);
0289 
0290 UPB_API_INLINE bool upb_Message_SetUInt64(upb_Message* msg,
0291                                           const upb_MiniTableField* f,
0292                                           uint64_t value, upb_Arena* a);
0293 
0294 ////////////////////////////////////////////////////////////////////////////////
0295 
0296 UPB_API_INLINE void* upb_Message_ResizeArrayUninitialized(
0297     upb_Message* msg, const upb_MiniTableField* f, size_t size,
0298     upb_Arena* arena);
0299 
0300 UPB_API_INLINE uint32_t upb_Message_WhichOneofFieldNumber(
0301     const upb_Message* message, const upb_MiniTableField* oneof_field);
0302 
0303 // For a field `f` which is in a oneof, return the field of that
0304 // oneof that is actually set (or NULL if none).
0305 UPB_API_INLINE const upb_MiniTableField* upb_Message_WhichOneof(
0306     const upb_Message* msg, const upb_MiniTable* m,
0307     const upb_MiniTableField* f);
0308 
0309 // Updates a map entry given an entry message.
0310 bool upb_Message_SetMapEntry(upb_Map* map, const upb_MiniTable* mini_table,
0311                              const upb_MiniTableField* field,
0312                              upb_Message* map_entry_message, upb_Arena* arena);
0313 
0314 #ifdef __cplusplus
0315 } /* extern "C" */
0316 #endif
0317 
0318 #include "upb/port/undef.inc"
0319 
0320 #endif  // UPB_MESSAGE_ACCESSORS_H_