Skip to content

Commit c8d3cac

Browse files
committed
Merge branch 'smart_holder' into pybind11k_merge_sh
2 parents 410b0e4 + 51a968c commit c8d3cac

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

tests/test_class_sh_property.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ struct Outer {
3535

3636
inline void DisownOuter(std::unique_ptr<Outer>) {}
3737

38+
struct WithCharArrayMember {
39+
WithCharArrayMember() { std::memcpy(char6_member, "Char6", 6); }
40+
char char6_member[6];
41+
};
42+
43+
struct WithConstCharPtrMember {
44+
const char *const_char_ptr_member = "ConstChar*";
45+
};
46+
3847
} // namespace test_class_sh_property
3948

4049
PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicField,
@@ -45,6 +54,9 @@ PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicOuter,
4554
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Field)
4655
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Outer)
4756

57+
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithCharArrayMember)
58+
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithConstCharPtrMember)
59+
4860
TEST_SUBMODULE(class_sh_property, m) {
4961
using namespace test_class_sh_property;
5062

@@ -83,4 +95,12 @@ TEST_SUBMODULE(class_sh_property, m) {
8395
.def_readwrite("m_shcp_readwrite", &Outer::m_shcp);
8496

8597
m.def("DisownOuter", DisownOuter);
98+
99+
py::classh<WithCharArrayMember>(m, "WithCharArrayMember")
100+
.def(py::init<>())
101+
.def_readonly("char6_member", &WithCharArrayMember::char6_member);
102+
103+
py::classh<WithConstCharPtrMember>(m, "WithConstCharPtrMember")
104+
.def(py::init<>())
105+
.def_readonly("const_char_ptr_member", &WithConstCharPtrMember::const_char_ptr_member);
86106
}

tests/test_class_sh_property.py

+10
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,13 @@ def test_unique_ptr_field_proxy_poc(m_attr):
152152
with pytest.raises(AttributeError):
153153
del field_proxy.num
154154
assert field_proxy.num == 82
155+
156+
157+
def test_readonly_char6_member():
158+
obj = m.WithCharArrayMember()
159+
assert obj.char6_member == "Char6"
160+
161+
162+
def test_readonly_const_char_ptr_member():
163+
obj = m.WithConstCharPtrMember()
164+
assert obj.const_char_ptr_member == "ConstChar*"

0 commit comments

Comments
 (0)