The Gaudi Framework  v36r6 (b1ee9983)
Gaudi::Functional::details::vector_of_const_< Container > Class Template Reference

#include </builds/gaudi/Gaudi/GaudiAlg/include/GaudiAlg/FunctionalDetails.h>

Collaboration diagram for Gaudi::Functional::details::vector_of_const_< Container >:

Classes

class  iterator
 

Public Types

using value_type = std::conditional_t< is_pointer, ptr_t, val_t >
 
using size_type = typename ContainerVector::size_type
 

Public Member Functions

 vector_of_const_ ()=default
 
void reserve (size_type size)
 
template<typename T >
void push_back (T &&container)
 
iterator begin () const
 
iterator end () const
 
size_type size () const
 
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v< X >, ref_tfront () const
 
template<typename X = Container>
std::enable_if_t< std::is_pointer_v< X >, ptr_tfront () const
 
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v< X >, ref_tback () const
 
template<typename X = Container>
std::enable_if_t< std::is_pointer_v< X >, ptr_tback () const
 
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v< X >, ref_toperator[] (size_type i) const
 
template<typename X = Container>
std::enable_if_t< std::is_pointer_v< X >, ptr_toperator[] (size_type i) const
 
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v< X >, ref_tat (size_type i) const
 
template<typename X = Container>
std::enable_if_t< std::is_pointer_v< X >, ptr_tat (size_type i) const
 
bool is_null (size_type i) const
 

Private Types

using val_t = std::add_const_t< std::remove_pointer_t< Container > >
 
using ptr_t = std::add_pointer_t< val_t >
 
using ref_t = std::add_lvalue_reference_t< val_t >
 
using ContainerVector = std::vector< std::conditional_t< is_range, std::remove_const_t< val_t >, ptr_t > >
 

Private Attributes

ContainerVector m_containers
 

Static Private Attributes

static constexpr bool is_pointer = std::is_pointer_v<Container>
 
static constexpr bool is_range = details2::is_gaudi_range_v<Container>
 

Detailed Description

template<typename Container>
class Gaudi::Functional::details::vector_of_const_< Container >

Definition at line 294 of file FunctionalDetails.h.

Member Typedef Documentation

◆ ContainerVector

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::ContainerVector = std::vector<std::conditional_t<is_range, std::remove_const_t<val_t>, ptr_t> >
private

Definition at line 300 of file FunctionalDetails.h.

◆ ptr_t

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::ptr_t = std::add_pointer_t<val_t>
private

Definition at line 298 of file FunctionalDetails.h.

◆ ref_t

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::ref_t = std::add_lvalue_reference_t<val_t>
private

Definition at line 299 of file FunctionalDetails.h.

◆ size_type

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::size_type = typename ContainerVector::size_type

Definition at line 305 of file FunctionalDetails.h.

◆ val_t

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::val_t = std::add_const_t<std::remove_pointer_t<Container> >
private

Definition at line 297 of file FunctionalDetails.h.

◆ value_type

template<typename Container >
using Gaudi::Functional::details::vector_of_const_< Container >::value_type = std::conditional_t<is_pointer, ptr_t, val_t>

Definition at line 304 of file FunctionalDetails.h.

Constructor & Destructor Documentation

◆ vector_of_const_()

template<typename Container >
Gaudi::Functional::details::vector_of_const_< Container >::vector_of_const_ ( )
default

Member Function Documentation

◆ at() [1/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v<X>, ref_t> Gaudi::Functional::details::vector_of_const_< Container >::at ( size_type  i) const
inline

Definition at line 380 of file FunctionalDetails.h.

380  {
381  return *m_containers[i];
382  }

◆ at() [2/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<std::is_pointer_v<X>, ptr_t> Gaudi::Functional::details::vector_of_const_< Container >::at ( size_type  i) const
inline

Definition at line 384 of file FunctionalDetails.h.

384  {
385  return m_containers[i];
386  }

◆ back() [1/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v<X>, ref_t> Gaudi::Functional::details::vector_of_const_< Container >::back ( ) const
inline

Definition at line 362 of file FunctionalDetails.h.

362  {
363  return *m_containers.back();
364  }

◆ back() [2/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<std::is_pointer_v<X>, ptr_t> Gaudi::Functional::details::vector_of_const_< Container >::back ( ) const
inline

Definition at line 366 of file FunctionalDetails.h.

366  {
367  return m_containers.back();
368  }

◆ begin()

template<typename Container >
iterator Gaudi::Functional::details::vector_of_const_< Container >::begin ( ) const
inline

Definition at line 348 of file FunctionalDetails.h.

348 { return m_containers.begin(); }

◆ end()

template<typename Container >
iterator Gaudi::Functional::details::vector_of_const_< Container >::end ( ) const
inline

Definition at line 349 of file FunctionalDetails.h.

349 { return m_containers.end(); }

◆ front() [1/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v<X>, ref_t> Gaudi::Functional::details::vector_of_const_< Container >::front ( ) const
inline

Definition at line 353 of file FunctionalDetails.h.

353  {
354  return *m_containers.front();
355  }

◆ front() [2/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<std::is_pointer_v<X>, ptr_t> Gaudi::Functional::details::vector_of_const_< Container >::front ( ) const
inline

Definition at line 357 of file FunctionalDetails.h.

357  {
358  return m_containers.front();
359  }

◆ is_null()

template<typename Container >
bool Gaudi::Functional::details::vector_of_const_< Container >::is_null ( size_type  i) const
inline

Definition at line 388 of file FunctionalDetails.h.

388 { return !m_containers[i]; }

◆ operator[]() [1/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<!std::is_pointer_v<X>, ref_t> Gaudi::Functional::details::vector_of_const_< Container >::operator[] ( size_type  i) const
inline

Definition at line 371 of file FunctionalDetails.h.

371  {
372  return *m_containers[i];
373  }

◆ operator[]() [2/2]

template<typename Container >
template<typename X = Container>
std::enable_if_t<std::is_pointer_v<X>, ptr_t> Gaudi::Functional::details::vector_of_const_< Container >::operator[] ( size_type  i) const
inline

Definition at line 375 of file FunctionalDetails.h.

375  {
376  return m_containers[i];
377  }

◆ push_back()

template<typename Container >
template<typename T >
void Gaudi::Functional::details::vector_of_const_< Container >::push_back ( T &&  container)
inline

Definition at line 344 of file FunctionalDetails.h.

344  {
345  details2::push_back( m_containers, std::forward<T>( container ),
346  std::bool_constant < is_pointer || is_range > {} );
347  } // note: does not copy its argument, so we're not really a container...

◆ reserve()

template<typename Container >
void Gaudi::Functional::details::vector_of_const_< Container >::reserve ( size_type  size)
inline

Definition at line 342 of file FunctionalDetails.h.

342 { m_containers.reserve( size ); }

◆ size()

template<typename Container >
size_type Gaudi::Functional::details::vector_of_const_< Container >::size ( ) const
inline

Definition at line 350 of file FunctionalDetails.h.

350 { return m_containers.size(); }

Member Data Documentation

◆ is_pointer

template<typename Container >
constexpr bool Gaudi::Functional::details::vector_of_const_< Container >::is_pointer = std::is_pointer_v<Container>
staticconstexprprivate

Definition at line 295 of file FunctionalDetails.h.

◆ is_range

template<typename Container >
constexpr bool Gaudi::Functional::details::vector_of_const_< Container >::is_range = details2::is_gaudi_range_v<Container>
staticconstexprprivate

Definition at line 296 of file FunctionalDetails.h.

◆ m_containers

template<typename Container >
ContainerVector Gaudi::Functional::details::vector_of_const_< Container >::m_containers
private

Definition at line 301 of file FunctionalDetails.h.


The documentation for this class was generated from the following file:
Gaudi::Functional::details::details2::push_back
void push_back(Container &c, const Value &v, std::true_type)
Definition: FunctionalDetails.h:254
std::vector::reserve
T reserve(T... args)
std::vector::size
T size(T... args)
Gaudi::Functional::details::vector_of_const_::m_containers
ContainerVector m_containers
Definition: FunctionalDetails.h:301
std::vector::back
T back(T... args)
std::vector::front
T front(T... args)
std::vector::begin
T begin(T... args)
std::vector::end
T end(T... args)
Gaudi::Functional::details::vector_of_const_::size
size_type size() const
Definition: FunctionalDetails.h:350