mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-24 14:15:11 +00:00
Use a named rather than anon struct in instance
The anonymous struct nested in a union triggers a -Wnested-anon-type warning ("anonymous types declared in an anonymous union are an extension") under clang (#1204). This names the struct and defines it out of the definition of `instance` to get around to warning (and makes the code slightly simpler).
This commit is contained in:
parent
7f170fe4e1
commit
c8f07b5d01
@ -377,16 +377,18 @@ constexpr size_t instance_simple_holder_in_ptrs() {
|
|||||||
struct type_info;
|
struct type_info;
|
||||||
struct value_and_holder;
|
struct value_and_holder;
|
||||||
|
|
||||||
|
struct nonsimple_values_and_holders {
|
||||||
|
void **values_and_holders;
|
||||||
|
uint8_t *status;
|
||||||
|
};
|
||||||
|
|
||||||
/// The 'instance' type which needs to be standard layout (need to be able to use 'offsetof')
|
/// The 'instance' type which needs to be standard layout (need to be able to use 'offsetof')
|
||||||
struct instance {
|
struct instance {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
/// Storage for pointers and holder; see simple_layout, below, for a description
|
/// Storage for pointers and holder; see simple_layout, below, for a description
|
||||||
union {
|
union {
|
||||||
void *simple_value_holder[1 + instance_simple_holder_in_ptrs()];
|
void *simple_value_holder[1 + instance_simple_holder_in_ptrs()];
|
||||||
struct {
|
nonsimple_values_and_holders nonsimple;
|
||||||
void **values_and_holders;
|
|
||||||
uint8_t *status;
|
|
||||||
} nonsimple;
|
|
||||||
};
|
};
|
||||||
/// Weak references (needed for keep alive):
|
/// Weak references (needed for keep alive):
|
||||||
PyObject *weakrefs;
|
PyObject *weakrefs;
|
||||||
|
Loading…
Reference in New Issue
Block a user