Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
LogicLibraryInfo.hpp
Go to the documentation of this file.
1#ifndef LIBS_LOGIC_SLOGICLIBRARYINFO_HPP
2#define LIBS_LOGIC_SLOGICLIBRARYINFO_HPP
3
5#include "logic/structs.hpp"
6
7#include <optional>
8#include <vector>
9
11
23
25{
26 // Param info
27
29 0}; // From 0 to number of params [ignoring type] [in this block]
30 uint32_t m_globalIdOrValueParameter {0};// uint32Value [valid for consts MI, byte, word & floats]
31 std::string m_sParamValue; // SValue [formatted for some types]
32 std::string m_paramValue; // Parameter value in string
33 std::string m_paramDescription; // Description from inside the library
34
35 // Connected info
36
37 // Connected block type
39 // Exec block order to which the param is connected
41 0};// [0 if not connected to an exec block (Const/LibIO)]
42 // Exec block's param ID to which the param is connected
44 0};// [Without if not connected to an exec block]
45
46 // External params
47
48 // Connected block from outside the library [Only for params connected to LibraryIO blocks]
51 std::string m_externalParamDescription; // Description for outside the library
52 std::string m_paramOnlineTag; // Tag of parameter online
53};
54
56{
57 SLibraryLogicBlock() = default;
58
62
64
65 iv::types::logic::logicExecutionOrder m_executionOrder {0}; // Order of execution of block [works as ID]
66 std::string m_blockName; // Block name
67 uint8_t m_blockType {0}; // Block type
68 uint8_t m_blockSubType {0}; // Block subtype
69 std::map<iv::logic::ParamId, SLibraryLogicBlockParam> m_blockParams;// Parameters of block
70
71 bool m_isLibrary {false}; // If block represents a library
72 std::unique_ptr<LogicLibraryInfo> m_libraryInfo;// Library the block represents
73};
74
76{
78 std::string m_externalParamDescription;// Parameter description [matches m_externalParamDescription]
79
81 {
84 0}; // Index in parameter description [considering type]
85 std::string m_internalParamDescription;// Parameter description [matches m_paramDescription]
86 std::string m_internalValue {0}; // Default value
87
88 bool operator==(const InternalParameterIdentifier &) const = default;
89 };
90
91 std::vector<InternalParameterIdentifier> m_internalParameters;
92};
93
95{
96public:
99
103 ~LogicLibraryInfo() = default;
105
109 void setParameterUint32Value(iv::logic::ParamId externalParamId, uint32_t uint32Value);
110
111 void updateExternalParameter(const std::string &value, ELibraryLogicBlockParamConnectedType externalConnectionType,
112 iv::logic::ParamId externalParamId);
113
114 void updateOnlineParameter(const std::string &value, iv::logic::ParamId externalParamId);
115
116 void setLibFile(const std::string &libFile);
117 void setLibLogicBlocks(std::map<iv::types::logic::logicExecutionOrder, SLibraryLogicBlock> libFileLogicBlocks);
118 void setLibExternalParameters(std::map<iv::logic::ParamId, SLibraryExternalParameter> libExternalParams);
119
120 [[nodiscard]] std::string getLibFileName() const;
121 [[nodiscard]] std::string getLibFilePath() const;
122 [[nodiscard]] const std::map<iv::types::logic::logicExecutionOrder, SLibraryLogicBlock> &getLibLogicBlocks() const;
123 [[nodiscard]] const std::map<iv::logic::ParamId, SLibraryExternalParameter> &getLibExternalParameters() const;
124
127
128 [[nodiscard]] bool matchesStructureOf(const LogicLibraryInfo &logicLibraryInfo) const;
129 [[nodiscard]] std::optional<iv::types::errorMessage> checkMatchesStructureOfLibraryFile() const;
130
131private:
132 // File de la librería
133 std::string m_libFileName;
134
135 // Bloques de la librería
136 std::map<iv::types::logic::logicExecutionOrder, SLibraryLogicBlock> m_libraryLogicBlocks;
137
138 std::map<iv::logic::ParamId, SLibraryExternalParameter> m_libraryExternalParameters;
139};
140
141#endif//LIBS_LOGIC_SLOGICLIBRARYINFO_HPP
ELibraryLogicBlockParamConnectedType
Definition LogicLibraryInfo.hpp:13
Definition LogicLibraryInfo.hpp:95
bool matchesStructureOf(const LogicLibraryInfo &logicLibraryInfo) const
Definition LogicLibraryInfo.cpp:765
LogicLibraryInfo & operator=(const LogicLibraryInfo &other)
Definition LogicLibraryInfo.cpp:156
std::string getLibFileName() const
Definition LogicLibraryInfo.cpp:457
void updateOnlineParameter(const std::string &value, iv::logic::ParamId externalParamId)
Definition LogicLibraryInfo.cpp:411
const std::map< iv::logic::ParamId, SLibraryExternalParameter > & getLibExternalParameters() const
Definition LogicLibraryInfo.cpp:472
void setLibIOIntermediateMemoryExternalConnection(iv::logic::ParamId externalParamId, iv::types::logic::logicIntermediateMemory memory)
Definition LogicLibraryInfo.cpp:318
void setLibLogicBlocks(std::map< iv::types::logic::logicExecutionOrder, SLibraryLogicBlock > libFileLogicBlocks)
Definition LogicLibraryInfo.cpp:445
std::map< iv::logic::ParamId, SLibraryExternalParameter > m_libraryExternalParameters
Definition LogicLibraryInfo.hpp:138
void setParameterUint32Value(iv::logic::ParamId externalParamId, uint32_t uint32Value)
Definition LogicLibraryInfo.cpp:349
iv::file::xml::node save(iv::file::xml::node &node) const
Definition LogicLibraryInfo.cpp:631
~LogicLibraryInfo()=default
void processLibraryIntermediateMemory(iv::types::logic::logicIntermediateMemory &currentMemory)
Definition LogicLibraryInfo.cpp:184
void setLibFile(const std::string &libFile)
Definition LogicLibraryInfo.cpp:440
const std::map< iv::types::logic::logicExecutionOrder, SLibraryLogicBlock > & getLibLogicBlocks() const
Definition LogicLibraryInfo.cpp:467
static std::string strLibraryLogicBlockParamConnectedType(ELibraryLogicBlockParamConnectedType enumType)
Definition LogicLibraryInfo.cpp:125
iv::file::xml::node read(const iv::file::xml::node &node)
Definition LogicLibraryInfo.cpp:477
static ELibraryLogicBlockParamConnectedType enumLibraryLogicBlockParamConnectedType(const std::string &strType)
Definition LogicLibraryInfo.cpp:107
void updateExternalParameter(const std::string &value, ELibraryLogicBlockParamConnectedType externalConnectionType, iv::logic::ParamId externalParamId)
Definition LogicLibraryInfo.cpp:378
std::map< iv::types::logic::logicExecutionOrder, SLibraryLogicBlock > m_libraryLogicBlocks
Definition LogicLibraryInfo.hpp:136
LogicLibraryInfo(LogicLibraryInfo &&other)=default
std::string getLibFilePath() const
Definition LogicLibraryInfo.cpp:462
LogicLibraryInfo()
Definition LogicLibraryInfo.cpp:144
std::string m_libFileName
Definition LogicLibraryInfo.hpp:133
std::optional< iv::types::errorMessage > checkMatchesStructureOfLibraryFile() const
Definition LogicLibraryInfo.cpp:834
void setLibExternalParameters(std::map< iv::logic::ParamId, SLibraryExternalParameter > libExternalParams)
Definition LogicLibraryInfo.cpp:451
Definition xmlFile.hpp:15
uint16_t logicExecutionOrder
Definition types.hpp:129
uint32_t logicIntermediateMemory
Definition types.hpp:128
bool operator==(const InternalParameterIdentifier &) const =default
std::string m_internalValue
Definition LogicLibraryInfo.hpp:86
std::string m_internalParamDescription
Definition LogicLibraryInfo.hpp:85
iv::types::logic::logicExecutionOrder m_internalBlockExecutionOrder
Definition LogicLibraryInfo.hpp:83
iv::logic::ParamId m_internalParamId
Definition LogicLibraryInfo.hpp:82
Definition LogicLibraryInfo.hpp:76
iv::logic::ParamId m_externalParamId
Definition LogicLibraryInfo.hpp:77
std::string m_externalParamDescription
Definition LogicLibraryInfo.hpp:78
std::vector< InternalParameterIdentifier > m_internalParameters
Definition LogicLibraryInfo.hpp:91
Definition LogicLibraryInfo.hpp:25
uint32_t m_globalIdOrValueParameter
Definition LogicLibraryInfo.hpp:30
ELibraryLogicBlockParamConnectedType m_externalConnectedBlockType
Definition LogicLibraryInfo.hpp:49
std::string m_paramOnlineTag
Definition LogicLibraryInfo.hpp:52
std::string m_paramValue
Definition LogicLibraryInfo.hpp:32
iv::logic::ParamId m_paramId
Definition LogicLibraryInfo.hpp:28
std::string m_paramDescription
Definition LogicLibraryInfo.hpp:33
ELibraryLogicBlockParamConnectedType m_connectedBlockType
Definition LogicLibraryInfo.hpp:38
iv::logic::ParamId m_connectedParamId
Definition LogicLibraryInfo.hpp:43
std::string m_externalParamDescription
Definition LogicLibraryInfo.hpp:51
iv::types::logic::logicExecutionOrder m_connectedExecOrder
Definition LogicLibraryInfo.hpp:40
std::string m_sParamValue
Definition LogicLibraryInfo.hpp:31
Definition LogicLibraryInfo.hpp:56
std::unique_ptr< LogicLibraryInfo > m_libraryInfo
Definition LogicLibraryInfo.hpp:72
~SLibraryLogicBlock()=default
SLibraryLogicBlock()=default
std::map< iv::logic::ParamId, SLibraryLogicBlockParam > m_blockParams
Definition LogicLibraryInfo.hpp:69
uint8_t m_blockType
Definition LogicLibraryInfo.hpp:67
SLibraryLogicBlock(SLibraryLogicBlock &&other)=default
SLibraryLogicBlock & operator=(const SLibraryLogicBlock &other)
Definition LogicLibraryInfo.cpp:83
bool m_isLibrary
Definition LogicLibraryInfo.hpp:71
iv::types::logic::logicExecutionOrder m_executionOrder
Definition LogicLibraryInfo.hpp:65
uint8_t m_blockSubType
Definition LogicLibraryInfo.hpp:68
std::string m_blockName
Definition LogicLibraryInfo.hpp:66
Definition structs.hpp:19