dune-fem 2.8.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Protected Member Functions | List of all members
Dune::Fem::SingletonList< Key, Object, Factory > Class Template Reference

Singleton list for key/object pairs. More...

#include <dune/fem/storage/singletonlist.hh>

Classes

struct  Deleter
 

Public Types

typedef Key KeyType
 
typedef Object ObjectType
 
typedef Factory FactoryType
 
typedef std ::pair< ObjectType *, unsigned int * > ValueType
 
typedef std ::pair< KeyType, ValueTypeListObjType
 

Public Member Functions

 SingletonList ()=delete
 
 SingletonList (const ThisType &)=delete
 

Static Public Member Functions

static ListType & singletonList ()
 
template<class... Args>
static auto getObject (const KeyType &key, Args &&... args) -> std::enable_if_t< std::is_same< decltype(FactoryType::createObject(key, std::forward< Args >(args)...)), ObjectType * >::value, ObjectType & >
 
static void removeObject (const ObjectType &object)
 
static ValueType getObjFromList (const KeyType &key)
 

Static Protected Member Functions

static void eraseItem (ListIteratorType &it)
 

Detailed Description

template<class Key, class Object, class Factory = DefaultSingletonFactory< Key, Object >>
class Dune::Fem::SingletonList< Key, Object, Factory >

Singleton list for key/object pairs.

A singleton list guarantees that for any valid key at most one object is created.

Parameters
Keytype of keys
Objecttype of objects
Factoryfactory class creating objects from keys. The default just passes the key to the object's constructor.

Member Typedef Documentation

◆ FactoryType

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
typedef Factory Dune::Fem::SingletonList< Key, Object, Factory >::FactoryType

◆ KeyType

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
typedef Key Dune::Fem::SingletonList< Key, Object, Factory >::KeyType

◆ ListObjType

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
typedef std :: pair< KeyType, ValueType > Dune::Fem::SingletonList< Key, Object, Factory >::ListObjType

◆ ObjectType

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
typedef Object Dune::Fem::SingletonList< Key, Object, Factory >::ObjectType

◆ ValueType

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
typedef std :: pair< ObjectType * , unsigned int * > Dune::Fem::SingletonList< Key, Object, Factory >::ValueType

Constructor & Destructor Documentation

◆ SingletonList() [1/2]

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
Dune::Fem::SingletonList< Key, Object, Factory >::SingletonList ( )
delete

◆ SingletonList() [2/2]

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
Dune::Fem::SingletonList< Key, Object, Factory >::SingletonList ( const ThisType )
delete

Member Function Documentation

◆ eraseItem()

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
static void Dune::Fem::SingletonList< Key, Object, Factory >::eraseItem ( ListIteratorType &  it)
inlinestaticprotected

◆ getObject()

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
template<class... Args>
static auto Dune::Fem::SingletonList< Key, Object, Factory >::getObject ( const KeyType key,
Args &&...  args 
) -> std::enable_if_t< std::is_same< decltype( FactoryType::createObject( key, std::forward< Args >( args )... ) ), ObjectType * >::value, ObjectType & >
inlinestatic

return reference to the object for given key. If the object does not exist, then it is created first, otherwise the reference counter is increased.

◆ getObjFromList()

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
static ValueType Dune::Fem::SingletonList< Key, Object, Factory >::getObjFromList ( const KeyType key)
inlinestatic

◆ removeObject()

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
static void Dune::Fem::SingletonList< Key, Object, Factory >::removeObject ( const ObjectType object)
inlinestatic

decrease ref counter for this object, if ref counter is zero, object is deleted

◆ singletonList()

template<class Key , class Object , class Factory = DefaultSingletonFactory< Key, Object >>
static ListType & Dune::Fem::SingletonList< Key, Object, Factory >::singletonList ( )
inlinestatic

list that store pairs of key/object pointers singleton list

list that store pairs of key/object pointers


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