WPILibC++ 2027.0.0-alpha-3
Loading...
Searching...
No Matches
extension.h
Go to the documentation of this file.
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_EXTENSION_H_
9#define UPB_MINI_TABLE_INTERNAL_EXTENSION_H_
10
11#include <stddef.h>
12#include <stdint.h>
13
17
18// Must be last.
19#include "upb/port/def.inc"
20
22 // Do not move this field. We need to be able to alias pointers.
24
25 const struct upb_MiniTable* UPB_PRIVATE(extendee);
26 union upb_MiniTableSub UPB_PRIVATE(sub); // NULL unless submsg or proto2 enum
27};
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
37
38UPB_API_INLINE uint32_t
40 return e->UPB_PRIVATE(field).UPB_ONLYBITS(number);
41}
42
44 const struct upb_MiniTableExtension* e) {
45 return e->UPB_PRIVATE(extendee);
46}
47
55
63
65 struct upb_MiniTableExtension* e, const struct upb_MiniTable* m) {
66 if (e->UPB_PRIVATE(field).UPB_PRIVATE(descriptortype) !=
68 return false;
69 }
70 e->UPB_PRIVATE(sub).UPB_PRIVATE(submsg) = m;
71 return true;
72}
73
75 struct upb_MiniTableExtension* e, const struct upb_MiniTableEnum* en) {
76 if (e->UPB_PRIVATE(field).UPB_PRIVATE(descriptortype) !=
78 return false;
79 }
80 e->UPB_PRIVATE(sub).UPB_PRIVATE(subenum) = en;
81 return true;
82}
83
88
89#ifdef __cplusplus
90} /* extern "C" */
91#endif
92
93#include "upb/port/undef.inc"
94
95#endif /* UPB_MINI_TABLE_INTERNAL_EXTENSION_H_ */
#define UPB_API_INLINE
Definition def.inc:163
#define UPB_PRIVATE(x)
Definition def.inc:393
#define UPB_INLINE
Definition def.inc:144
upb_CType
Definition descriptor_constants.h:18
@ kUpb_CType_Enum
Definition descriptor_constants.h:23
@ kUpb_CType_Message
Definition descriptor_constants.h:24
@ kUpb_FieldType_Enum
Definition descriptor_constants.h:54
@ kUpb_FieldType_Message
Definition descriptor_constants.h:51
UPB_API_INLINE upb_CType upb_MiniTableField_CType(const upb_MiniTableField *f)
UPB_INLINE upb_FieldRep UPB_PRIVATE _upb_MiniTableField_GetRep(const struct upb_MiniTableField *f)
Definition field.h:83
upb_FieldRep
Definition field.h:60
UPB_API_INLINE upb_CType upb_MiniTableExtension_CType(const upb_MiniTableExtension *e)
UPB_API_INLINE uint32_t upb_MiniTableExtension_Number(const upb_MiniTableExtension *e)
UPB_API_INLINE bool upb_MiniTableExtension_SetSubMessage(upb_MiniTableExtension *e, const upb_MiniTable *m)
UPB_API_INLINE const upb_MiniTable * upb_MiniTableExtension_Extendee(const upb_MiniTableExtension *e)
UPB_API_INLINE const upb_MiniTableEnum * upb_MiniTableExtension_GetSubEnum(const upb_MiniTableExtension *e)
UPB_API_INLINE const upb_MiniTable * upb_MiniTableExtension_GetSubMessage(const upb_MiniTableExtension *e)
UPB_API_INLINE bool upb_MiniTableExtension_SetSubEnum(upb_MiniTableExtension *e, const upb_MiniTableEnum *m)
UPB_INLINE upb_FieldRep UPB_PRIVATE _upb_MiniTableExtension_GetRep(const struct upb_MiniTableExtension *e)
Definition extension.h:84
Definition reader.h:17
Definition enum.h:16
Definition extension.h:21
const struct upb_MiniTable * UPB_PRIVATE(extendee)
struct upb_MiniTableField UPB_PRIVATE(field)
Definition field.h:21
uint32_t UPB_ONLYBITS(number)
uint16_t UPB_PRIVATE(submsg_index)
Definition message.h:54
UPB_API_INLINE const upb_MiniTable * upb_MiniTableSub_Message(upb_MiniTableSub sub)
Definition sub.h:47
UPB_API_INLINE const upb_MiniTableEnum * upb_MiniTableSub_Enum(upb_MiniTableSub sub)
Definition sub.h:42
Definition sub.h:19