GpgFrontend Project A Free, Powerful, Easy-to-Use, Compact, Cross-Platform, and Installation-Free OpenPGP(pgp) Crypto Tool.

Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
GpgFrontend::SingletonFunctionObject< T > Class Template Reference

`#include <GpgFunctionObject.h>`

Inheritance diagram for GpgFrontend::SingletonFunctionObject< T >:
Collaboration diagram for GpgFrontend::SingletonFunctionObject< T >:

## Public Member Functions
int | GetChannel () const
| Get the Channel object. More...
| SingletonFunctionObject (T &&)=delete
| Construct a new Singleton Function Object object. More...
| SingletonFunctionObject (const T &)=delete
| Construct a new Singleton Function Object object. More...
void | operator= (const T &)=delete

## Static Public Member Functions
static T & | GetInstance (int channel=GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL)
| Get the Instance object. More...
static T & | CreateInstance (int channel, std::function< std::unique_ptr< T >(void)> factory)
| Create a Instance object. More...
static T & | CreateInstance (int channel, std::unique_ptr< T > p_obj=nullptr)
| Create a Instance object. More...
static T & | ReleaseChannel (int channel)
static int | GetDefaultChannel ()
| Get the Default Channel object. More...

## Protected Member Functions
| SingletonFunctionObject ()=default
| Construct a new Singleton Function Object object. More...
| SingletonFunctionObject (int channel)
| Construct a new Singleton Function Object object. More...
virtual | ~SingletonFunctionObject ()=default
| Destroy the Singleton Function Object object. More...
void | SetChannel (int channel)
| Set the Channel object. More...

## Static Private Member Functions
static T * | find_object_in_channel (int channel)
static T * | set_object_in_channel (int channel, std::unique_ptr< T > p_obj)
| Set the object in channel object. More...

## Private Attributes
int | channel_ = _default_channel

## Static Private Attributes
static int | _default_channel
static std::mutex | _instance_mutex
static std::shared_mutex | _instances_mutex
static std::unique_ptr< T > | _instance = nullptr
static std::map< int, std::unique_ptr< T > > | _instances_map

## Detailed Description

### template<typename T>
class GpgFrontend::SingletonFunctionObject< T >

Template Parameters

  T |

## Constructor & Destructor Documentation

## ◆ SingletonFunctionObject() [1/4]

template<typename T >

GpgFrontend::SingletonFunctionObject< T >::SingletonFunctionObject | ( | T && |  | ) |
| delete

Construct a new Singleton Function Object object.

## ◆ SingletonFunctionObject() [2/4]

template<typename T >

GpgFrontend::SingletonFunctionObject< T >::SingletonFunctionObject | ( | const T & |  | ) |
| delete

Construct a new Singleton Function Object object.

## ◆ SingletonFunctionObject() [3/4]

template<typename T >

GpgFrontend::SingletonFunctionObject< T >::SingletonFunctionObject | ( |  | ) |
| protected default

Construct a new Singleton Function Object object.

## ◆ SingletonFunctionObject() [4/4]

template<typename T >

GpgFrontend::SingletonFunctionObject< T >::SingletonFunctionObject | ( | int | channel | ) |
| inline explicit protected

Construct a new Singleton Function Object object.

Parameters

  channel |

## ◆ ~SingletonFunctionObject()

template<typename T >

virtual GpgFrontend::SingletonFunctionObject< T >::~SingletonFunctionObject | ( |  | ) |
| protected virtual default

Destroy the Singleton Function Object object.

## Member Function Documentation

## ◆ CreateInstance() [1/2]

template<typename T >

static T& GpgFrontend::SingletonFunctionObject< T >::CreateInstance | ( | int | channel,
|  | std::function< std::unique_ptr< T >(void)> | factory
| ) |  |
| inline static

Create a Instance object.

Parameters

  channel |
  factory |

Returns
  T&

## ◆ CreateInstance() [2/2]

template<typename T >

static T& GpgFrontend::SingletonFunctionObject< T >::CreateInstance | ( | int | channel,
|  | std::unique_ptr< T > | p_obj = `nullptr`
| ) |  |
| inline static

Create a Instance object.

Parameters

  channel |
  p_obj |

Returns
  T&

## ◆ find_object_in_channel()

template<typename T >

static T* GpgFrontend::SingletonFunctionObject< T >::find_object_in_channel | ( | int | channel | ) |
| inline static private

Parameters

  channel |

Returns
  T*

Referenced by GpgFrontend::SingletonFunctionObject< GpgContext >::CreateInstance(), and GpgFrontend::SingletonFunctionObject< GpgContext >::GetInstance().

## ◆ GetChannel()

template<typename T >

int GpgFrontend::SingletonFunctionObject< T >::GetChannel | ( |  | ) | const
| inline

Get the Channel object.

Returns
  int

## ◆ GetDefaultChannel()

template<typename T >

static int GpgFrontend::SingletonFunctionObject< T >::GetDefaultChannel | ( |  | ) |
| inline static

Get the Default Channel object.

Returns
  int

## ◆ GetInstance()

template<typename T >

static T& GpgFrontend::SingletonFunctionObject< T >::GetInstance | ( | int | channel = `GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL` | ) |
| inline static

Get the Instance object.

Parameters

  channel |

Returns
  T&

## ◆ ReleaseChannel()

template<typename T >

static T& GpgFrontend::SingletonFunctionObject< T >::ReleaseChannel | ( | int | channel | ) |
| inline static

Parameters

  channel |

Returns
  T&

## ◆ set_object_in_channel()

template<typename T >

static T* GpgFrontend::SingletonFunctionObject< T >::set_object_in_channel | ( | int | channel,
|  | std::unique_ptr< T > | p_obj
| ) |  |
| inline static private

Set the object in channel object.

Parameters

  channel |
  p_obj |

Returns
  T*

Referenced by GpgFrontend::SingletonFunctionObject< GpgContext >::CreateInstance(), and GpgFrontend::SingletonFunctionObject< GpgContext >::GetInstance().

## ◆ SetChannel()

template<typename T >

void GpgFrontend::SingletonFunctionObject< T >::SetChannel | ( | int | channel | ) |
| inline protected

Set the Channel object.

Parameters

  channel |

## Member Data Documentation

## ◆ _default_channel

template<typename T >

int GpgFrontend::SingletonFunctionObject< T >::_default_channel
| static private

Initial value:
=
GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL

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

- src/core/GpgFunctionObject.h