#ifndef FESA_PROPERTIES_ELEMENT_PROPERTY_H_ #define FESA_PROPERTIES_ELEMENT_PROPERTY_H_ #include "fesa/core/source_identity.h" namespace fesa { /// @brief Identifies the supported concrete element-property semantics. enum class ElementPropertyKind { kGeneralBeamSection, kShellSection }; /// @brief Provides stable identity for a Domain-owned element property. class ElementProperty { public: virtual ~ElementProperty() = default; /// @brief Returns the concrete property kind. virtual ElementPropertyKind 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 property. virtual const SourceLocation& Location() const noexcept = 0; }; } // namespace fesa #endif // FESA_PROPERTIES_ELEMENT_PROPERTY_H_