#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: