eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
MetatomicLoader.h
Go to the documentation of this file.
1
/*
2
** This file is part of eOn.
3
**
4
** SPDX-License-Identifier: BSD-3-Clause
5
**
6
** Runtime loader for libmetatomic_pot.so (C ABI).
7
*/
8
#pragma once
9
10
#include "
eon/DynLib.h
"
11
#include "
metatomic_c_abi.h
"
12
13
#include <stdexcept>
14
#include <string>
15
16
namespace
eonc
{
17
18
class
MetatomicLoader
{
19
public
:
20
using
create_fn
=
EonMtaPot
*(*)(
const
EonMtaConfig
*,
char
*,
size_t
);
21
using
destroy_fn
= void (*)(
EonMtaPot
*);
22
using
force_fn
= int (*)(
EonMtaPot
*, long,
const
double
*,
const
int
*,
23
double
*,
double
*,
double
*,
const
double
*);
24
using
abi_version_fn
= int (*)(void);
25
26
static
MetatomicLoader
&
instance
();
27
29
bool
try_load
();
30
31
[[nodiscard]]
bool
is_loaded
() const noexcept {
return
m_loaded
; }
32
void
require_loaded
();
33
34
create_fn
create
{
nullptr
};
35
destroy_fn
destroy
{
nullptr
};
36
force_fn
force
{
nullptr
};
37
abi_version_fn
abi_version
{
nullptr
};
38
39
MetatomicLoader
(
const
MetatomicLoader
&) =
delete
;
40
MetatomicLoader
&
operator=
(
const
MetatomicLoader
&) =
delete
;
41
42
private
:
43
MetatomicLoader
() =
default
;
44
~MetatomicLoader
();
45
46
bool
m_loaded
{
false
};
47
dynlib::Handle
m_handle
{};
48
};
49
50
}
// namespace eonc
DynLib.h
metatomic_c_abi.h
eonc::MetatomicLoader::try_load
bool try_load()
Attempt (re)load if not yet successful. Safe after potentials_path inject.
Definition
MetatomicLoader.cpp:24
eonc::MetatomicLoader::operator=
MetatomicLoader & operator=(const MetatomicLoader &)=delete
eonc::MetatomicLoader::abi_version_fn
int(*)(void) abi_version_fn
Definition
MetatomicLoader.h:24
eonc::MetatomicLoader::~MetatomicLoader
~MetatomicLoader()
Definition
MetatomicLoader.cpp:106
eonc::MetatomicLoader::instance
static MetatomicLoader & instance()
Definition
MetatomicLoader.cpp:19
eonc::MetatomicLoader::MetatomicLoader
MetatomicLoader()=default
eonc::MetatomicLoader::force
force_fn force
Definition
MetatomicLoader.h:36
eonc::MetatomicLoader::MetatomicLoader
MetatomicLoader(const MetatomicLoader &)=delete
eonc::MetatomicLoader::is_loaded
bool is_loaded() const noexcept
Definition
MetatomicLoader.h:31
eonc::MetatomicLoader::destroy_fn
void(*)(EonMtaPot *) destroy_fn
Definition
MetatomicLoader.h:21
eonc::MetatomicLoader::create_fn
EonMtaPot *(*)(const EonMtaConfig *, char *, size_t) create_fn
Definition
MetatomicLoader.h:20
eonc::MetatomicLoader::m_handle
dynlib::Handle m_handle
Definition
MetatomicLoader.h:47
eonc::MetatomicLoader::abi_version
abi_version_fn abi_version
Definition
MetatomicLoader.h:37
eonc::MetatomicLoader::require_loaded
void require_loaded()
Definition
MetatomicLoader.cpp:108
eonc::MetatomicLoader::m_loaded
bool m_loaded
Definition
MetatomicLoader.h:46
eonc::MetatomicLoader::destroy
destroy_fn destroy
Definition
MetatomicLoader.h:35
eonc::MetatomicLoader::create
create_fn create
Definition
MetatomicLoader.h:34
eonc::MetatomicLoader::force_fn
int(*)(EonMtaPot *, long, const double *, const int *, double *, double *, double *, const double *) force_fn
Definition
MetatomicLoader.h:22
eonc::dynlib::Handle
void * Handle
Definition
DynLib.h:60
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
EonMtaConfig
Flat config for create (mirrors Parameters::metatomic_options_t).
Definition
metatomic_c_abi.h:37
EonMtaPot
Definition
MetatomicCAbi.cpp:19
include
eon
potentials
Metatomic
MetatomicLoader.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf