blob: b8081487fd0911577e7ddaa3c32a38d4d665564d [file] [log] [blame]
#include <BaSyx/submodel/enumerations/ModelTypes.h>
#include <array>
#include <algorithm>
#include <memory>
#include <string>
using namespace basyx::submodel;
using enum_pair_t = std::pair<const char*, ModelTypes>;
static const std::array<enum_pair_t, 29> string_to_enum =
{
std::make_pair("Asset", ModelTypes::Asset),
std::make_pair("AssetAdministrationShell", ModelTypes::AssetAdministrationShell),
std::make_pair("ConceptDescription", ModelTypes::ConceptDescription),
std::make_pair("Submodel", ModelTypes::Submodel),
std::make_pair("AccessPermissionRule", ModelTypes::AccessPermissionRule),
std::make_pair("AnnotatedRelationshipElement", ModelTypes::AnnotatedRelationshipElement),
std::make_pair("BasicEvent", ModelTypes::BasicEvent),
std::make_pair("Blob", ModelTypes::Blob),
std::make_pair("Capability", ModelTypes::Capability),
std::make_pair("ConceptDictionary", ModelTypes::ConceptDictionary),
std::make_pair("DataElement", ModelTypes::DataElement),
std::make_pair("File", ModelTypes::File),
std::make_pair("Entity", ModelTypes::Entity),
std::make_pair("Event", ModelTypes::Event),
std::make_pair("MultiLanguageProperty", ModelTypes::MultiLanguageProperty),
std::make_pair("Operation", ModelTypes::Operation),
std::make_pair("OperationVariable", ModelTypes::OperationVariable),
std::make_pair("Property", ModelTypes::Property),
std::make_pair("Range", ModelTypes::Range),
std::make_pair("ReferenceElement", ModelTypes::ReferenceElement),
std::make_pair("RelationshipElement", ModelTypes::RelationshipElement),
std::make_pair("SubmodelElement", ModelTypes::SubmodelElement),
std::make_pair("SubmodelElementCollection", ModelTypes::SubmodelElementCollection),
std::make_pair("View", ModelTypes::View),
std::make_pair("GlobalReference", ModelTypes::GlobalReference),
std::make_pair("FragmentReference", ModelTypes::FragmentReference),
std::make_pair("Constraint", ModelTypes::Constraint),
std::make_pair("Formula", ModelTypes::Formula),
std::make_pair("Qualifier", ModelTypes::Qualifier),
};
ModelTypes ModelTypes_::from_string(const std::string & name)
{
auto pair = std::find_if(string_to_enum.begin(), string_to_enum.end(),
[&name](const enum_pair_t & pair) {
return !name.compare(pair.first);
});
return pair->second;
}
const char * ModelTypes_::to_string(ModelTypes value)
{
auto pair = std::find_if(string_to_enum.begin(), string_to_enum.end(),
[value](const enum_pair_t & pair) {
return value == pair.second;
});
return pair->first;
}