#include <pybind11/pybind11.h>

#include <string>

#include "const/bindings.h"
#include "composition/bindings.h"
#include "config/bindings.h"
#include "eos/bindings.h"
#include "mfem/bindings.h"
#include "polytrope/bindings.h"

PYBIND11_MODULE(serif, m) {
    m.doc() = "Python bindings for the SERiF project";

    auto compMod  = m.def_submodule("composition", "Composition-module bindings");
    register_comp_bindings(compMod);

    auto constMod = m.def_submodule("constants", "Constants-module bindings");
    register_const_bindings(constMod);

    auto configMod = m.def_submodule("config", "Configuration-module bindings");
    register_config_bindings(configMod);

    auto eosMod = m.def_submodule("eos", "EOS-module bindings");
    register_eos_bindings(eosMod);

    auto mfemMod = m.def_submodule("mfem", "MFEM bindings");
    register_mfem_bindings(mfemMod);

    auto polytropeMod = m.def_submodule("polytrope", "Polytrope-module bindings");
    register_polytrope_bindings(polytropeMod);
}