Updated freshness on several docs, and made some minor updates to the content.
PiperOrigin-RevId: 604993985pull/15755/head
parent
f55a9b4936
commit
ffd7e1702a
|
@ -2,7 +2,7 @@
|
|||
|
||||
<!--*
|
||||
# Document freshness: For more information, see go/fresh-source.
|
||||
freshness: { owner: 'haberman' reviewed: '2022-05-08' }
|
||||
freshness: { owner: 'haberman' reviewed: '2024-02-05' }
|
||||
*-->
|
||||
|
||||
Since upb is written in pure C, we supplement the
|
||||
|
@ -47,19 +47,31 @@ PyObject* PyUpb_CMessage_GetAttr(PyObject* _self, PyObject* attr);
|
|||
|
||||
### Private Functions and Members
|
||||
|
||||
Since we do not have `private` in C++, we use a leading underscore convention
|
||||
to mark internal functions and variables that should only be accessed from
|
||||
upb:
|
||||
Since we do not have `private` in C++, we use the `UPB_PRIVATE()` macro to mark
|
||||
internal functions and variables that should only be accessed from upb:
|
||||
|
||||
```c++
|
||||
// Internal-only function.
|
||||
int64_t _upb_Int64_FromLL();
|
||||
int64_t UPB_PRIVATE(upb_Int64_FromLL)();
|
||||
|
||||
// Internal-only members. Underscore prefixes are only necessary when the
|
||||
// structure is defined in a header file.
|
||||
typedef struct {
|
||||
const int32_t* _values; // List of values <0 or >63
|
||||
uint64_t _mask; // Bits are set for acceptable value 0 <= x < 64
|
||||
int _value_count;
|
||||
const int32_t* UPB_PRIVATE(values);
|
||||
uint64_t UPB_PRIVATE(mask);
|
||||
int UPB_PRIVATE(value_count);
|
||||
} upb_MiniTableEnum;
|
||||
|
||||
// Using these members in an internal function.
|
||||
int upb_SomeFunction(const upb_MiniTableEnum* e) {
|
||||
return e->UPB_PRIVATE(value_count);
|
||||
}
|
||||
```
|
||||
|
||||
This prevents users from accessing these symbols, because `UPB_PRIVATE()`
|
||||
is defined in `port_def.inc` and undefined in `port_undef.inc`, and these
|
||||
textual headers are not accessible by users.
|
||||
|
||||
It is only necessary to use `UPB_PRIVATE()` for things defined in headers.
|
||||
For symbols in `.c` files, it is sufficient to mark private functions with
|
||||
`static`.
|
||||
|
|
Loading…
Reference in New Issue