Loading [MathJax]/extensions/tex2jax.js
OGS
MeshLib::PropertyVector< T > Class Template Reference

Detailed Description

template<typename T>
class MeshLib::PropertyVector< T >

Class template PropertyVector is a std::vector with template parameter PROP_VAL_TYPE. The reason for the derivation of std::vector is the template specialisation for pointer types below.

Template Parameters
PROP_VAL_TYPEtypical this is a scalar, a vector or a matrix

Definition at line 18 of file CreateConstitutiveSetting.h.

#include <PropertyVector.h>

Inheritance diagram for MeshLib::PropertyVector< T >:
[legend]
Collaboration diagram for MeshLib::PropertyVector< T >:
[legend]

Public Types

using value_type = PROP_VAL_TYPE
 

Public Member Functions

constexpr std::size_t getNumberOfTuples () const
 
PROP_VAL_TYPE & getComponent (std::size_t tuple_index, int component)
 Returns the value for the given component stored in the given tuple.
 
PROP_VAL_TYPE const & getComponent (std::size_t tuple_index, int component) const
 Returns the value for the given component stored in the given tuple.
 
PropertyVectorBaseclone (std::vector< std::size_t > const &exclude_positions) const override
 
constexpr std::size_t size () const
 
constexpr std::ptrdiff_t ssize () const
 
constexpr const PROP_VAL_TYPE * data () const
 
constexpr PROP_VAL_TYPE * data ()
 
constexpr PROP_VAL_TYPE * begin ()
 
constexpr PROP_VAL_TYPE * end ()
 
constexpr const PROP_VAL_TYPE * cbegin () const
 
constexpr const PROP_VAL_TYPE * cend () const
 
constexpr const PROP_VAL_TYPE * begin () const
 
constexpr const PROP_VAL_TYPE * end () const
 
constexpr PROP_VAL_TYPE & operator[] (std::size_t const pos)
 
constexpr PROP_VAL_TYPE const & operator[] (std::size_t const pos) const
 
constexpr void resize (std::size_t const size)
 
constexpr void resize (std::size_t const size, const PROP_VAL_TYPE &value)
 
template<typename R >
requires std::ranges::input_range<R> && std::convertible_to<std::ranges::range_value_t<R>, PROP_VAL_TYPE>
constexpr void assign (R &&r)
 
constexpr void push_back (const PROP_VAL_TYPE &value)
 
constexpr void clear ()
 
constexpr bool empty () const
 
- Public Member Functions inherited from MeshLib::PropertyVectorBase
virtual ~PropertyVectorBase ()=default
 
MeshItemType getMeshItemType () const
 
std::string const & getPropertyName () const
 
int getNumberOfGlobalComponents () const
 

Protected Member Functions

 PropertyVector (std::string const &property_name, MeshItemType mesh_item_type, std::size_t n_components)
 The constructor taking meta information for the data.
 
 PropertyVector (std::size_t n_property_values, std::string const &property_name, MeshItemType mesh_item_type, std::size_t n_components)
 The constructor taking meta information for the data.
 
- Protected Member Functions inherited from MeshLib::PropertyVectorBase
 PropertyVectorBase (std::string property_name, MeshItemType mesh_item_type, std::size_t n_components)
 

Private Attributes

std::vector< PROP_VAL_TYPE > data_
 

Friends

class Properties
 

Additional Inherited Members

- Public Attributes inherited from MeshLib::PropertyVectorBase
bool is_for_output = true
 
- Protected Attributes inherited from MeshLib::PropertyVectorBase
int const _n_components
 
MeshItemType const _mesh_item_type
 
std::string const _property_name
 

Member Typedef Documentation

◆ value_type

template<typename T >
using MeshLib::PropertyVector< T >::value_type = PROP_VAL_TYPE

Definition at line 62 of file PropertyVector.h.

Constructor & Destructor Documentation

◆ PropertyVector() [1/2]

template<typename T >
MeshLib::PropertyVector< T >::PropertyVector ( std::string const & property_name,
MeshItemType mesh_item_type,
std::size_t n_components )
inlineexplicitprotected

The constructor taking meta information for the data.

Parameters
property_namea string describing the property
mesh_item_typethe values of the property are either assigned to nodes or cells (see enumeration MeshItemType)
n_componentsthe number of components of a property

