15 #ifndef BORNAGAIN_CORE_MULTILAYER_LAYER_H
16 #define BORNAGAIN_CORE_MULTILAYER_LAYER_H
39 double thickness()
const {
return m_thickness; }
44 void addLayout(
const ILayout& decoration);
45 size_t numberOfLayouts()
const {
return m_layouts.size(); }
46 std::vector<const ILayout*> layouts()
const;
48 std::vector<const INode*>
getChildren() const override final;
50 void registerThickness(
bool make_registered = true);
52 void setNumberOfSlices(
unsigned int n_slices) { m_n_slices = n_slices; }
53 unsigned int numberOfSlices()
const {
return m_n_slices; }
60 unsigned int m_n_slices = 1;
Defines interface class ISample.
Defines and implements class Material.
Defines and implements template class SafePointerVector.
Pure virtual interface class to equip a sample layer with scattering properties.
Visitor interface to visit ISample objects.
Pure virtual base class for sample components and properties related to scattering.
A layer, with thickness (in nanometer) and material.
const Material * material() const override final
Returns nullptr, unless overwritten to return a specific material.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
Layer * clone() const override final
Returns a clone of this ISample object.
void setThickness(double thickness)
Sets layer thickness in nanometers.
Layer(Material material, double thickness=0)
Constructor of a layer with thickness and material.
A wrapper for underlying material implementation.