/** * @file bindings.h * @brief Declares the function to register polytrope module C++ components with pybind11. * * This file contains the declaration for `register_polytrope_bindings`, which is responsible * for creating Python bindings for classes and functions within the `serif::polytrope` C++ * namespace. These bindings will be accessible in Python under the `serif.polytrope` submodule. */ #pragma once #include /** * @brief Registers C++ classes and functions from the `serif::polytrope` namespace to Python. * * This function takes a pybind11::module object, representing the `serif.polytrope` Python submodule, * and adds bindings for various components like `PolytropeOperator`, `PolySolver`, etc. * This allows these C++ components to be instantiated and used directly from Python. * * @param polytrope_submodule The pybind11 module (typically `serif.polytrope`) to which * the polytrope C++ bindings will be added. * * @par Python Usage Example: * After these bindings are registered and the Python module is imported: * @code{.py} * from serif.polytrope import PolySolver * polytrope = PolySolver(1.5, 1) * polytrope.solve() * @endcode */ void register_polytrope_bindings(pybind11::module &polytrope_submodule);