blob: 8a8e0f72343e14ab0145e26d4e3fe34965b73742 [file] [log] [blame]
#ifndef BASYX_SUBMODEL_SIMPLE_REFERENCE_REFERENCE_H
#define BASYX_SUBMODEL_SIMPLE_REFERENCE_REFERENCE_H
#include <BaSyx/submodel/api_v2/reference/IReference.h>
#include <BaSyx/submodel/api_v2/qualifier/IIdentifiable.h>
#include <BaSyx/submodel/simple/reference/Key.h>
#include <vector>
namespace basyx {
namespace submodel {
namespace simple {
class Reference : public api::IReference
{
private:
std::vector<Key> keyList;
public:
virtual ~Reference() = default;
Reference(const api::IReference & other);
Reference(const Reference & other) = default;
Reference(Reference && other) noexcept = default;
Reference & operator=(const Reference & other) = default;
Reference & operator=(Reference && other) noexcept = default;
Reference(const Key & key);
Reference(const std::vector<Key> & keys);
Reference(std::vector<Key> && keys);
Reference(const std::initializer_list<Key> keys);
Reference() = default;
public:
bool operator!=(const Reference & other) const;
inline bool operator==(const Reference & other) const { return !(*this != other); };
bool operator!=(const api::IReference & other) const;
inline bool operator==(const api::IReference & other) const { return !(*this != other); };
public:
std::vector<Key> getKeys() const override;
void addKey(const Key & key) override;
bool empty() const override;
public:
static Reference FromIdentifiable(KeyElements keyElementType, const api::IIdentifiable & identifiable);
};
}
}
}
#endif /* BASYX_SUBMODEL_SIMPLE_REFERENCE_REFERENCE_H */