InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
src/config.h
Go to the documentation of this file.
1#ifndef INFINI_OPS_CONFIG_H_
2#define INFINI_OPS_CONFIG_H_
3
4#include <cstddef>
5#include <memory>
6#include <optional>
7
8#include "cloneable.h"
9
10namespace infini::ops {
11
12class Config {
13 public:
14 virtual ~Config() = default;
15
16 virtual std::unique_ptr<Config> Clone() const {
17 return std::make_unique<Config>(*this);
18 }
19
20 std::size_t implementation_index() const {
21 return implementation_index_.value_or(0);
22 }
23
25 implementation_index_ = implementation_index;
26 }
27
29 return !implementation_index_.has_value();
30 }
31
32 private:
33 std::optional<std::size_t> implementation_index_;
34};
35
36} // namespace infini::ops
37
38#endif
void set_implementation_index(std::size_t implementation_index)
Definition src/config.h:24
virtual std::unique_ptr< Config > Clone() const
Definition src/config.h:16
bool needs_implementation_resolution() const
Definition src/config.h:28
std::size_t implementation_index() const
Definition src/config.h:20
virtual ~Config()=default
Definition generated/include/operator.h:28