Loading...
Searching...
No Matches
eonc::IRAResource Class Reference

#include <IRAResource.h>

Inheritance diagram for eonc::IRAResource:

Public Member Functions

bool is_loaded () const noexcept override
void require_loaded () override
 Throws std::runtime_error if libira is not available.
libira_match_fn get_match_fn () const override
libira_cshda_pbc_fn get_cshda_pbc_fn () const override
libira_compute_all_fn get_compute_all_fn () const override
libira_get_nmax_fn get_get_nmax_fn () const override
 ~IRAResource () override
 IRAResource (const IRAResource &)=delete
IRAResource & operator= (const IRAResource &)=delete
Public Member Functions inherited from eonc::IIRAResource
virtual ~IIRAResource ()=default
 IIRAResource (const IIRAResource &)=delete
IIRAResource & operator= (const IIRAResource &)=delete

Static Public Member Functions

static IRAResource & instance ()
 Thread-safe singleton accessor (Meyer's pattern).

Private Member Functions

 IRAResource ()
template<typename Fn>
Fn load_sym (const char *name) const
 Try to load a symbol; returns nullptr on failure.

Private Attributes

bool m_loaded {false}
dynlib::Handle m_handle {}
libira_match_fn libira_match_ {nullptr}
libira_cshda_pbc_fn libira_cshda_pbc_ {nullptr}
libira_compute_all_fn libira_compute_all_ {nullptr}
libira_get_nmax_fn libira_get_nmax_ {nullptr}

Friends

class Runtime

Additional Inherited Members

Public Types inherited from eonc::IIRAResource
using libira_match_fn
using libira_cshda_pbc_fn
using libira_compute_all_fn
using libira_get_nmax_fn = int (*)()
Public Attributes inherited from eonc::IIRAResource
std::mutex library_mutex
 Serializes access to the Fortran backend's shared global state.
Protected Member Functions inherited from eonc::IIRAResource
 IIRAResource ()=default

Detailed Description

Definition at line 80 of file IRAResource.h.

Constructor & Destructor Documentation

◆ ~IRAResource()

eonc::IRAResource::~IRAResource ( )
override

◆ IRAResource() [1/2]

eonc::IRAResource::IRAResource ( const IRAResource & )
delete

◆ IRAResource() [2/2]

eonc::IRAResource::IRAResource ( )
private

Member Function Documentation

◆ get_compute_all_fn()

libira_compute_all_fn eonc::IRAResource::get_compute_all_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IIRAResource.

Definition at line 96 of file IRAResource.h.

96 {
98 }
libira_compute_all_fn libira_compute_all_

◆ get_cshda_pbc_fn()

libira_cshda_pbc_fn eonc::IRAResource::get_cshda_pbc_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IIRAResource.

Definition at line 93 of file IRAResource.h.

93 {
94 return libira_cshda_pbc_;
95 }
libira_cshda_pbc_fn libira_cshda_pbc_

◆ get_get_nmax_fn()

libira_get_nmax_fn eonc::IRAResource::get_get_nmax_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IIRAResource.

Definition at line 99 of file IRAResource.h.

99 {
100 return libira_get_nmax_;
101 }
libira_get_nmax_fn libira_get_nmax_

◆ get_match_fn()

libira_match_fn eonc::IRAResource::get_match_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IIRAResource.

Definition at line 90 of file IRAResource.h.

90 {
91 return libira_match_;
92 }
libira_match_fn libira_match_

◆ instance()

IRAResource & eonc::IRAResource::instance ( )
static

Thread-safe singleton accessor (Meyer's pattern).

◆ is_loaded()

bool eonc::IRAResource::is_loaded ( ) const
inlinenodiscardoverridevirtualnoexcept

Implements eonc::IIRAResource.

Definition at line 85 of file IRAResource.h.

85{ return m_loaded; }

◆ load_sym()

template<typename Fn>
Fn eonc::IRAResource::load_sym ( const char * name) const
inlineprivate

Try to load a symbol; returns nullptr on failure.

Definition at line 121 of file IRAResource.h.

121 {
122 return reinterpret_cast<Fn>(dynlib::sym(m_handle, name));
123 }
dynlib::Handle m_handle
void * sym(Handle h, const char *name) noexcept
Definition DynLib.h:75

◆ operator=()

IRAResource & eonc::IRAResource::operator= ( const IRAResource & )
delete

◆ require_loaded()

void eonc::IRAResource::require_loaded ( )
overridevirtual

Throws std::runtime_error if libira is not available.

Implements eonc::IIRAResource.

◆ Runtime

friend class Runtime
friend

Definition at line 109 of file IRAResource.h.

Member Data Documentation

◆ libira_compute_all_

libira_compute_all_fn eonc::IRAResource::libira_compute_all_ {nullptr}
private

Definition at line 117 of file IRAResource.h.

117{nullptr};

◆ libira_cshda_pbc_

libira_cshda_pbc_fn eonc::IRAResource::libira_cshda_pbc_ {nullptr}
private

Definition at line 116 of file IRAResource.h.

116{nullptr};

◆ libira_get_nmax_

libira_get_nmax_fn eonc::IRAResource::libira_get_nmax_ {nullptr}
private

Definition at line 118 of file IRAResource.h.

118{nullptr};

◆ libira_match_

libira_match_fn eonc::IRAResource::libira_match_ {nullptr}
private

Definition at line 115 of file IRAResource.h.

115{nullptr};

◆ m_handle

dynlib::Handle eonc::IRAResource::m_handle {}
private

Definition at line 112 of file IRAResource.h.

112{};

◆ m_loaded

bool eonc::IRAResource::m_loaded {false}
private

Definition at line 111 of file IRAResource.h.

111{false};

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