Definition at line 177 of file PropertyVector.h.

180 : PropertyVectorBase(property_name, mesh_item_type, n_components)
181 {
182 }
PropertyVectorBase(std::string property_name, MeshItemType mesh_item_type, std::size_t n_components)

Referenced by MeshLib::PropertyVector< T >::clone().

◆ PropertyVector() [2/2]

template<typename T >
MeshLib::PropertyVector< T >::PropertyVector ( std::size_t n_property_values,
std::string const & property_name,
MeshItemType mesh_item_type,
std::size_t n_components )
inlineprotected

The constructor taking meta information for the data.

Parameters
n_property_valuesnumber of property values (value can be a tuple with several entries)
property_namea string describing the property
mesh_item_typethe values of the property are either assigned to nodes or cells (see enumeration MeshItemType)
n_componentsthe number of components of a property

Definition at line 191 of file PropertyVector.h.

195 : PropertyVectorBase(property_name, mesh_item_type, n_components),
196 data_(n_property_values * n_components)
197 {
198 }
std::vector< PROP_VAL_TYPE > data_

Member Function Documentation

◆ assign()

template<typename T >
template<typename R >
requires std::ranges::input_range<R> && std::convertible_to<std::ranges::range_value_t<R>, PROP_VAL_TYPE>
void MeshLib::PropertyVector< T >::assign ( R && r)
inlineconstexpr

Definition at line 146 of file PropertyVector.h.

147 {
148#if __cpp_lib_containers_ranges >= 202202L
149 data_.assign_range(r);
150#else
151 if constexpr (ranges::common_range<R>)
152 {
153 data_.assign(r.begin(), r.end());
154 }
155 else
156 {
157 data_.assign(ranges::views::common(r).begin(),
158 ranges::views::common(r).end());
159 }
160#endif
161 }
constexpr PROP_VAL_TYPE * end()
constexpr PROP_VAL_TYPE * begin()

References MeshLib::PropertyVector< T >::begin(), MeshLib::PropertyVector< T >::data_, and MeshLib::PropertyVector< T >::end().

Referenced by Vtu2GridDialog::accept(), and MeshToolsLib::ElementValueModification::condense().

◆ begin() [1/2]

◆ begin() [2/2]

template<typename T >
const PROP_VAL_TYPE * MeshLib::PropertyVector< T >::begin ( ) const
inlineconstexpr

Definition at line 115 of file PropertyVector.h.

115{ return cbegin(); }
constexpr const PROP_VAL_TYPE * cbegin() const

References MeshLib::PropertyVector< T >::cbegin().

◆ cbegin()

template<typename T >
const PROP_VAL_TYPE * MeshLib::PropertyVector< T >::cbegin ( ) const
inlineconstexpr

◆ cend()

template<typename T >
const PROP_VAL_TYPE * MeshLib::PropertyVector< T >::cend ( ) const
inlineconstexpr

Definition at line 111 of file PropertyVector.h.

112 {
113 return data_.data() + data_.size();
114 }

References MeshLib::PropertyVector< T >::data_.

Referenced by MeshLib::PropertyVector< T >::end(), main(), and MeshElementRemovalDialog::setRangeValues().

◆ clear()

template<typename T >
void MeshLib::PropertyVector< T >::clear ( )
inlineconstexpr

Definition at line 168 of file PropertyVector.h.

168{ data_.clear(); }

References MeshLib::PropertyVector< T >::data_.

◆ clone()

template<typename T >
PropertyVectorBase * MeshLib::PropertyVector< T >::clone ( std::vector< std::size_t > const & exclude_positions) const
inlineoverridevirtual

Implements MeshLib::PropertyVectorBase.

Definition at line 87 of file PropertyVector.h.

