20 #include <type_traits>
23 #include "ngraph/enum_names.hpp"
24 #include "ngraph/type.hpp"
32 template <
typename VAT>
59 template <
typename VAT>
64 virtual const VAT&
get() = 0;
66 virtual void set(
const VAT& value) = 0;
73 virtual void* get_ptr() = 0;
74 virtual size_t size() = 0;
77 template <
typename AT>
85 const AT&
get()
override {
return m_ref; }
86 void set(
const AT& value)
override { m_ref = value; }
91 template <
typename AT,
typename VAT>
105 m_buffer =
static_cast<VAT
>(m_ref);
106 m_buffer_valid =
true;
111 void set(
const VAT& value)
override
113 m_ref =
static_cast<AT
>(value);
114 m_buffer_valid =
false;
120 bool m_buffer_valid{
false};
123 template <
typename A,
typename B>
127 for (
size_t i = 0; i < b.size(); ++i)
130 static_cast<typename std::remove_reference<decltype(result[i])
>::type>(b[i]);
135 template <
typename AT,
typename VAT>
148 m_buffer = copy_from<typename std::remove_cv<VAT>::type>(m_ref);
149 m_buffer_valid =
true;
154 void set(
const VAT& value)
override
156 m_ref = copy_from<AT>(value);
157 m_buffer_valid =
false;
160 operator AT&() {
return m_ref; }
164 bool m_buffer_valid{
false};
169 template <
typename AT>
176 template <
typename AT>
186 void set(
const std::string& value)
override { m_ref = as_enum<AT>(value); }
187 operator AT&() {
return m_ref; }
209 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
223 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
237 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
251 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
265 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
279 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int16_t>", 0};
280 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
294 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int32_t>", 0};
295 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
308 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int64_t>", 0};
309 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
323 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint8_t>", 0};
324 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
338 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint16_t>", 0};
339 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
353 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint32_t>", 0};
354 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
368 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint64_t>", 0};
369 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
383 static constexpr DiscreteTypeInfo type_info{
"AttributeAdapter<size_t>", 0};
384 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
388 class NGRAPH_API AttributeAdapter<std::vector<size_t>>
389 :
public IndirectVectorValueAccessor<std::vector<size_t>, std::vector<int64_t>>
392 AttributeAdapter(std::vector<size_t>& value)
393 : IndirectVectorValueAccessor<std::vector<size_t>, std::vector<int64_t>>(value)
397 static constexpr DiscreteTypeInfo type_info{
"AttributeAdapter<vector<size_t>>", 0};
398 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
416 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int8_t>>", 0};
417 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
431 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int16_t>>", 0};
432 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
446 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int32_t>>", 0};
447 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
461 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int64_t>>", 0};
462 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
476 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint8_t>>", 0};
477 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
491 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint16_t>>", 0};
492 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
506 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint32_t>>", 0};
507 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
521 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint64_t>>", 0};
522 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
536 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<float>>", 0};
537 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
551 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<double>>", 0};
552 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
566 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<string>>", 0};
567 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
An AttributeAdapter "captures" an attribute as an AT& and makes it available as a ValueAccessor<VAT>.
Definition: attribute_adapter.hpp:171
Visits the attributes of a node, primarily for serialization-like tasks.
Definition: attribute_visitor.hpp:71
Definition: attribute_adapter.hpp:79
void set(const AT &value) override
Sets the value.
Definition: attribute_adapter.hpp:86
const AT & get() override
Returns the value.
Definition: attribute_adapter.hpp:85
Access an enum via a string.
Definition: attribute_adapter.hpp:178
const std::string & get() override
Returns the value.
Definition: attribute_adapter.hpp:185
void set(const std::string &value) override
Sets the value.
Definition: attribute_adapter.hpp:186
Definition: attribute_adapter.hpp:93
void set(const VAT &value) override
Sets the value.
Definition: attribute_adapter.hpp:111
const VAT & get() override
Returns the value.
Definition: attribute_adapter.hpp:101
Definition: attribute_adapter.hpp:137
const VAT & get() override
Returns the value.
Definition: attribute_adapter.hpp:144
void set(const VAT &value) override
Sets the value.
Definition: attribute_adapter.hpp:154
ValueAccessor<void> provides an accessor for values that do not have get/set methonds via AttributeVi...
Definition: attribute_adapter.hpp:42
virtual const DiscreteTypeInfo & get_type_info() const =0
type info enables identification of the value accessor, as well as is_type and as_type.
Provides access to an attribute of type AT as a value accessor type VAT.
Definition: attribute_adapter.hpp:61
virtual void set(const VAT &value)=0
Sets the value.
virtual const VAT & get()=0
Returns the value.
Adapters will see visitor.
Definition: attribute_adapter.hpp:194
The Intel nGraph C++ API.
Definition: attribute_adapter.hpp:28
const std::string & as_string(Value value)
Returns the string matching the enum value.
Definition: enum_names.hpp:92