blob: 78f790432353b58aead627a53fe9aee33a251cf2 [file] [log] [blame]
#ifndef BASYX_SUBMODEL_SIMPLE_SUBMODEL_H
#define BASYX_SUBMODEL_SIMPLE_SUBMODEL_H
#include <BaSyx/submodel/api_v2/ISubModel.h>
#include <BaSyx/submodel/api_v2/submodelelement/ISubmodelElement.h>
#include <BaSyx/submodel/simple/qualifier/Identifiable.h>
#include <BaSyx/submodel/simple/qualifier/HasDataSpecification.h>
#include <BaSyx/submodel/simple/qualifier/Qualifiable.h>
#include <BaSyx/submodel/simple/common/ElementContainer.h>
#include <memory>
#include <vector>
#include <unordered_map>
namespace basyx {
namespace submodel {
namespace simple {
class SubModel : public api::ISubModel
{
private:
Identifiable identifiable;
ModelingKind kind;
HasDataSpecification dataSpecification;
Reference semanticId;
Qualifiable qualifiable;
ElementContainer<api::ISubmodelElement> elementContainer;
public:
SubModel(const std::string & idShort, const Identifier & identifier);
virtual ~SubModel() = default;
public:
virtual api::IElementContainer<api::ISubmodelElement> & submodelElements();
virtual const api::IElementContainer<api::ISubmodelElement> & submodelElements() const;
// Inherited via IHasKind
virtual ModelingKind getKind() const override;
// Inherited via IReferable
virtual const std::string & getIdShort() const override;
virtual const std::string * const getCategory() const override;
virtual void setCategory(const std::string & category) override;
virtual simple::LangStringSet & getDescription() override;
virtual const simple::LangStringSet & getDescription() const override;
virtual const IReferable * const getParent() const override;
// Inherited via IIdentifiable
virtual const AdministrativeInformation & getAdministrativeInformation() const override;
virtual AdministrativeInformation & getAdministrativeInformation() override;
virtual Identifier getIdentification() const override;
virtual bool hasAdministrativeInformation() const;
// Inherited via IHasDataSpecification
virtual void addDataSpecification(const Reference & reference) override;
virtual const std::vector<Reference> getDataSpecificationReference() const override;
// Inherited via IHasSemantics
virtual const api::IReference & getSemanticId() const override;
virtual void setSemanticId(const api::IReference & semanticId) override;
// Inherited via IQualifiable
virtual void addFormula(const api::IFormula & formula) override;
virtual void addQualifier(const api::IQualifier & qualifier) override;
virtual std::vector<simple::Formula> getFormulas() const override;
virtual std::vector<simple::Qualifier> getQualifiers() const override;
};
}
}
}
#endif /* BASYX_SUBMODEL_SIMPLE_SUBMODEL_H */