/* * Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved. */ #ifndef CVI_RUNTIME_OP_PARAMETER_H #define CVI_RUNTIME_OP_PARAMETER_H #include #include #include #include #include #include namespace cvi { class FieldBase { public: FieldBase() = default; virtual ~FieldBase() = default; }; template class Field: public FieldBase { public: Field(T& val): data(val) {} T data; }; class OpParam { public: template void put(std::string name, T value) { fields[name] = std::make_shared>(value); } template T& get(std::string name) { auto f = dynamic_cast*>(fields[name].get()); assert(f); return f->data; } bool has(std::string name) { auto it = fields.find(name); return it != fields.end(); } private: std::map> fields; }; } #endif