Loading...
Searching...
No Matches
Runtime.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** Copyright (c) 2010--present, eOn Development Team
7** All rights reserved.
8**
9** Repo:
10** https://github.com/TheochemUI/eOn
11*/
12#pragma once
13
14#include <memory>
15
16namespace eonc {
17
18class PotRegistry;
19class IRAResource;
20class ARTnResource;
21class PluginLoader;
22class MetatomicLoader;
23
27class Runtime {
28public:
29 Runtime();
30 Runtime(Runtime &&) noexcept;
31 Runtime &operator=(Runtime &&) noexcept;
33
34 Runtime(const Runtime &) = delete;
35 Runtime &operator=(const Runtime &) = delete;
36
37 [[nodiscard]] PotRegistry &pots() noexcept;
38 [[nodiscard]] const PotRegistry &pots() const noexcept;
39 [[nodiscard]] IRAResource &ira() noexcept;
40 [[nodiscard]] const IRAResource &ira() const noexcept;
41 [[nodiscard]] ARTnResource &artn() noexcept;
42 [[nodiscard]] const ARTnResource &artn() const noexcept;
43 [[nodiscard]] PluginLoader &plugins() noexcept;
44 [[nodiscard]] const PluginLoader &plugins() const noexcept;
45 [[nodiscard]] MetatomicLoader &metatomic() noexcept;
46 [[nodiscard]] const MetatomicLoader &metatomic() const noexcept;
47
48private:
49 std::unique_ptr<PotRegistry> pots_;
50 std::unique_ptr<IRAResource> ira_;
51 std::unique_ptr<ARTnResource> artn_;
52 std::unique_ptr<PluginLoader> plugins_;
53 std::unique_ptr<MetatomicLoader> metatomic_;
54};
55
56} // namespace eonc
PotRegistry & pots() noexcept
Definition Runtime.cpp:33
Runtime(Runtime &&) noexcept
PluginLoader & plugins() noexcept
Definition Runtime.cpp:39
ARTnResource & artn() noexcept
Definition Runtime.cpp:37
std::unique_ptr< IRAResource > ira_
Definition Runtime.h:50
std::unique_ptr< PluginLoader > plugins_
Definition Runtime.h:52
MetatomicLoader & metatomic() noexcept
Definition Runtime.cpp:41
std::unique_ptr< MetatomicLoader > metatomic_
Definition Runtime.h:53
IRAResource & ira() noexcept
Definition Runtime.cpp:35
std::unique_ptr< ARTnResource > artn_
Definition Runtime.h:51
std::unique_ptr< PotRegistry > pots_
Definition Runtime.h:49
RAII resource manager for the ARTn C library with global synchronization.