11 #include "ngraph/enum_names.hpp"
12 #include "ngraph/type.hpp"
20 template <
typename VAT>
47 template <
typename VAT>
52 virtual const VAT&
get() = 0;
54 virtual void set(
const VAT& value) = 0;
61 virtual void* get_ptr() = 0;
62 virtual size_t size() = 0;
65 template <
typename AT>
73 const AT&
get()
override {
return m_ref; }
74 void set(
const AT& value)
override { m_ref = value; }
80 template <
typename AT,
typename VAT>
90 const VAT&
get()
override
94 m_buffer =
static_cast<VAT
>(m_ref);
95 m_buffer_valid =
true;
100 void set(
const VAT& value)
override
102 m_ref =
static_cast<AT
>(value);
103 m_buffer_valid =
false;
109 bool m_buffer_valid{
false};
112 template <
typename A,
typename B>
116 for (
size_t i = 0; i < b.size(); ++i)
119 static_cast<typename std::remove_reference<decltype(result[i])
>::type>(b[i]);
124 template <
typename AT,
typename VAT>
137 m_buffer = copy_from<typename std::remove_cv<VAT>::type>(m_ref);
138 m_buffer_valid =
true;
143 void set(
const VAT& value)
override
145 m_ref = copy_from<AT>(value);
146 m_buffer_valid =
false;
149 operator AT&() {
return m_ref; }
154 bool m_buffer_valid{
false};
159 template <
typename AT>
166 template <
typename AT>
176 void set(
const std::string& value)
override { m_ref = as_enum<AT>(value); }
177 operator AT&() {
return m_ref; }
200 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
214 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
228 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
242 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
256 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
270 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int16_t>", 0};
271 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
285 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int32_t>", 0};
286 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
299 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<int64_t>", 0};
300 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
314 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint8_t>", 0};
315 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
329 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint16_t>", 0};
330 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
344 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint32_t>", 0};
345 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
359 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<uint64_t>", 0};
360 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
374 static constexpr DiscreteTypeInfo type_info{
"AttributeAdapter<size_t>", 0};
375 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
379 class NGRAPH_API AttributeAdapter<std::vector<size_t>>
380 :
public IndirectVectorValueAccessor<std::vector<size_t>, std::vector<int64_t>>
383 AttributeAdapter(std::vector<size_t>& value)
384 : IndirectVectorValueAccessor<std::vector<size_t>, std::vector<int64_t>>(value)
388 static constexpr DiscreteTypeInfo type_info{
"AttributeAdapter<vector<size_t>>", 0};
389 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
407 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int8_t>>", 0};
408 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
422 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int16_t>>", 0};
423 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
437 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int32_t>>", 0};
438 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
452 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<int64_t>>", 0};
453 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
467 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint8_t>>", 0};
468 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
482 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint16_t>>", 0};
483 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
497 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint32_t>>", 0};
498 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
512 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<uint64_t>>", 0};
513 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
527 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<float>>", 0};
528 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
542 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<double>>", 0};
543 const DiscreteTypeInfo& get_type_info()
const override {
return type_info; }
557 static constexpr
DiscreteTypeInfo type_info{
"AttributeAdapter<vector<string>>", 0};
558 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:161
Visits the attributes of a node, primarily for serialization-like tasks.
Definition: attribute_visitor.hpp:59
Definition: attribute_adapter.hpp:67
void set(const AT &value) override
Sets the value.
Definition: attribute_adapter.hpp:74
const AT & get() override
Returns the value.
Definition: attribute_adapter.hpp:73
Access an enum via a string.
Definition: attribute_adapter.hpp:168
const std::string & get() override
Returns the value.
Definition: attribute_adapter.hpp:175
void set(const std::string &value) override
Sets the value.
Definition: attribute_adapter.hpp:176
Definition: attribute_adapter.hpp:82
void set(const VAT &value) override
Sets the value.
Definition: attribute_adapter.hpp:100
const VAT & get() override
Returns the value.
Definition: attribute_adapter.hpp:90
Definition: attribute_adapter.hpp:126
const VAT & get() override
Returns the value.
Definition: attribute_adapter.hpp:133
void set(const VAT &value) override
Sets the value.
Definition: attribute_adapter.hpp:143
ValueAccessor<void> provides an accessor for values that do not have get/set methonds via AttributeVi...
Definition: attribute_adapter.hpp:30
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:49
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:185
The Intel nGraph C++ API.
Definition: attribute_adapter.hpp:16
const std::string & as_string(Value value)
Returns the string matching the enum value.
Definition: enum_names.hpp:80