#pragma once #include "fesa/core/status.hpp" #include "fesa/model/model_types.hpp" #include #include #include namespace fesa { // Owns the complete semantic definition. Public access remains const so a // vector position can serve as a stable internal index after construction. class Domain { public: static Result create(ModelDefinition definition); const std::vector& nodes() const noexcept; const std::vector& elements() const noexcept; const std::vector& materials() const noexcept; const std::vector& sections() const noexcept; const std::vector& nodeSets() const noexcept; const std::vector& elementSets() const noexcept; const std::vector& steps() const noexcept; const std::vector& warnings() const noexcept; const std::filesystem::path& sourcePath() const noexcept; const std::string& sourceContentIdentity() const noexcept; private: explicit Domain(ModelDefinition definition); ModelDefinition definition_; }; } // namespace fesa