feat(cpp-object-oriented-modular-refactoring): step 12 - material-property-hierarchy
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#ifndef FESA_PROPERTIES_SHELL_SECTION_H_
|
||||
#define FESA_PROPERTIES_SHELL_SECTION_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "fesa/core/status.h"
|
||||
#include "fesa/properties/element_property.h"
|
||||
|
||||
namespace fesa {
|
||||
|
||||
/// @brief Stores a centered constant-thickness shell section assignment.
|
||||
class ShellSection final : public ElementProperty {
|
||||
public:
|
||||
/// @brief Creates a validated shell section.
|
||||
/// @param thickness Positive thickness in the active consistent unit system.
|
||||
/// @param material_index Stable Domain material collection position.
|
||||
/// @return A section or a structured model failure.
|
||||
static Result<ShellSection> Create(SourceEntityId source_id, std::string name,
|
||||
double thickness,
|
||||
EntityIndex material_index,
|
||||
SourceLocation location);
|
||||
|
||||
/// @brief Constructs an already validated parser-owned shell record.
|
||||
/// @note This compatibility seam preserves current consumers until Domain
|
||||
/// polymorphic ownership is migrated.
|
||||
ShellSection(std::string name, double thickness, EntityIndex material_index,
|
||||
SourceLocation location);
|
||||
|
||||
ElementPropertyKind Kind() const noexcept override;
|
||||
const SourceEntityId& SourceId() const noexcept override;
|
||||
const SourceLocation& Location() const noexcept override;
|
||||
|
||||
/// @brief Returns the source shell-section name.
|
||||
const std::string& Name() const noexcept;
|
||||
/// @brief Returns centered shell thickness.
|
||||
double Thickness() const noexcept;
|
||||
/// @brief Returns the stable Domain material collection position.
|
||||
EntityIndex MaterialIndex() const noexcept;
|
||||
|
||||
// Public storage preserves the current semantic-record API until Domain
|
||||
// ownership migrates in the next approved Step.
|
||||
std::string name;
|
||||
double thickness;
|
||||
EntityIndex material_index;
|
||||
SourceLocation location;
|
||||
|
||||
private:
|
||||
/// @brief Constructs a candidate whose fields have already been checked.
|
||||
ShellSection(SourceEntityId source_id, std::string name, double thickness,
|
||||
EntityIndex material_index, SourceLocation location);
|
||||
|
||||
SourceEntityId source_id_;
|
||||
};
|
||||
|
||||
} // namespace fesa
|
||||
|
||||
#endif // FESA_PROPERTIES_SHELL_SECTION_H_
|
||||
Reference in New Issue
Block a user