Skip to content

Accessing addresses to members #184

@very-cool-name

Description

@very-cool-name

Hey, I have some pybinded structs, that have a lot of repeating boilerplate:

struct MyStruct {
  int x;
  char c;
};

py::class_< MyStruct >(module, "MyStruct")
  .def_readonly("x", &MyStruct::x)
  .def_readonly("c", &MyStruct::c);

I was thinking about using boost::pfr to automate this, but I don't think there is currently any way, since boost::pfr doesn't have an interface to access member addresses i.e. something like this:

auto cls = py::class_< MyStruct >(module, "MyStruct");
boost::pfr::for_each_member_address_with_name<MyStruct>([cls](std::string_view name, auto address) {
  cls.def_readonly(name, address);
});

Is there any interest in having such interface? And if so - I think I can make a PR. If you could give me some hints on possible implementation - that would be greatly appreciated.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedPR with a fix would be appreciated

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions