blob: 5d8f1230c8cca4bfed281e43fc8492a35506852f [file] [log] [blame]
Thomas Psota7e562b62020-04-30 15:11:32 +02001#ifndef BASYX_SUBMODEL_SIMPLE_PARTS_CONCEPTDESCRIPTION_H
2#define BASYX_SUBMODEL_SIMPLE_PARTS_CONCEPTDESCRIPTION_H
3
4#include <BaSyx/submodel/api_v2/parts/IConceptDescription.h>
5#include <BaSyx/submodel/simple/qualifier/HasDataSpecification.h>
6#include <BaSyx/submodel/simple/qualifier/Identifiable.h>
7#include <BaSyx/submodel/simple/common/ElementContainer.h>
Constantin Ziesche02817f12020-08-04 21:40:43 +02008#include <BaSyx/submodel/simple/dataspecification/DataSpecification.h>
Thomas Psota7e562b62020-04-30 15:11:32 +02009
10
11namespace basyx {
12namespace submodel {
13namespace simple {
14
Constantin Ziesche02817f12020-08-04 21:40:43 +020015class ConceptDescription
16 : public virtual api::IConceptDescription
17 , public Identifiable
Thomas Psota7e562b62020-04-30 15:11:32 +020018{
Constantin Ziesche02817f12020-08-04 21:40:43 +020019private:
Thomas Psota7e562b62020-04-30 15:11:32 +020020 HasDataSpecification dataSpec;
Constantin Ziesche02817f12020-08-04 21:40:43 +020021 std::vector<std::unique_ptr<api::IReference>> isCaseOf;
Thomas Psota7e562b62020-04-30 15:11:32 +020022 ElementContainer<api::IDataSpecification> embeddedDataSpecs;
23public:
24 ConceptDescription(const std::string & idShort, const Identifier & identifier);
25
Constantin Ziesche02817f12020-08-04 21:40:43 +020026 ~ConceptDescription() override = default;
Thomas Psota7e562b62020-04-30 15:11:32 +020027
28 // Inherited via IConceptDescription
Constantin Ziesche02817f12020-08-04 21:40:43 +020029 const std::vector<std::unique_ptr<api::IReference>> & getIsCaseOf() const override;
30 const api::IElementContainer<api::IDataSpecification> & getEmbeddedDataSpecification() const override;
Thomas Psota7e562b62020-04-30 15:11:32 +020031
32 // Inherited via IHasDataSpecification
Constantin Ziesche02817f12020-08-04 21:40:43 +020033 void addDataSpecification(const Reference & reference) override;
34 const std::vector<Reference> getDataSpecificationReference() const override;
Thomas Psota7e562b62020-04-30 15:11:32 +020035
Constantin Ziesche02817f12020-08-04 21:40:43 +020036 //not inherited
37 void addIsCaseOf(std::unique_ptr<simple::Reference> reference);
38 void addEmbeddedDataSpecification(std::unique_ptr<DataSpecification> data_specification);
Thomas Psota7e562b62020-04-30 15:11:32 +020039};
40
41}
42}
43}
44
45#endif /* BASYX_SUBMODEL_SIMPLE_PARTS_CONCEPTDESCRIPTION_H */