Classes | Namespaces | Files
Singleton pattern design.

Implementation of designe pattern which can be compared to phoenix singleton with advanced instance life management. More...

Collaboration diagram for Singleton pattern design.:


class  utilmm::singleton::dummy
 base class for utilmm::singleton::wrapper More...
class  utilmm::singleton::server
 Singleton server. More...
struct  utilmm::singleton::use< Ty >
 Access point to singleton. More...
class  utilmm::singleton::wrapper< Ty >
 Wrapper for singleton instances. More...


namespace  utilmm::singleton

Singleton manipulation.


file  dummy.hh

Declaration of utilmm::singleton::dummy.

file  server.hh

Definition of utilmm::singleton::server.

file  server_fwd.hh

Forward declaration of utilmm::singleton::server.

file  use.hh

Declararation of utilmm::singleton::use class.

file  use_fwd.hh

Forward declaration of utilmm::singleton::use.

file  wrapper.hh

Declaration of utilmm::singleton::wrapper.

file  wrapper_fwd.hh

Forward declaration of utilmm::singleton::wrapper.

Detailed Description

Implementation of designe pattern which can be compared to phoenix singleton with advanced instance life management.

This module includes all the classes used to implement a phoenix singleton pattern design supporting shared libraires.

The phoenix singleton pattern design offers the possibility to have a special class with these properties :

This implementation offer also a support for shared libraries using one ingleton server with advanced controller of life time for each instances. This controller is a basic phoenix singleton stored in a shared library.

Accessing to a singleton

To access to a singleton we need to use the utilmm::singleton::use class. This class will offer an acces to singleton instance and will manage the singleton life (it can be seen as a reference counting smart pointer.

For example if one class foo need to access to a singleton of type bar . User can code it asd this :

 #include "utilmm/singleton/use.hh"

 class foo {
   utilmm::singleton::use<bar> bar_s;
   int value;
  foo():value(0) {}
  explicit foo(int v):value(v) {}
  ~foo() {}

  void send_to_bar() {
    // or bar_s->send(value);
Making a class a pure singleton

To define a class singleton as a pure singleton (ie it is impossible to access to it except by utilmm::singleton::use ) one can follow this example :

 #include "utilmm/singleton/wrapper_fwd.hh" 

 class pure_singleton {
  // [...] 

  // [...] 

   friend class utilmm::singleton::wrapper<pure_singleton>;

All the structors are defined as private then only firends (ie utilmm::singleton::wrapper) can create and destroy the instance then we have the guarantee that this class is a pure phoenix singleton.

Author(s): Sylvain Joyeux/
autogenerated on Thu Jan 2 2014 11:38:31