Skip to content

Improve versatility and robustness of `cpptype`, and document it in the user guide

Frederik Hennig requested to merge fhennig/cpptypes into master

This MR improves the implementation and interface of cpptype, adds a number of tests, extends the STL API reflections using it, and introduces a user guide section on API reflection.

lang.cpptype

  • Fix correct cloning of CppType, as required for (de)constify, by keeping and passing on the raw template parameters
  • Customize the template formatter to reject superfluous template arguments
  • Have cpptype return a CppTypeFactory object which is used to instantiate class templates, and apply const and ref qualifications
  • Introduce the convenience subblass CppClass of AugExpr to simplify the definition of API reflections for C++ classes

lang.cpp.std

  • Update reflections of C++ STL classes to use the new features of cpptype

Composer

  • Remove the undocumented cpptype method from the composer, to avoid confusion about its name

Documentation

  • Add a user guide section on cpptype and API reflection using CppClass
  • Add myst-nb as the MyST markdown engine in order to parse and execute Jupyter and text-based notebooks

Merge request reports