/* * Copyright 2023 Ingemar Hedvall * SPDX-License-Identifier: MIT */ #pragma once #include "a2l/a2lobject.h" #include #include namespace a2l { class Function : public A2lObject { public: void ComponentType(const std::string& type) { component_type_ = type; } [[nodiscard]] const std::string& ComponentType() const { return component_type_; } void PrototypeOf(const std::string& type) { prototype_of_ = type; } [[nodiscard]] const std::string& PrototypeOf() const { return prototype_of_; } void DefaultCharacteristics(const std::vector& list) { default_characteristic_list_ = list; } [[nodiscard]] const std::vector& DefaultCharacteristics() const { return default_characteristic_list_; } void Version(const std::string& version) { version_ = version; } [[nodiscard]] const std::string& Version() const { return version_; } void InMeasurements(const std::vector& list) { in_measurement_list_ = list; } [[nodiscard]] const std::vector& InMeasurements() const { return in_measurement_list_; } void LocMeasurements(const std::vector& list) { loc_measurement_list_ = list; } [[nodiscard]] const std::vector& LocMeasurements() const { return loc_measurement_list_; } void OutMeasurements(const std::vector& list) { out_measurement_list_ = list; } [[nodiscard]] const std::vector& OutMeasurements() const { return out_measurement_list_; } void RefCharacteristics(const std::vector& list) { ref_characteristic_list_ = list; } [[nodiscard]] const std::vector& RefCharacteristics() const { return ref_characteristic_list_; } void SubFunctions(const std::vector& list) { sub_function_list_ = list; } [[nodiscard]] const std::vector& SubFunctions() const { return sub_function_list_; } private: std::string component_type_; std::string prototype_of_; std::vector default_characteristic_list_; std::string version_; std::vector in_measurement_list_; std::vector loc_measurement_list_; std::vector out_measurement_list_; std::vector ref_characteristic_list_; std::vector sub_function_list_; }; using FuncList = std::map>; } // end namespace a2l