resources.hpp memory tuple type_traits utility vector mfem/fem/gridfunc.hpp serif/backend/mfem/mapping/domain_mapper.hpp serif/utils/dependencies/dependency_context.hpp serif/utils/dependencies/key_list_operations.hpp src/include/serif/backend/mfem/model/finite_elements.hpp src/include/serif/backend/mfem/serialize/resources.hpp serif::discretization::backend::mfem::Resources serif::discretization::backend::mfem::OwnedBindings< Context, utils::dependencies::KeyList< Keys... > > serif serif::discretization serif::discretization::backend serif::discretization::backend::mfem #pragmaonce #include<memory> #include<tuple> #include<type_traits> #include<utility> #include<vector> #include"mfem/fem/gridfunc.hpp" #include"serif/backend/mfem/mapping/domain_mapper.hpp" #include"serif/utils/dependencies/dependency_context.hpp" #include"serif/utils/dependencies/key_list_operations.hpp" namespaceserif::discretization::backend::mfem{ structResources{ std::vector<std::unique_ptr<::mfem::Mesh>>meshes; std::vector<std::unique_ptr<::mfem::FiniteElementCollection>>collections; std::vector<std::unique_ptr<::mfem::FiniteElementSpace>>spaces; std::unique_ptr<::mfem::GridFunction>compactification; std::unique_ptr<mapping::DomainMapper>mapper; }; template<typenameContext,typenameKeys=typenameContext::Keys> structOwnedBindings; template<typenameContext,typename...Keys> structOwnedBindings<Context,utils::dependencies::KeyList<Keys...>>{ template<typenameKey> usingBinding=std::remove_cvref_t<decltype(std::declval<Context>().templateget<Key>())>; Resourcesresources; std::tuple<std::unique_ptr<Binding<Keys>>...>bindings; [[nodiscard]]autocontext()const{ usingnamespaceutils::dependencies; returnmake_dependency_context(borrow<Keys>(*std::get<key_index<Keys,KeyList<Keys...>>()>(bindings))...); } }; }