From bd8c2c4e13fa96efd0bfe6a826b42390c0c19d34 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 19 Jun 2024 10:57:40 -0400 Subject: [PATCH] xo-pyreflect: bind Metatype; + TypeDescr.metatype --- src/pyreflect/pyreflect.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pyreflect/pyreflect.cpp b/src/pyreflect/pyreflect.cpp index cf65d3d..a77993a 100644 --- a/src/pyreflect/pyreflect.cpp +++ b/src/pyreflect/pyreflect.cpp @@ -22,6 +22,17 @@ namespace xo { namespace reflect { PYBIND11_MODULE(PYREFLECT_MODULE_NAME(), m) { + m.doc() = "pybind11 plugin for xo-reflect"; + + py::enum_(m, "Metatype") + .value("invalid", Metatype::mt_invalid) + .value("atomic", Metatype::mt_atomic) + .value("pointer", Metatype::mt_pointer) + .value("vector", Metatype::mt_vector) + .value("struct", Metatype::mt_struct) + .value("function", Metatype::mt_function) + ; + /* note: possibly move this to pytime/ if/when we provide it */ //py::class_(m, "utc_nanos"); @@ -32,8 +43,10 @@ namespace xo { .def_static("lookup_by_name", &TypeDescrBase::lookup_by_name) .def_static("print_reflected_types", [](){ TypeDescrBase::print_reflected_types(std::cout); }) + .def_property_readonly("canonical_name", &TypeDescrBase::canonical_name) .def_property_readonly("short_name", &TypeDescrBase::short_name) + .def_property_readonly("metatype", &TypeDescrBase::metatype) .def_property_readonly("complete_flag", &TypeDescrBase::complete_flag) .def("__repr__", &TypeDescrBase::display_string);