diff --git a/iface/CMakeLists.txt b/iface/CMakeLists.txt index 3c5a247..c010c9d 100644 --- a/iface/CMakeLists.txt +++ b/iface/CMakeLists.txt @@ -15,6 +15,9 @@ target_sources(nf7_iface common/observer.hh common/task.hh common/value.hh + subsys/interface.hh + env.hh + lambda.hh version.hh ) diff --git a/iface/env.hh b/iface/env.hh new file mode 100644 index 0000000..b01a7a7 --- /dev/null +++ b/iface/env.hh @@ -0,0 +1,11 @@ +// No copyright +#pragma once + +#include "iface/common/container.hh" +#include "iface/subsys/interface.hh" + +namespace nf7 { + +using Env = Container; + +} // namespace nf7 diff --git a/iface/lambda.hh b/iface/lambda.hh new file mode 100644 index 0000000..a294280 --- /dev/null +++ b/iface/lambda.hh @@ -0,0 +1,40 @@ +// No copyright +#pragma once + +#include +#include +#include +#include + +#include "iface/common/dealer.hh" +#include "iface/common/value.hh" + +namespace nf7 { + +class Lambda { + public: + Lambda() = delete; + Lambda(std::vector>>&& takers, + std::vector>>&& makers) noexcept + : takers_(std::move(takers)), makers_(makers) { + } + virtual ~Lambda() = default; + + Lambda(const Lambda&) = delete; + Lambda(Lambda&&) = delete; + Lambda& operator=(const Lambda&) = delete; + Lambda& operator=(Lambda&&) = delete; + + std::span>> takers() const noexcept { + return takers_; + } + std::span>> makers() const noexcept { + return makers_; + } + + private: + std::vector>> takers_; + std::vector>> makers_; +}; + +} // namespace nf7 diff --git a/iface/subsys/interface.hh b/iface/subsys/interface.hh new file mode 100644 index 0000000..8212db2 --- /dev/null +++ b/iface/subsys/interface.hh @@ -0,0 +1,24 @@ +// No copyright +#pragma once + +namespace nf7::subsys { + +class Interface { + public: + Interface() = delete; + explicit Interface(const char* name) : name_(name) { } + virtual ~Interface() = default; + + Interface(const Interface&) = delete; + Interface(Interface&&) = delete; + Interface& operator=(const Interface&) = delete; + Interface& operator=(Interface&&) = delete; + + const char* name() const noexcept { return name_; } + + private: + const char* name_; +}; + + +} // namespace nf7::subsys