MarlinMT  0.1.0
marlinmt::book::SharedMemLayout< T, MERGE, Args_t > Class Template Reference

MemLayout for mutable object instances. More...

#include <MemLayout.h>

Inherits marlinmt::book::MemLayout.

Public Member Functions

 SharedMemLayout (std::size_t num_instances, Args_t... args)
 Constructor. More...
 
 SharedMemLayout (const SharedMemLayout &)=default
 
SharedMemLayoutoperator= (const SharedMemLayout &)=default
 
 SharedMemLayout (SharedMemLayout &&) noexcept=default
 
SharedMemLayoutoperator= (SharedMemLayout &&) noexcept=default
 
 ~SharedMemLayout () override final=default
 
- Public Member Functions inherited from marlinmt::book::MemLayout
template<typename T >
std::shared_ptr< const T > at (std::size_t idx) const
 Get Resource for an instance. More...
 
template<typename T >
std::shared_ptr< T > at (std::size_t idx)
 Get Resource for an instance. More...
 
template<typename T >
std::shared_ptr< const T > merged ()
 Get Completed Resource. More...
 
 MemLayout ()=default
 
 MemLayout (const MemLayout &)=default
 
MemLayoutoperator= (const MemLayout &)=default
 
 MemLayout (MemLayout &&)=default
 
MemLayoutoperator= (MemLayout &&)=default
 
virtual ~MemLayout ()=default
 

Private Member Functions

std::shared_ptr< void > impAt (std::size_t idx) const override final
 Get Resource for Instance. Lazy operation. More...
 
std::shared_ptr< void > impMerged () override final
 implementation from merged More...
 

Private Attributes

std::vector< std::shared_ptr< T > > _objects
 
std::shared_ptr< T > _mergedObj {nullptr}
 
std::unique_ptr< std::tuple< const typename std::remove_reference< Args_t >::type... > > _ctor_p
 

Additional Inherited Members

Detailed Description

template<typename T, void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
class marlinmt::book::SharedMemLayout< T, MERGE, Args_t >

MemLayout for mutable object instances.

Template Parameters
Tstored Object Type
MERGEfunction(to, from) which merge to instances of Object

Definition at line 70 of file MemLayout.h.

Constructor & Destructor Documentation

◆ SharedMemLayout() [1/3]

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::SharedMemLayout ( std::size_t  num_instances,
Args_t...  args 
)
inlineexplicit

Constructor.

Parameters
amountof instances amount of Resource Instances
argsArguments for Object Construction

Definition at line 78 of file MemLayout.h.

References marlinmt::book::MemLayout::operator=().

◆ SharedMemLayout() [2/3]

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::SharedMemLayout ( const SharedMemLayout< T, MERGE, Args_t > &  )
default

◆ SharedMemLayout() [3/3]

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::SharedMemLayout ( SharedMemLayout< T, MERGE, Args_t > &&  )
defaultnoexcept

◆ ~SharedMemLayout()

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::~SharedMemLayout ( )
finaloverridedefault

Member Function Documentation

◆ impAt()

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
std::shared_ptr< void > marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::impAt ( std::size_t  idx) const
inlinefinaloverrideprivatevirtual

Get Resource for Instance. Lazy operation.

Implements marlinmt::book::MemLayout.

Definition at line 97 of file MemLayout.h.

◆ impMerged()

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
std::shared_ptr< void > marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::impMerged ( )
inlinefinaloverrideprivatevirtual

implementation from merged

Implements marlinmt::book::MemLayout.

Definition at line 101 of file MemLayout.h.

◆ operator=() [1/2]

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
SharedMemLayout& marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::operator= ( const SharedMemLayout< T, MERGE, Args_t > &  )
default

◆ operator=() [2/2]

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
SharedMemLayout& marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::operator= ( SharedMemLayout< T, MERGE, Args_t > &&  )
defaultnoexcept

Member Data Documentation

◆ _ctor_p

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
std::unique_ptr< std::tuple< const typename std::remove_reference< Args_t >::type... > > marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::_ctor_p
private

Definition at line 117 of file MemLayout.h.

◆ _mergedObj

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
std::shared_ptr< T > marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::_mergedObj {nullptr}
private

Definition at line 114 of file MemLayout.h.

◆ _objects

template<typename T , void(*)(const std::shared_ptr< T > &, const std::shared_ptr< T > &) MERGE, typename... Args_t>
std::vector< std::shared_ptr< T > > marlinmt::book::SharedMemLayout< T, MERGE, Args_t >::_objects
private

Definition at line 113 of file MemLayout.h.


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