#include <pybind11/pybind11.h>

namespace py = pybind11;

/* Simple test module/test class to check that the referenced internals data of external pybind11
 * modules aren't preserved over a finalize/initialize.
 */

PYBIND11_MODULE(external_module, m) {
    class A {
    public:
        explicit A(int value) : v{value} {};
        int v;
    };

    py::class_<A>(m, "A")
        .def(py::init<int>())
        .def_readwrite("value", &A::v);

    m.def("internals_at", []() {
        return reinterpret_cast<uintptr_t>(&py::detail::get_internals());
    });
}
