#ifndef FESA_MATERIALS_MATERIAL_H_ #define FESA_MATERIALS_MATERIAL_H_ #include "fesa/core/source_identity.h" namespace fesa { /// @brief Identifies the supported concrete material semantics. enum class MaterialKind { kIsotropicLinearElastic }; /// @brief Provides stable identity for a Domain-owned material definition. class Material { public: virtual ~Material() = default; /// @brief Returns the concrete material kind. virtual MaterialKind Kind() const noexcept = 0; /// @brief Returns the stable source identity preserved for diagnostics. virtual const SourceEntityId& SourceId() const noexcept = 0; /// @brief Returns the input location that defined the material. virtual const SourceLocation& Location() const noexcept = 0; }; } // namespace fesa #endif // FESA_MATERIALS_MATERIAL_H_