diff --git a/.gitignore b/.gitignore index 53a9c92f..2d66a655 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +# emacs workspace config +.projectile # lsp keeps state here .cache # typical build directory diff --git a/CMakeLists.txt b/CMakeLists.txt index cc36dfaa..32311792 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,15 +7,7 @@ project(xo_pyreflect VERSION 0.1) include(GNUInstallDirs) include(cmake/xo-bootstrap-macros.cmake) -xo_cxx_toplevel_options2() - -# ---------------------------------------------------------------- -# cmake -DCMAKE_BUILD_TYPE=coverage -xo_toplevel_coverage_config2() - -# ---------------------------------------------------------------- -# cmake -DCMAKE_BUILD_TYPE=debug -xo_toplevel_debug_config2() +xo_cxx_toplevel_options3() # ---------------------------------------------------------------- # c++ settings (usually temporary) diff --git a/src/pyreflect/pyreflect.cpp b/src/pyreflect/pyreflect.cpp index 35b971a3..b2302685 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"); @@ -34,9 +45,15 @@ namespace xo { */ py::class_>(m, "TypeDescr") + + .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); /* note: this means python will use