STK++ 0.9.13
STK::IRecursiveTemplate< Derived > Class Template Reference

Interface base class for all classes implementing the curious recursive template paradigm. More...

#include <STK_IRecursiveTemplate.h>

Inherited by STK::DataHandlerBase< DataHandler >, STK::DataHandlerBase< KernelHandler >, STK::DenseIteratorBase< BiDirectionalIterator< Array > >, STK::DenseIteratorBase< ConstBiDirectionalIterator< Array > >, STK::DenseIteratorBase< ConstDenseRandomIterator< Array > >, STK::DenseIteratorBase< DenseRandomIterator< Array_ > >, STK::IFunction< dloglikelihood >, STK::IFunction< invPsi >, STK::IFunction< invPsiMLog >, STK::ILeastSquare< MultiLeastSquare< ArrayB, ArrayA > >, STK::IMixtureBridge< CategoricalBridge< Id, Data > >, STK::IMixtureBridge< DiagGaussianBridge< Id, Data > >, STK::IMixtureBridge< GammaBridge< Id, Data > >, STK::IMixtureBridge< HDGaussianBridge< Id, Data > >, STK::IMixtureBridge< HDMatrixGaussianBridge< IdRow, IdCol, Data > >, STK::IMixtureBridge< KmmBridge< Id, Data > >, STK::IMixtureBridge< PoissonBridge< Id, Data > >, STK::IMixtureDensity< Categorical_pjk< Array > >, STK::IMixtureDensity< Categorical_pk< Array > >, STK::IMixtureDensity< DiagGaussian_s< Array > >, STK::IMixtureDensity< DiagGaussian_sj< Array > >, STK::IMixtureDensity< DiagGaussian_sjk< Array > >, STK::IMixtureDensity< DiagGaussian_sjsk< Array > >, STK::IMixtureDensity< DiagGaussian_sk< Array > >, STK::IMixtureDensity< Gamma_a_bjk< Array > >, STK::IMixtureDensity< Gamma_a_bk< Array > >, STK::IMixtureDensity< Gamma_aj_bjk< Array > >, STK::IMixtureDensity< Gamma_aj_bk< Array > >, STK::IMixtureDensity< Gamma_ajk_b< Array > >, STK::IMixtureDensity< Gamma_ajk_bj< Array > >, STK::IMixtureDensity< Gamma_ajk_bjk< Array > >, STK::IMixtureDensity< Gamma_ajk_bk< Array > >, STK::IMixtureDensity< Gamma_ak_b< Array > >, STK::IMixtureDensity< Gamma_ak_bj< Array > >, STK::IMixtureDensity< Gamma_ak_bjk< Array > >, STK::IMixtureDensity< Gamma_ak_bk< Array > >, STK::IMixtureDensity< HDGaussian_AjkBkQkD< Array > >, STK::IMixtureDensity< HDMatrixGaussianModel< IdRow_, IdCol_, Array_ > >, STK::IMixtureDensity< Kmm_s >, STK::IMixtureDensity< Kmm_sk >, STK::IMixtureDensity< Poisson_ljk< Array > >, STK::IMixtureDensity< Poisson_ljlk< Array > >, STK::IMixtureDensity< Poisson_lk< Array > >, STK::IMixtureManager< CategoricalMixtureManager< DataHandler > >, STK::IMixtureManager< DiagGaussianMixtureManager< DataHandler > >, STK::IMixtureManager< GammaMixtureManager< DataHandler > >, STK::IMixtureManager< KernelMixtureManager >, STK::IMixtureManager< PoissonMixtureManager< DataHandler > >, STK::IMixtureManager< DiagGaussianMixtureManager< DataHandler_ > >, STK::IMixtureManager< PoissonMixtureManager< DataHandler_ > >, STK::IMixtureManager< GammaMixtureManager< DataHandler_ > >, STK::IMixtureManager< CategoricalMixtureManager< DataHandler_ > >, STK::IMultiParameters< JointBernoulliParameters >, STK::IMultiParameters< JointGammaParameters >, STK::IMultiParameters< JointGaussianParameters >, STK::IMultiStatModel< Array, CVectorX, JointBernoulliParameters >, STK::IMultiStatModel< Array, WColVector, JointGammaParameters >, STK::IMultiStatModel< Array, CVectorX, JointGaussianParameters >, STK::IMultiStatModel< ModelBernoulli_pj< Data_, WColVector_ > >, STK::IMultiStatModel< ModelDiagGaussian_muj_sj< Data_, WColVector_ > >, STK::IMultiStatModel< ModelGamma_aj_bj< Data_, WColVector_ > >, STK::IQr< Qr >, STK::ISerie< Seriedl >, STK::ISerie< Serielog1p >, STK::ISvd< Svd< Array > >, STK::ISvd< WeightedSvd< Array, WRows, WCols > >, STK::ISvd< Svd >, STK::ISymEigen< SymEigen< SquareArray > >, STK::ISymEigen< SymEigen< Array2DSquare< Real > > >, STK::ITContainer1D< Array1D< Type_, Size_ > >, STK::ITContainer1D< Array1D< STK::TRange< UnknownSize >, Size_ > >, STK::ITContainer1D< List1D< IVariable * > >, STK::ITContainer1D< List1D< Type_ > >, STK::ITContainer1D< Array1D< Law, Size_ > >, STK::ITContainer1D< SArray1D< Type_, Size_, NzMax_ > >, STK::ITContainer1D< Variable< Type_ > >, STK::ITContainer1D< Array1D< STK::BSplineCoefficients< ColVector >, Size_ > >, STK::ITContainer1D< Array1D< STK::Variable, Size_ > >, STK::ITContainer1D< Array1D< Array_, Size_ > >, STK::ITContainer1D< Array1D< STK::CArraySquare, Size_ > >, STK::ITContainer1D< Array1D< STK::CArrayVector, Size_ > >, STK::ITContainer1D< Array1D< Real, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< Array_, Real >, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< STK::CArraySquare, Real >, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< STK::CArrayVector, Real >, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< Real, Real >, Size_ > >, STK::ITContainer1D< Array1D< TaggedKernel, Size_ > >, STK::ITContainer1D< Array1D< int, Size_ > >, STK::ITContainer1D< Array1D< IndexedValue, Size_ > >, STK::ITContainer1D< Array1D< CArray< Real, UnknownSize, UnknownSize, Arrays::by_col_ >, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< CArray< Real, UnknownSize, UnknownSize, Arrays::by_col_ >, Real >, Size_ > >, STK::ITContainer1D< Array1D< CArrayPoint< Real, UnknownSize, Arrays::by_col_ >, Size_ > >, STK::ITContainer1D< Array1D< STK::Stat::Online< CArrayPoint< Real, UnknownSize, Arrays::by_col_ >, Real >, Size_ > >, STK::ITContainer1D< Variable< Real > >, STK::InnerIteratorBase< Array1D< Type_, Size_ >, Array1D< Type_, Size_ >::InnerOperator >, STK::RangeBase< TRange< Size_ > >, STK::RangeBase< TRange< UnknownSize > >, STK::DataHandlerBase< Derived >, STK::DenseIteratorBase< Derived >, STK::ILeastSquare< Derived >, STK::IMixtureBridge< Derived >, STK::IMixtureDensity< Derived >, STK::IMixtureManager< Derived >, STK::IMixtureModel< Derived >, STK::IMultiStatModel< Derived >, STK::IQr< Derived >, STK::ISvd< Derived >, STK::ISymEigen< Derived >, STK::ITContainer1D< Derived >, STK::ITContainer2D< Derived >, STK::ITContainerBase< Derived >, STK::InnerIteratorBase< Array, Derived >, STK::RangeBase< Derived >, and STK::SparseIteratorBase< Derived >.

