![]() |
Ginkgo Generated from branch based on master. Ginkgo version 1.7.0
A numerical linear algebra library targeting many-core architectures
|
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a new abstract object. More...
#include <ginkgo/core/base/polymorphic_object.hpp>
Inherits gko::PolymorphicObject.
Inherited by gko::AbstractFactory< LinOp, std::shared_ptr< const LinOp > >, gko::AbstractFactory< BatchLinOp, std::shared_ptr< const BatchLinOp > >, gko::EnablePolymorphicObject< Combination< default_precision >, LinOp >, gko::EnablePolymorphicObject< Composition< default_precision >, LinOp >, gko::EnablePolymorphicObject< ConcreteFactory, PolymorphicBase >, gko::EnablePolymorphicObject< ConcreteLinOp, LinOp >, gko::EnablePolymorphicObject< Perturbation< default_precision >, LinOp >, gko::EnablePolymorphicObject< ConcreteBatchLinOp, BatchLinOp >, gko::EnablePolymorphicObject< MultiVector< default_precision > >, gko::EnablePolymorphicObject< Dense< default_precision >, BatchLinOp >, gko::EnablePolymorphicObject< Ell< default_precision, int32 >, BatchLinOp >, gko::EnablePolymorphicObject< Identity< default_precision >, BatchLinOp >, gko::EnablePolymorphicObject< Bicgstab< default_precision >, BatchLinOp >, gko::EnablePolymorphicObject< ConcreteSolver, BatchLinOp >, gko::EnablePolymorphicObject< Partition< int32, int64 > >, gko::EnablePolymorphicObject< Schwarz< default_precision, int32, int64 >, LinOp >, gko::EnablePolymorphicObject< Cholesky< ValueType, IndexType >, LinOpFactory >, gko::EnablePolymorphicObject< Factorization< ValueType, IndexType >, LinOp >, gko::EnablePolymorphicObject< Lu< ValueType, IndexType >, LinOpFactory >, gko::EnablePolymorphicObject< Amd< int32 >, LinOpFactory >, gko::EnablePolymorphicObject< Mc64< default_precision, int32 >, LinOpFactory >, gko::EnablePolymorphicObject< Rcm< int32 >, LinOpFactory >, gko::EnablePolymorphicObject< ScaledReordered< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Direct< ValueType, IndexType >, LinOp >, gko::EnablePolymorphicObject< Composition< gko::default_precision >, LinOp >, gko::EnablePolymorphicObject< Coo< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Csr< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Dense< default_precision >, LinOp >, gko::EnablePolymorphicObject< Diagonal< default_precision >, LinOp >, gko::EnablePolymorphicObject< Ell< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Fbcsr< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Fft, LinOp >, gko::EnablePolymorphicObject< Fft2, LinOp >, gko::EnablePolymorphicObject< Fft3, LinOp >, gko::EnablePolymorphicObject< Hybrid< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Identity< default_precision >, LinOp >, gko::EnablePolymorphicObject< IdentityFactory< default_precision >, LinOpFactory >, gko::EnablePolymorphicObject< Permutation< int32 >, LinOp >, gko::EnablePolymorphicObject< RowGatherer< int32 >, LinOp >, gko::EnablePolymorphicObject< ScaledPermutation< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Sellp< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< SparsityCsr< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< FixedCoarsening< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Pgm< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Ic< solver::LowerTrs<>, int32 >, LinOp >, gko::EnablePolymorphicObject< Ilu< solver::LowerTrs<>, solver::UpperTrs<>, false, int32 >, LinOp >, gko::EnablePolymorphicObject< Isai< IsaiType, ValueType, IndexType >, LinOp >, gko::EnablePolymorphicObject< Jacobi< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Rcm< default_precision, int32 >, ReorderingBase< int32 > >, gko::EnablePolymorphicObject< Bicg< default_precision >, LinOp >, gko::EnablePolymorphicObject< Bicgstab< default_precision >, LinOp >, gko::EnablePolymorphicObject< CbGmres< default_precision >, LinOp >, gko::EnablePolymorphicObject< Cg< default_precision >, LinOp >, gko::EnablePolymorphicObject< Cgs< default_precision >, LinOp >, gko::EnablePolymorphicObject< Fcg< default_precision >, LinOp >, gko::EnablePolymorphicObject< Gcr< default_precision >, LinOp >, gko::EnablePolymorphicObject< Gmres< default_precision >, LinOp >, gko::EnablePolymorphicObject< Idr< default_precision >, LinOp >, gko::EnablePolymorphicObject< Ir< default_precision >, LinOp >, gko::EnablePolymorphicObject< LowerTrs< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< Multigrid, LinOp >, gko::EnablePolymorphicObject< UpperTrs< default_precision, int32 >, LinOp >, gko::EnablePolymorphicObject< ResidualNormBase< default_precision >, Criterion >, gko::EnablePolymorphicObject< Combined, Criterion >, gko::EnablePolymorphicObject< Iteration, Criterion >, gko::EnablePolymorphicObject< ResidualNormBase< ValueType >, Criterion >, gko::EnablePolymorphicObject< Time, Criterion >, gko::EnablePolymorphicObject< Dense< value_type >, LinOp >, gko::experimental::EnableDistributedPolymorphicObject< ConcreteLinOp, LinOp >, gko::experimental::EnableDistributedPolymorphicObject< Matrix< default_precision, int32, int64 >, LinOp >, gko::experimental::EnableDistributedPolymorphicObject< Vector< double >, LinOp >, gko::reorder::ReorderingBase< int32 >, gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase >, gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >, and gko::reorder::ReorderingBase< IndexType >.
Public Member Functions | |
std::unique_ptr< AbstractObject > | create_default (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< AbstractObject > | create_default () const |
std::unique_ptr< AbstractObject > | clone (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< AbstractObject > | clone () const |
AbstractObject * | copy_from (const PolymorphicObject *other) |
template<typename Derived > | |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (std::unique_ptr< Derived > &&other) |
template<typename Derived > | |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (const std::unique_ptr< Derived > &other) |
AbstractObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
AbstractObject * | move_from (ptr_param< PolymorphicObject > other) |
AbstractObject * | clear () |
![]() | |
PolymorphicObject & | operator= (const PolymorphicObject &) |
std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
Creates a new "default" object of the same dynamic type as this object. | |
std::unique_ptr< PolymorphicObject > | create_default () const |
Creates a new "default" object of the same dynamic type as this object. | |
std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
Creates a clone of the object. | |
std::unique_ptr< PolymorphicObject > | clone () const |
Creates a clone of the object. | |
PolymorphicObject * | copy_from (const PolymorphicObject *other) |
Copies another object into this object. | |
template<typename Derived , typename Deleter > | |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (std::unique_ptr< Derived, Deleter > &&other) |
Moves another object into this object. | |
template<typename Derived , typename Deleter > | |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (const std::unique_ptr< Derived, Deleter > &other) |
Copies another object into this object. | |
PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
Copies another object into this object. | |
PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
Moves another object into this object. | |
PolymorphicObject * | clear () |
Transforms the object into its default state. | |
std::shared_ptr< const Executor > | get_executor () const noexcept |
Returns the Executor of the object. | |
![]() | |
void | add_logger (std::shared_ptr< const Logger > logger) override |
Adds a new logger to the list of subscribed loggers. | |
void | remove_logger (const Logger *logger) override |
Removes a logger from the list of subscribed loggers. | |
void | remove_logger (ptr_param< const Logger > logger) |
const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
Returns the vector containing all loggers registered at this object. | |
void | clear_loggers () override |
Remove all loggers registered at this object. | |
![]() | |
void | remove_logger (ptr_param< const Logger > logger) |
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a new abstract object.
It uses method hiding to update the parameter and return types from PolymorphicObject to
AbstractObject` wherever it makes sense. As opposed to EnablePolymorphicObject, it does not implement PolymorphicObject's virtual methods.
AbstractObject | the abstract class which is being implemented [CRTP parameter] |
PolymorphicBase | parent of AbstractObject in the polymorphic hierarchy, has to be a subclass of polymorphic object |