Skip to content

Commit df81cc9

Browse files
committed
refactor: flesh out the architecture a bit more
1 parent 09e8a29 commit df81cc9

3 files changed

Lines changed: 40 additions & 6 deletions

File tree

include/lfmc/manager.hpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#pragma once
2-
32
#include "lfmc/process.hpp"
43
#include "lfmc/scheme.hpp"
54

5+
#include <memory>
6+
67
/**
78
* @file manager.hpp
89
* @brief Manager class for handling processes and schemes using the Strategy Pattern.
@@ -24,15 +25,26 @@ namespace lfmc {
2425
* allowing for dynamic selection and management of different strategies at runtime.
2526
*/
2627
class Manager {
28+
// TODO as a starting point, we use runtime polymorphism to manage strategies
2729
public:
28-
/// Constructor
29-
Manager() = default;
30-
// Additional methods for managing processes and schemes will be added here
30+
explicit Manager(std::unique_ptr<Process>&& process = {}, std::unique_ptr<Scheme>&& scheme = {})
31+
: scheme_(std::move(scheme)), process_(std::move(process)) {}
32+
33+
// TODO move to implementation file once actual design is fleshed out
34+
void setScheme(std::unique_ptr<Scheme>&& scheme) {
35+
scheme_ = std::move(scheme);
36+
}
37+
void setProcess(std::unique_ptr<Process>&& process) {
38+
process_ = std::move(process);
39+
}
3140

3241
private:
33-
// Internal data structures for managing processes and schemes will be added here
42+
// TODO Internal data structures for managing processes and schemes will be added here
3443
// TODO decide on the appropriate strategy implementation - refer to notes and design patterns -
35-
// runtime vs. compile-time determines more
44+
// runtime vs. compile-time
45+
46+
std::unique_ptr<Scheme> scheme_;
47+
std::unique_ptr<Process> process_;
3648
};
3749

3850
} // namespace lfmc

include/lfmc/process.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,15 @@
55
*
66
* This file defines the `Process` class and implementations of different stochastic processes.
77
*/
8+
9+
namespace lfmc {
10+
11+
class Process {
12+
public:
13+
virtual ~Process() = default;
14+
// Define common interface methods for processes here
15+
// e.g., virtual void simulateStep() = 0;
16+
// TODO flesh out based on requirements
17+
};
18+
19+
} // namespace lfmc

include/lfmc/scheme.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,13 @@
66
* This file defines the `Scheme` class and implementations of different numerical schemes
77
* used for simulating stochastic processes.
88
*/
9+
10+
namespace lfmc {
11+
12+
class Scheme {
13+
public:
14+
virtual ~Scheme() = default;
15+
// Define common interface methods for schemes here
16+
};
17+
18+
} // namespace lfmc

0 commit comments

Comments
 (0)