add MetaEnv subsys iface
This commit is contained in:
parent
cafeb62c9d
commit
d7c4364255
@ -27,6 +27,7 @@ target_sources(nf7_iface
|
||||
subsys/dealer.hh
|
||||
subsys/interface.hh
|
||||
subsys/logger.hh
|
||||
subsys/meta_env.hh
|
||||
subsys/parallelism.hh
|
||||
env.hh
|
||||
lambda.hh
|
||||
|
42
iface/subsys/meta_env.hh
Normal file
42
iface/subsys/meta_env.hh
Normal file
@ -0,0 +1,42 @@
|
||||
// No copyright
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "iface/common/exception.hh"
|
||||
#include "iface/env.hh"
|
||||
|
||||
|
||||
namespace nf7::subsys {
|
||||
|
||||
class MetaEnv : public Interface {
|
||||
public:
|
||||
using Pair = std::pair<std::string, Env&>;
|
||||
|
||||
public:
|
||||
using Interface::Interface;
|
||||
|
||||
public:
|
||||
virtual Env* FindOr(std::string_view) const noexcept = 0;
|
||||
virtual std::optional<Pair> FindOr(uint64_t) const noexcept = 0;
|
||||
virtual std::vector<Pair> FetchAll() const = 0;
|
||||
|
||||
public:
|
||||
Env& Find(std::string_view key) const {
|
||||
auto ret = FindOr(key);
|
||||
return ret? *ret: throw Exception {"missing file"};
|
||||
}
|
||||
Pair Find(uint64_t idx) const {
|
||||
auto ret = FindOr(idx);
|
||||
return ret? *ret: throw Exception {"missing file"};
|
||||
}
|
||||
|
||||
public:
|
||||
virtual std::shared_ptr<MetaEnv> parent() const noexcept = 0;
|
||||
};
|
||||
|
||||
} // namespace nf7::subsys
|
Loading…
x
Reference in New Issue
Block a user