#include <MeasurementContainerWithDimension.h>
|
template<std::size_t N = std::variant_size_v< measurement_container_variant_t >> |
static void | dumpVariantTypes (std::ostream &out) |
|
template<typename derived_t, typename ... T_Container>
class MeasurementContainerWithDimension< derived_t, T_Container >
Definition at line 41 of file MeasurementContainerWithDimension.h.
◆ measurement_container_variant_t
template<typename derived_t , typename ... T_Container>
◆ countDerivedVariants()
template<typename derived_t , typename ... T_Container>
template<typename container_t , std::size_t N = std::variant_size_v< measurement_container_variant_t >>
Definition at line 78 of file MeasurementContainerWithDimension.h.
83 if constexpr(isSameContainer<container_t, N-1>()) {
88 using this_container_type =
typename this_variant_type::container_type;
89 if constexpr(std::is_base_of_v<container_t, this_container_type>
90 && std::has_virtual_destructor_v<this_container_type> && std::has_virtual_destructor_v<container_t>) {
◆ countVariants()
template<typename derived_t , typename ... T_Container>
template<typename container_t , std::size_t N = std::variant_size_v< measurement_container_variant_t >>
|
inlinestaticconstexprprotected |
◆ derived()
template<typename derived_t , typename ... T_Container>
◆ dimMax()
template<typename derived_t , typename ... T_Container>
template<std::size_t N = std::variant_size_v< measurement_container_variant_t >>
|
inlinestaticconstexprprotected |
◆ dumpVariantTypes()
template<typename derived_t , typename ... T_Container>
template<std::size_t N = std::variant_size_v< measurement_container_variant_t >>
◆ getContainerWithDimension()
template<typename derived_t , typename ... T_Container>
template<typename container_t , std::size_t = std::variant_size_v< measurement_container_variant_t >>
Definition at line 239 of file MeasurementContainerWithDimension.h.
240 constexpr
unsigned int variant_multiplicity = countVariants<container_t>();
242 static constexpr std::size_t NVariants = std::variant_size_v< measurement_container_variant_t >;
243 if constexpr( variant_multiplicity == 1) {
244 return getContainerWithDimensionNoAmbiguities<container_t, false, NVariants>(
a);
247 if (variant_multiplicity==0) {
248 if (countDerivedVariants<container_t>(
a) == 1) {
249 return getContainerWithDimensionNoAmbiguities<container_t, false, NVariants>(
a);
252 DEBUG_TRACE( std::cout <<
"DEBUG need to search with dimension check for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
253 <<
" multiplicity : " << variant_multiplicity <<
" derived " << countDerivedVariants<container_t>(
a)
255 return getContainerWithDimensionNoAmbiguities<container_t, true, NVariants>(
a, getDimensionOfDerivedVariantOption<container_t,NVariants>(
a));
◆ getContainerWithDimensionNoAmbiguities()
template<typename derived_t , typename ... T_Container>
template<typename container_t , bool check_dimension, std::size_t N>
Definition at line 117 of file MeasurementContainerWithDimension.h.
123 return this_variant_type();
127 using this_container_type =
typename this_variant_type::container_type ;
128 DEBUG_TRACE( std::cout <<
"DEBUG search option for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
129 <<
" option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
130 <<
" check dimension ? " << check_dimension <<
" desired dimension " << dimension
132 if constexpr(std::is_same_v<this_container_type, container_t>) {
134 if constexpr(!check_dimension && countVariants<container_t>()==1) {
139 assert( (countVariants<this_container_type,N-1>()) == 0 );
140 DEBUG_TRACE( std::cout <<
"DEBUG --> for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
141 <<
" foumd unambiguous option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
148 if (this_variant_type::dimension() == dimension) {
149 DEBUG_TRACE( std::cout <<
"DEBUG --> for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
150 <<
" foumd dimension option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
156 else if constexpr(std::is_base_of_v<container_t, this_container_type>) {
158 if constexpr(std::has_virtual_destructor_v<this_container_type> && std::has_virtual_destructor_v<container_t>) {
161 const this_container_type *derived_container =
dynamic_cast<const this_container_type *
>(&
a);
162 if (derived_container) {
165 if constexpr(!check_dimension) {
169 if constexpr(countVariants<container_t,N-1>() != 0) {
173 DEBUG_TRACE( std::cout <<
"DEBUG --> for " <<
typeid(this_container_type).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
174 <<
" foumd derived option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
180 if (this_variant_type::dimension() == dimension) {
181 DEBUG_TRACE( std::cout <<
"DEBUG --> for " <<
typeid(this_container_type).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
182 <<
" derived with dimension option: " <<
N <<
" " <<
typeid(this_container_type).
name()
183 <<
" dim " << this_variant_type::dimension()
◆ getDimensionOfDerivedVariantOption()
template<typename derived_t , typename ... T_Container>
template<typename container_t , std::size_t N>
Definition at line 196 of file MeasurementContainerWithDimension.h.
203 using this_container_type =
typename this_variant_type::container_type;
205 DEBUG_TRACE( std::cout <<
"DEBUG determin dimension for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
206 <<
" option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
210 DEBUG_TRACE( std::cout <<
"DEBUG get dimension for " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
211 <<
" option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
213 return derived_t::getDimension(
a);
215 else if constexpr(std::is_base_of_v<container_t, this_container_type>) {
216 DEBUG_TRACE( std::cout <<
"DEBUG try get dimension for derived " <<
typeid(container_t).
name() <<
" (aka " <<
typeid(
a).
name() <<
")"
217 <<
" option: " <<
N <<
" " <<
typeid(this_container_type).
name() <<
" dim " << this_variant_type::dimension()
220 if constexpr(std::has_virtual_destructor_v<this_container_type> && std::has_virtual_destructor_v<container_t>) {
224 if constexpr(countVariants<this_container_type>() > 1) {
227 const this_container_type *derived_container =
dynamic_cast<const this_container_type *
>(&
a);
228 if (derived_container) {
229 return derived_t::getDimension(*derived_container);
◆ isSameContainer()
template<typename derived_t , typename ... T_Container>
template<typename container_t , std::size_t N>
|
inlinestaticconstexprprotected |
◆ lvalue()
template<typename derived_t , typename ... T_Container>
template<typename T >
|
inlinestaticconstexprprotected |
◆ throwContainerNotInVariant()
template<typename derived_t , typename ... T_Container>
The documentation for this class was generated from the following file: