meta/SaiObject.h (34 lines of code) (raw):

#pragma once #include "SaiAttrWrapper.h" #include <memory> #include <unordered_map> #include <vector> namespace saimeta { class SaiObject { public: SaiObject( _In_ const sai_object_meta_key_t& metaKey); virtual ~SaiObject() = default; private: SaiObject(const SaiObject&) = delete; SaiObject& operator=(const SaiObject&) = delete; public: sai_object_type_t getObjectType() const; bool hasAttr( _In_ sai_attr_id_t id) const; const sai_object_meta_key_t& getMetaKey() const; void setAttr( _In_ const sai_attr_metadata_t* md, _In_ const sai_attribute_t *attr); void setAttr( _In_ std::shared_ptr<SaiAttrWrapper> attr); std::shared_ptr<SaiAttrWrapper> getAttr( _In_ sai_attr_id_t id) const; std::vector<std::shared_ptr<SaiAttrWrapper>> getAttributes() const; private: sai_object_meta_key_t m_metaKey; std::unordered_map<sai_attr_id_t, std::shared_ptr<SaiAttrWrapper>> m_attrs; }; }