Public Member Functions

Derived & asDerived ()
 static cast : return a reference of this with a cast to the derived class.
 
Derived constasDerived () const
 static cast : return a const reference of this with a cast to the derived class.
 
Derived * asPtrDerived ()
 static cast : return a ptr on a Derived of this with a cast to the derived class.
 
Derived constasPtrDerived () const
 static cast : return a ptr on a constant Derived of this with a cast to the derived class.
 
Derived * clone () const
 create a leaf using the copy constructor of the Derived class.
 
Derived * clone (bool isRef) const
 create a leaf using the copy constructor of the Derived class and a flag determining if the clone is a reference or not.
 

Protected Member Functions

 IRecursiveTemplate ()
 constructor.
 
 ~IRecursiveTemplate ()
 destructor.
 

Detailed Description

template<class Derived>
class STK::IRecursiveTemplate< Derived >

Interface base class for all classes implementing the curious recursive template paradigm.

Implement the curious recursive template paradigm : the template parameter Derived is the type of the leaf class that implements IRecursiveTemplate. A constant reference/pointer on the derived type can be obtained using the methods asDerived and asPtrDerived.

Definition at line 55 of file STK_IRecursiveTemplate.h.

Constructor & Destructor Documentation

◆ IRecursiveTemplate()

template<class Derived >
STK::IRecursiveTemplate< Derived >::IRecursiveTemplate ( )
inlineprotected

constructor.

Definition at line 59 of file STK_IRecursiveTemplate.h.

59{}

◆ ~IRecursiveTemplate()

template<class Derived >
STK::IRecursiveTemplate< Derived >::~IRecursiveTemplate ( )
inlineprotected

destructor.

Definition at line 61 of file STK_IRecursiveTemplate.h.

61{}

Member Function Documentation

◆ asDerived() [1/2]

template<class Derived >
Derived & STK::IRecursiveTemplate< Derived >::asDerived ( )
inline

static cast : return a reference of this with a cast to the derived class.

Returns
a reference on this in the derived type

Definition at line 68 of file STK_IRecursiveTemplate.h.

69 { return static_cast<Derived&>(*this); }

Referenced by STK::ITContainerBase< Derived >::at(), STK::ITContainerBase< Derived >::at(), STK::ITContainerBase< Derived >::at(), STK::ITContainerBase< Derived >::at(), STK::ITContainer1D< Derived >::beginConstIterator(), STK::ITContainer1D< Derived >::beginIterator(), STK::IRecursiveTemplate< Derived >::clone(), STK::IRecursiveTemplate< Derived >::clone(), STK::ITContainerBase< Derived >::cols(), STK::IMultiStatModel< Derived >::computeLnLikelihood(), STK::IMixtureManager< Derived >::createMixture(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer1D< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer1D< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::ITContainerBase< Derived >::elt(), STK::ITContainer2D< Derived >::elt(), STK::IArray1D< Array1D< Type_, Size_ > >::end(), STK::ITContainer1D< Derived >::endConstIterator(), STK::IMixtureDensity< Derived >::finalizeStep(), STK::IMixtureModel< Derived >::finalizeStep(), STK::IMixtureManager< Derived >::getMissingValues(), STK::IMixtureManager< Derived >::getParameters(), STK::IMixtureModel< Derived >::initializeModel(), STK::IMixtureDensity< Derived >::initializeStep(), STK::IMixtureModel< Derived >::initializeStep(), STK::RangeBase< Derived >::isContaining(), STK::RangeBase< Derived >::isIn(), STK::InnerIteratorBase< Array, Derived >::next(), STK::ITContainerBase< Derived >::operator()(), STK::DenseIteratorBase< Derived >::operator++(), STK::SparseIteratorBase< Derived >::operator++(), STK::DenseIteratorBase< Derived >::operator++(), STK::SparseIteratorBase< Derived >::operator++(), STK::DenseIteratorBase< Derived >::operator+=(), STK::RangeBase< Derived >::operator+=(), STK::SparseIteratorBase< Derived >::operator+=(), STK::DenseIteratorBase< Derived >::operator--(), STK::SparseIteratorBase< Derived >::operator--(), STK::DenseIteratorBase< Derived >::operator--(), STK::SparseIteratorBase< Derived >::operator--(), STK::DenseIteratorBase< Derived >::operator-=(), STK::RangeBase< Derived >::operator-=(), STK::SparseIteratorBase< Derived >::operator-=(), STK::ITContainerBase< Derived >::operator[](), STK::ITContainerBase< Derived >::operator[](), STK::InnerIteratorBase< Array, Derived >::prev(), STK::ITContainer2D< Derived >::resize(), STK::ITContainer2D< Derived >::resize(), STK::ITContainer1D< Derived >::resize(), STK::ITContainerBase< Derived >::rows(), STK::ISvd< Derived >::run(), STK::ISymEigen< Derived >::run(), STK::IMultiStatModel< Derived >::run(), STK::IMultiStatModel< Derived >::run(), STK::IMixtureDensity< Derived >::sample(), STK::IMixtureModel< Derived >::sample(), STK::IMixtureManager< Derived >::setParameters(), STK::IMixtureDensity< Derived >::setParametersStep(), STK::IMixtureModel< Derived >::setParametersStep(), STK::ITContainer1D< Derived >::shift(), STK::ITContainer2D< Derived >::shift(), STK::ITContainer2D< Derived >::shift(), STK::ITContainer1D< Derived >::sub(), STK::InnerIteratorBase< Array, Derived >::value(), STK::InnerIteratorBase< Array, Derived >::valueRef(), and STK::IMultiStatModel< Derived >::writeParameters().

◆ asDerived() [2/2]

template<class Derived >
Derived const & STK::IRecursiveTemplate< Derived >::asDerived ( ) const
inline

static cast : return a const reference of this with a cast to the derived class.

Returns
a constant reference on this in the derived type

Definition at line 74 of file STK_IRecursiveTemplate.h.

75 { return static_cast<Derived const&>(*this); }

◆ asPtrDerived() [1/2]

template<class Derived >
Derived * STK::IRecursiveTemplate< Derived >::asPtrDerived ( )
inline

static cast : return a ptr on a Derived of this with a cast to the derived class.

Returns
a pointer on this in the derived type

Definition at line 80 of file STK_IRecursiveTemplate.h.

81 { return static_cast<Derived*>(this); }

◆ asPtrDerived() [2/2]

template<class Derived >
Derived const * STK::IRecursiveTemplate< Derived >::asPtrDerived ( ) const
inline

static cast : return a ptr on a constant Derived of this with a cast to the derived class.

Returns
a constant pointer on this in the derived type

Definition at line 86 of file STK_IRecursiveTemplate.h.

87 { return static_cast<Derived const*>(this); }

◆ clone() [1/2]

template<class Derived >
Derived * STK::IRecursiveTemplate< Derived >::clone ( ) const
inline

create a leaf using the copy constructor of the Derived class.

Returns
A pointer on a cloned Derived of this

Definition at line 91 of file STK_IRecursiveTemplate.h.

92 { return new Derived(this->asDerived());}
Derived & asDerived()
static cast : return a reference of this with a cast to the derived class.

References STK::IRecursiveTemplate< Derived >::asDerived().

Referenced by STK::DataFrame::DataFrame(), and STK::DataFrame::operator=().

◆ clone() [2/2]

template<class Derived >
Derived * STK::IRecursiveTemplate< Derived >::clone ( bool  isRef) const
inline

create a leaf using the copy constructor of the Derived class and a flag determining if the clone is a reference or not.

See also
CArray, Array2D, Array2DVector, Array2DPoint
Parameters
isReftrue if the clone object is a reference
Returns
A pointer on a cloned Derived of this

Definition at line 99 of file STK_IRecursiveTemplate.h.

100 { return new Derived(this->asDerived(), isRef);}

References STK::IRecursiveTemplate< Derived >::asDerived().


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