File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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 */
2627class 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
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments