Ginkgo  Generated from pipelines/1330831941 branch based on master. Ginkgo version 1.8.0
A numerical linear algebra library targeting many-core architectures
List of all members
gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase > Class Template Reference

This mixin does the same as EnablePolymorphicObject, but for concrete types that are derived from distributed::DistributedBase. More...

#include <ginkgo/core/distributed/polymorphic_object.hpp>

Inheritance diagram for gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >:
[legend]
Collaboration diagram for gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >:
[legend]

Additional Inherited Members

- Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< ConcreteObject, PolymorphicBase >
std::unique_ptr< ConcreteObject > create_default (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< ConcreteObject > create_default () const
 
std::unique_ptr< ConcreteObject > clone (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< ConcreteObject > clone () const
 
ConcreteObject * copy_from (const PolymorphicObject *other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, ConcreteObject > * copy_from (std::unique_ptr< Derived > &&other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, ConcreteObject > * copy_from (const std::unique_ptr< Derived > &other)
 
ConcreteObject * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
 
ConcreteObject * move_from (ptr_param< PolymorphicObject > other)
 
ConcreteObject * clear ()
 

Detailed Description

template<typename ConcreteObject, typename PolymorphicBase = PolymorphicObject>
class gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >

This mixin does the same as EnablePolymorphicObject, but for concrete types that are derived from distributed::DistributedBase.

See also
EnablePolymporphicObject.

The following is a minimal example of a distributed PolymorphicObject:

{c++}
struct MyObject : EnableDistributedPolymorphicObject<MyObject>,
distributed::DistributedBase {
MyObject(std::shared_ptr<const Executor> exec, mpi::communicator comm)
: EnableDistributedPolymorphicObject<MyObject>(std::move(exec)),
distributed::DistributedBase(std::move(comm))
{}
};
Template Parameters
ConcreteObjectthe concrete type which is being implemented that is derived from distributed::DistributedBase [CRTP parameter]
PolymorphicBaseparent of ConcreteObject in the polymorphic hierarchy, has to be a subclass of polymorphic object

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