meta/SaiObjectCollection.h (44 lines of code) (raw):
#pragma once
#include "SaiAttrWrapper.h"
#include "SaiObject.h"
#include "MetaKeyHasher.h"
#include <string>
#include <unordered_map>
#include <memory>
#include <vector>
namespace saimeta
{
class SaiObjectCollection
{
public:
SaiObjectCollection() = default;
virtual ~SaiObjectCollection() = default;
private:
SaiObjectCollection(const SaiObjectCollection&) = delete;
SaiObjectCollection& operator=(const SaiObjectCollection&) = delete;
public:
void clear();
bool objectExists(
_In_ const sai_object_meta_key_t& metaKey) const;
void createObject(
_In_ const sai_object_meta_key_t& metaKey);
void removeObject(
_In_ const sai_object_meta_key_t& metaKey);
void setObjectAttr(
_In_ const sai_object_meta_key_t& metaKey,
_In_ const sai_attr_metadata_t& md,
_In_ const sai_attribute_t *attr);
std::shared_ptr<SaiAttrWrapper> getObjectAttr(
_In_ const sai_object_meta_key_t& metaKey,
_In_ sai_attr_id_t id);
std::vector<std::shared_ptr<SaiAttrWrapper>> getObjectAttributes(
_In_ const sai_object_meta_key_t& metaKey) const;
std::vector<std::shared_ptr<SaiObject>> getObjectsByObjectType(
_In_ sai_object_type_t objectType);
std::shared_ptr<SaiObject> getObject(
_In_ const sai_object_meta_key_t& metaKey) const;
std::vector<sai_object_meta_key_t> getAllKeys() const;
private:
std::unordered_map<sai_object_meta_key_t, std::shared_ptr<SaiObject>, MetaKeyHasher, MetaKeyHasher> m_objects;
};
}