libMesh
Classes | Static Public Member Functions | Protected Member Functions | List of all members
libMesh::Singleton Class Reference

Base class for all library singleton objects. More...

#include <libmesh_singleton.h>

Inheritance diagram for libMesh::Singleton:
[legend]

Classes

class  Setup
 Abstract base class for runtime singleton setup. More...
 

Static Public Member Functions

static void setup ()
 Setup function. More...
 
static void cleanup ()
 Cleanup function. More...
 

Protected Member Functions

 Singleton ()
 Constructor. More...
 
virtual ~Singleton ()=default
 Destructor. More...
 

Detailed Description

Base class for all library singleton objects.

Author
Benjamin S. Kirk
Date
2013 Base class for all library singleton objects.

Definition at line 35 of file libmesh_singleton.h.

Constructor & Destructor Documentation

◆ Singleton()

libMesh::Singleton::Singleton ( )
protected

Constructor.

Adds the derived object to the singleton cache list.

Definition at line 61 of file libmesh_singleton.C.

62 {
63  get_singleton_cache().push_back (this);
64 }

◆ ~Singleton()

virtual libMesh::Singleton::~Singleton ( )
protectedvirtualdefault

Destructor.

Member Function Documentation

◆ cleanup()

void libMesh::Singleton::cleanup ( )
static

Cleanup function.

Removes all dynamically created Singleton objects.

Definition at line 88 of file libmesh_singleton.C.

References libMesh::as_range(), and libMesh::libmesh_assert().

Referenced by libMesh::LibMeshInit::~LibMeshInit().

89 {
90  SingletonList & singleton_cache = get_singleton_cache();
91 
92  for (auto & item : as_range(singleton_cache.rbegin(),
93  singleton_cache.rend()))
94  {
95  libmesh_assert (item);
96  delete item;
97  item = nullptr;
98  }
99 
100  singleton_cache.clear();
101 }
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
Helper function that allows us to treat a homogenous pair as a range.
Definition: simple_range.h:57
libmesh_assert(ctx)

◆ setup()

void libMesh::Singleton::setup ( )
static

Setup function.

Initializes any derived Singleton::Setup objects. objects.

Definition at line 75 of file libmesh_singleton.C.

References libMesh::libmesh_assert().

76 {
77  SetupList & setup_cache = get_setup_cache();
78 
79  for (auto & item : setup_cache)
80  {
81  libmesh_assert (item);
82  item->setup();
83  }
84 }
libmesh_assert(ctx)

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