89 {
90 auto* cloned_pv = new PropertyVector<PROP_VAL_TYPE>(
92 cloned_pv->data_ = BaseLib::excludeObjectCopy(data_, exclude_positions);
93 return cloned_pv;
94 }
MeshItemType const _mesh_item_type
std::string const _property_name
PropertyVector(std::string const &property_name, MeshItemType mesh_item_type, std::size_t n_components)
The constructor taking meta information for the data.
std::vector< T > excludeObjectCopy(std::vector< T > const &src_vec, std::vector< std::size_t > const &exclude_positions)
Definition Algorithm.h:42

References MeshLib::PropertyVector< T >::PropertyVector(), MeshLib::PropertyVectorBase::_mesh_item_type, MeshLib::PropertyVectorBase::_n_components, MeshLib::PropertyVectorBase::_property_name, MeshLib::PropertyVector< T >::data_, and BaseLib::excludeObjectCopy().

◆ data() [1/2]

template<typename T >
PROP_VAL_TYPE * MeshLib::PropertyVector< T >::data ( )
inlineconstexpr

Definition at line 105 of file PropertyVector.h.

105{ return data_.data(); }

References MeshLib::PropertyVector< T >::data_.

◆ data() [2/2]

◆ empty()

template<typename T >
bool MeshLib::PropertyVector< T >::empty ( ) const
inlineconstexpr

◆ end() [1/2]

◆ end() [2/2]

template<typename T >
const PROP_VAL_TYPE * MeshLib::PropertyVector< T >::end ( ) const
inlineconstexpr

Definition at line 116 of file PropertyVector.h.

116{ return cend(); }
constexpr const PROP_VAL_TYPE * cend() const

References MeshLib::PropertyVector< T >::cend().

◆ getComponent() [1/2]

template<typename T >
PROP_VAL_TYPE & MeshLib::PropertyVector< T >::getComponent ( std::size_t tuple_index,
int component )
inline

◆ getComponent() [2/2]

template<typename T >
PROP_VAL_TYPE const & MeshLib::PropertyVector< T >::getComponent ( std::size_t tuple_index,
int component ) const
inline

Returns the value for the given component stored in the given tuple.

Definition at line 79 of file PropertyVector.h.

81 {
82 assert(component < _n_components);
83 assert(tuple_index < getNumberOfTuples());
84 return data_[tuple_index * getNumberOfGlobalComponents() + component];
85 }

References MeshLib::PropertyVectorBase::_n_components, MeshLib::PropertyVector< T >::data_, MeshLib::PropertyVectorBase::getNumberOfGlobalComponents(), and MeshLib::PropertyVector< T >::getNumberOfTuples().

◆ getNumberOfTuples()

◆ operator[]() [1/2]

template<typename T >
PROP_VAL_TYPE & MeshLib::PropertyVector< T >::operator[] ( std::size_t const pos)
inlineconstexpr

Definition at line 118 of file PropertyVector.h.

119 {
120 if constexpr (std::is_same_v<PROP_VAL_TYPE, bool>)
121 {
122 static_assert(!std::is_same_v<PROP_VAL_TYPE, bool>,
123 "PropertyVector<bool>::operator[] cannot be "
124 "instantiated for booleans.");
125 }
126 else
127 {
128 return data_[pos];
129 }
130 }

References MeshLib::PropertyVector< T >::data_.

◆ operator[]() [2/2]

template<typename T >
PROP_VAL_TYPE const & MeshLib::PropertyVector< T >::operator[] ( std::size_t const pos) const
inlineconstexpr

Definition at line 131 of file PropertyVector.h.

132 {
133 return data_[pos];
134 }

References MeshLib::PropertyVector< T >::data_.

◆ push_back()

◆ resize() [1/2]

◆ resize() [2/2]

template<typename T >
void MeshLib::PropertyVector< T >::resize ( std::size_t const size,
const PROP_VAL_TYPE & value )
inlineconstexpr

Definition at line 137 of file PropertyVector.h.

138 {
139 data_.resize(size, value);
140 }

References MeshLib::PropertyVector< T >::data_, and MeshLib::PropertyVector< T >::size().

◆ size()

◆ ssize()

template<typename T >
std::ptrdiff_t MeshLib::PropertyVector< T >::ssize ( ) const
inlineconstexpr

Definition at line 100 of file PropertyVector.h.

100{ return std::ssize(data_); }

References MeshLib::PropertyVector< T >::data_.

Friends And Related Symbol Documentation

◆ Properties

template<typename T >
friend class Properties
friend

Definition at line 59 of file PropertyVector.h.

Member Data Documentation

◆ data_


The documentation for this class was generated from the following files: