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

#include <ARTnResource.h>

Inheritance diagram for eonc::ARTnResource:

Public Member Functions

bool is_loaded () const noexcept override
void require_loaded () override
 Throws std::runtime_error if libartn is not available.
artn_create_fn get_create_fn () const override
setup_artn_fn get_setup_fn () const override
artn_fn get_artn_fn () const override
artn_destroy_fn get_destroy_fn () const override
set_param_fn get_set_param_fn () const override
get_param_fn get_get_param_fn () const override
get_runparam_fn get_get_runparam_fn () const override
get_data_fn get_get_data_fn () const override
print_caller_fn get_print_caller_fn () const override
artn_step_fn get_artn_step_fn () const override
get_error_fn get_get_error_fn () const override
 May be null on older pARTn builds that predate the C get_error wrapper; callers must null-check before dispatching.
 ~ARTnResource () override
 ARTnResource (const ARTnResource &)=delete
ARTnResource & operator= (const ARTnResource &)=delete
Public Member Functions inherited from eonc::IARTnResource
virtual ~IARTnResource ()=default
 IARTnResource (const IARTnResource &)=delete
IARTnResource & operator= (const IARTnResource &)=delete

Static Public Member Functions

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

Private Member Functions

 ARTnResource ()
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 {}
artn_create_fn artn_create_ {nullptr}
setup_artn_fn setup_artn_ {nullptr}
artn_fn artn_ {nullptr}
artn_destroy_fn artn_destroy_ {nullptr}
set_param_fn set_param_ {nullptr}
get_param_fn get_param_ {nullptr}
get_runparam_fn get_runparam_ {nullptr}
get_data_fn get_data_ {nullptr}
print_caller_fn print_caller_ {nullptr}
artn_step_fn artn_step_ {nullptr}
get_error_fn get_error_ {nullptr}

Friends

class Runtime

Additional Inherited Members

Public Types inherited from eonc::IARTnResource
using artn_create_fn = int (*)()
using setup_artn_fn = void (*)(const int nat, bool *cerr)
using artn_fn
using artn_destroy_fn = void (*)()
using set_param_fn
using get_param_fn = int (*)(const char *name, void **cval)
 pARTn bind(C) get_param / get_runparam: type(c_ptr), intent(out).
using get_runparam_fn = int (*)(const char *name, void **cval)
using get_data_fn = int (*)(const char *name, void **cval)
using print_caller_fn = void (*)()
using artn_step_fn
using get_error_fn = int (*)(void **cmsg)
 Retrieve pARTn error code + c_malloc'd message pointer.
Public Attributes inherited from eonc::IARTnResource
std::mutex library_mutex
 Serializes access to the Fortran backend's shared global state.
Protected Member Functions inherited from eonc::IARTnResource
 IARTnResource ()=default

Detailed Description

Definition at line 98 of file ARTnResource.h.

Constructor & Destructor Documentation

◆ ~ARTnResource()

eonc::ARTnResource::~ARTnResource ( )
override

◆ ARTnResource() [1/2]

eonc::ARTnResource::ARTnResource ( const ARTnResource & )
delete

◆ ARTnResource() [2/2]

eonc::ARTnResource::ARTnResource ( )
private

Member Function Documentation

◆ get_artn_fn()

artn_fn eonc::ARTnResource::get_artn_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 114 of file ARTnResource.h.

114{ return artn_; }

◆ get_artn_step_fn()

artn_step_fn eonc::ARTnResource::get_artn_step_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 133 of file ARTnResource.h.

133 {
134 return artn_step_;
135 }
artn_step_fn artn_step_

◆ get_create_fn()

artn_create_fn eonc::ARTnResource::get_create_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 108 of file ARTnResource.h.

108 {
109 return artn_create_;
110 }
artn_create_fn artn_create_

◆ get_destroy_fn()

artn_destroy_fn eonc::ARTnResource::get_destroy_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 115 of file ARTnResource.h.

115 {
116 return artn_destroy_;
117 }
artn_destroy_fn artn_destroy_

◆ get_get_data_fn()

get_data_fn eonc::ARTnResource::get_get_data_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 127 of file ARTnResource.h.

127 {
128 return get_data_;
129 }
get_data_fn get_data_

◆ get_get_error_fn()

get_error_fn eonc::ARTnResource::get_get_error_fn ( ) const
inlinenodiscardoverridevirtual

May be null on older pARTn builds that predate the C get_error wrapper; callers must null-check before dispatching.

Implements eonc::IARTnResource.

Definition at line 136 of file ARTnResource.h.

136 {
137 return get_error_;
138 }
get_error_fn get_error_

◆ get_get_param_fn()

get_param_fn eonc::ARTnResource::get_get_param_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 121 of file ARTnResource.h.

121 {
122 return get_param_;
123 }
get_param_fn get_param_

◆ get_get_runparam_fn()

get_runparam_fn eonc::ARTnResource::get_get_runparam_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 124 of file ARTnResource.h.

124 {
125 return get_runparam_;
126 }
get_runparam_fn get_runparam_

◆ get_print_caller_fn()

print_caller_fn eonc::ARTnResource::get_print_caller_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 130 of file ARTnResource.h.

130 {
131 return print_caller_;
132 }
print_caller_fn print_caller_

◆ get_set_param_fn()

set_param_fn eonc::ARTnResource::get_set_param_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 118 of file ARTnResource.h.

118 {
119 return set_param_;
120 }
set_param_fn set_param_

◆ get_setup_fn()

setup_artn_fn eonc::ARTnResource::get_setup_fn ( ) const
inlinenodiscardoverridevirtual

Implements eonc::IARTnResource.

Definition at line 111 of file ARTnResource.h.

111 {
112 return setup_artn_;
113 }
setup_artn_fn setup_artn_

◆ instance()

ARTnResource & eonc::ARTnResource::instance ( )
static

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

◆ is_loaded()

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

Implements eonc::IARTnResource.

Definition at line 103 of file ARTnResource.h.

103{ return m_loaded; }

◆ load_sym()

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

Try to load a symbol; returns nullptr on failure.

Definition at line 165 of file ARTnResource.h.

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

◆ operator=()

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

◆ require_loaded()

void eonc::ARTnResource::require_loaded ( )
overridevirtual

Throws std::runtime_error if libartn is not available.

Implements eonc::IARTnResource.

◆ Runtime

friend class Runtime
friend

Definition at line 146 of file ARTnResource.h.

Member Data Documentation

◆ artn_

artn_fn eonc::ARTnResource::artn_ {nullptr}
private

Definition at line 154 of file ARTnResource.h.

154{nullptr};

◆ artn_create_

artn_create_fn eonc::ARTnResource::artn_create_ {nullptr}
private

Definition at line 152 of file ARTnResource.h.

152{nullptr};

◆ artn_destroy_

artn_destroy_fn eonc::ARTnResource::artn_destroy_ {nullptr}
private

Definition at line 155 of file ARTnResource.h.

155{nullptr};

◆ artn_step_

artn_step_fn eonc::ARTnResource::artn_step_ {nullptr}
private

Definition at line 161 of file ARTnResource.h.

161{nullptr};

◆ get_data_

get_data_fn eonc::ARTnResource::get_data_ {nullptr}
private

Definition at line 159 of file ARTnResource.h.

159{nullptr};

◆ get_error_

get_error_fn eonc::ARTnResource::get_error_ {nullptr}
private

Definition at line 162 of file ARTnResource.h.

162{nullptr};

◆ get_param_

get_param_fn eonc::ARTnResource::get_param_ {nullptr}
private

Definition at line 157 of file ARTnResource.h.

157{nullptr};

◆ get_runparam_

get_runparam_fn eonc::ARTnResource::get_runparam_ {nullptr}
private

Definition at line 158 of file ARTnResource.h.

158{nullptr};

◆ m_handle

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

Definition at line 149 of file ARTnResource.h.

149{};

◆ m_loaded

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

Definition at line 148 of file ARTnResource.h.

148{false};

◆ print_caller_

print_caller_fn eonc::ARTnResource::print_caller_ {nullptr}
private

Definition at line 160 of file ARTnResource.h.

160{nullptr};

◆ set_param_

set_param_fn eonc::ARTnResource::set_param_ {nullptr}
private

Definition at line 156 of file ARTnResource.h.

156{nullptr};

◆ setup_artn_

setup_artn_fn eonc::ARTnResource::setup_artn_ {nullptr}
private

Definition at line 153 of file ARTnResource.h.

153{nullptr};

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