willi 5 vuotta sitten
vanhempi
commit
4ca7314b10

+ 229 - 187
.idea/workspace.xml

@@ -2,10 +2,10 @@
 <project version="4">
   <component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
     <generated>
-      <config projectName="mdd" targetName="gtest" />
-      <config projectName="mdd" targetName="mdd_lib" />
       <config projectName="mdd" targetName="auslegung_test" />
       <config projectName="mdd" targetName="gtest_main" />
+      <config projectName="mdd" targetName="gtest" />
+      <config projectName="mdd" targetName="mdd_lib" />
     </generated>
   </component>
   <component name="CMakeSettings">
@@ -15,10 +15,25 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="4ddbafad-b85e-492e-80ec-3c73ef45688f" name="Default Changelist" comment="">
+      <change afterPath="$PROJECT_DIR$/lib/include/IUnique.h" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/lib/src/Input.cpp" afterDir="false" />
       <change afterPath="$PROJECT_DIR$/thirdparty/json/single_include/json.hpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/lib/CMakeLists.txt" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/HandlerModule.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/HandlerModule.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/IModule.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/IModule.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/IOutput.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/IOutput.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/IProcessor.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/IProcessor.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/Input.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/Input.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/ModuleBase.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/ModuleBase.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/ModuleMath.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/ModuleMath.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/Output.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/Output.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/include/ProcessorBase.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/ProcessorBase.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/src/ModuleBase.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/ModuleBase.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/lib/src/ModuleMath.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/ModuleMath.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/src/ModuleSwitch.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/ModuleSwitch.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/src/Output.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/Output.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lib/src/ProcessorBase.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/ProcessorBase.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/thirdparty/json" beforeDir="false" afterPath="$PROJECT_DIR$/thirdparty/json" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/cmake-build-debug/" />
@@ -38,104 +53,109 @@
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/ProcessorManual.cpp">
+        <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="420">
-              <caret line="28" column="25" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="25" />
+            <state relative-caret-position="330">
+              <caret line="25" selection-start-line="25" selection-end-line="25" />
               <folding>
-                <element signature="e#0#28#0" expanded="true" />
+                <element signature="e#0#23#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
+        <entry file="file://$PROJECT_DIR$/lib/include/Output.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="229">
-              <caret line="24" column="45" selection-start-line="24" selection-start-column="38" selection-end-line="24" selection-end-column="45" />
-              <folding>
-                <element signature="e#0#23#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="270">
+              <caret line="18" column="33" selection-start-line="18" selection-start-column="33" selection-end-line="18" selection-end-column="33" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/CMakeLists.txt">
+        <entry file="file://$PROJECT_DIR$/lib/include/IModule.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="300">
-              <caret line="20" column="26" selection-start-line="20" selection-start-column="26" selection-end-line="20" selection-end-column="26" />
+            <state relative-caret-position="405">
+              <caret line="27" lean-forward="true" selection-start-line="27" selection-end-line="27" />
+              <folding>
+                <element signature="e#45#65#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/test/CMakeLists.txt">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/lib/include/ModuleBase.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="45">
-              <caret line="3" column="33" selection-start-line="3" selection-start-column="33" selection-end-line="3" selection-end-column="33" />
+            <state relative-caret-position="360">
+              <caret line="24" column="54" lean-forward="true" selection-start-line="24" selection-start-column="54" selection-end-line="24" selection-end-column="54" />
+              <folding>
+                <element signature="e#51#69#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp">
+        <entry file="file://$PROJECT_DIR$/lib/src/ModuleSwitch.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="512">
-              <caret line="78" column="74" selection-start-line="78" selection-start-column="68" selection-end-line="78" selection-end-column="74" />
+            <state relative-caret-position="105">
+              <caret line="7" column="40" selection-start-line="7" selection-start-column="40" selection-end-line="7" selection-end-column="40" />
               <folding>
-                <element signature="e#0#24#0" expanded="true" />
-                <element signature="e#70#98#0" expanded="true" />
+                <element signature="e#0#25#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/include/ModuleMath.h">
+        <entry file="file://$PROJECT_DIR$/lib/src/ProcessorBase.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="330">
-              <caret line="22" column="15" selection-start-line="22" selection-start-column="15" selection-end-line="22" selection-end-column="15" />
+            <state relative-caret-position="210">
+              <caret line="23" column="34" selection-start-line="23" selection-start-column="34" selection-end-line="23" selection-end-column="34" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/lib/include/IUnique.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="394">
-              <caret line="294" column="54" lean-forward="true" selection-start-line="294" selection-start-column="54" selection-end-line="294" selection-end-column="54" />
+            <state relative-caret-position="195">
+              <caret line="13" column="1" lean-forward="true" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/ProcessorBase.cpp">
+        <entry file="file://$PROJECT_DIR$/lib/include/ProcessorBase.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="15">
-              <caret line="8" column="41" selection-start-line="8" selection-start-column="41" selection-end-line="8" selection-end-column="41" />
+            <state relative-caret-position="419">
+              <caret line="32" column="55" selection-start-line="32" selection-start-column="55" selection-end-line="32" selection-end-column="55" />
+              <folding>
+                <element signature="e#57#72#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/include/ModuleSwitch.h">
+        <entry file="file://$PROJECT_DIR$/lib/include/IProcessor.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="120">
-              <caret line="8" column="16" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="16" />
+            <state relative-caret-position="165">
+              <caret line="11" column="76" selection-start-line="11" selection-start-column="76" selection-end-line="11" selection-end-column="76" />
+              <folding>
+                <element signature="e#51#71#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/ModuleSwitch.cpp">
+        <entry file="file://$PROJECT_DIR$/lib/include/HandlerModule.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="285">
-              <caret line="19" column="27" lean-forward="true" selection-start-line="19" selection-start-column="20" selection-end-line="19" selection-end-column="33" />
-              <folding>
-                <element signature="e#0#25#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="150">
+              <caret line="10" column="31" lean-forward="true" selection-start-line="10" selection-start-column="31" selection-end-line="10" selection-end-column="31" />
             </state>
           </provider>
         </entry>
@@ -179,39 +199,47 @@
         <option value="$PROJECT_DIR$/CMakeLists.txt" />
         <option value="$PROJECT_DIR$/lib/test/test_ModuleMath.cpp" />
         <option value="$PROJECT_DIR$/lib/src/ProcessorBase.h.cpp" />
-        <option value="$PROJECT_DIR$/lib/include/Input.h" />
         <option value="$PROJECT_DIR$/lib/include/ModuleHandler.h" />
-        <option value="$PROJECT_DIR$/lib/include/HandlerModule.h" />
-        <option value="$PROJECT_DIR$/lib/include/IOutput.h" />
-        <option value="$PROJECT_DIR$/lib/src/Output.cpp" />
-        <option value="$PROJECT_DIR$/lib/include/Output.h" />
-        <option value="$PROJECT_DIR$/lib/src/ModuleBase.cpp" />
         <option value="$PROJECT_DIR$/lib/include/ModulBase.h" />
-        <option value="$PROJECT_DIR$/lib/include/IModule.h" />
-        <option value="$PROJECT_DIR$/lib/include/ModuleBase.h" />
         <option value="$PROJECT_DIR$/lib/src/ModuleCompare.cpp" />
         <option value="$PROJECT_DIR$/lib/include/ModuleCompare.h" />
         <option value="$PROJECT_DIR$/lib/include/ModulePass.h" />
         <option value="$PROJECT_DIR$/lib/src/ModulePass.cpp" />
-        <option value="$PROJECT_DIR$/lib/include/ModuleMath.h" />
-        <option value="$PROJECT_DIR$/lib/CMakeLists.txt" />
         <option value="$PROJECT_DIR$/lib/include/ModuleSwitch.h" />
-        <option value="$PROJECT_DIR$/lib/src/ProcessorBase.cpp" />
-        <option value="$PROJECT_DIR$/lib/include/IProcessor.h" />
-        <option value="$PROJECT_DIR$/lib/include/ProcessorBase.h" />
         <option value="$PROJECT_DIR$/lib/include/ProcessorManual.h" />
         <option value="$PROJECT_DIR$/lib/test/CMakeLists.txt" />
         <option value="$PROJECT_DIR$/lib/src/ProcessorManual.cpp" />
         <option value="$PROJECT_DIR$/lib/test/test_ModuleSwitch.cpp" />
-        <option value="$PROJECT_DIR$/lib/src/ModuleSwitch.cpp" />
         <option value="$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/IUnique.h" />
+        <option value="$PROJECT_DIR$/lib/include/UniqueBase.h" />
+        <option value="$PROJECT_DIR$/lib/src/UniqueBase.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/IOutput.h" />
+        <option value="$PROJECT_DIR$/lib/CMakeLists.txt" />
+        <option value="$PROJECT_DIR$/lib/include/Output.h" />
+        <option value="$PROJECT_DIR$/lib/include/Input.h" />
+        <option value="$PROJECT_DIR$/lib/src/Input.cpp" />
+        <option value="$PROJECT_DIR$/lib/src/Output.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/ModuleMath.h" />
         <option value="$PROJECT_DIR$/lib/src/ModuleMath.cpp" />
+        <option value="$PROJECT_DIR$/lib/src/ModuleSwitch.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/HandlerModule.h" />
+        <option value="$PROJECT_DIR$/lib/include/IProcessor.h" />
+        <option value="$PROJECT_DIR$/lib/src/ProcessorBase.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/ProcessorBase.h" />
+        <option value="$PROJECT_DIR$/lib/src/ModuleBase.cpp" />
+        <option value="$PROJECT_DIR$/lib/include/IModule.h" />
+        <option value="$PROJECT_DIR$/lib/include/ModuleBase.h" />
       </list>
     </option>
   </component>
   <component name="OCFindUsagesOptions" text="true" ivars="false" properties="true" derivedClasses="false" />
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="141" />
+  <component name="OCResolveContextSettings">
+    <option name="configuration" value="0-mdd_lib" />
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="277" />
+    <option name="y" value="117" />
     <option name="width" value="1440" />
     <option name="height" value="927" />
   </component>
@@ -221,6 +249,7 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -264,7 +293,6 @@
           <select />
         </subPane>
       </pane>
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -276,16 +304,17 @@
     <property name="settings.editor.selected.configurable" value="CMakeSettings" />
   </component>
   <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/lib/test" />
+      <recent name="$PROJECT_DIR$/lib" />
+    </key>
     <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/lib/src" />
       <recent name="$PROJECT_DIR$" />
       <recent name="$PROJECT_DIR$/lib/thirdparty" />
       <recent name="$PROJECT_DIR$/lib/includes" />
       <recent name="$PROJECT_DIR$/lib" />
     </key>
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="$PROJECT_DIR$/lib/test" />
-      <recent name="$PROJECT_DIR$/lib" />
-    </key>
   </component>
   <component name="RunDashboard">
     <option name="ruleStates">
@@ -394,6 +423,7 @@
       <workItem from="1589982545546" duration="300000" />
       <workItem from="1589982859071" duration="2825000" />
       <workItem from="1590072044480" duration="1259000" />
+      <workItem from="1590139016676" duration="23658000" />
     </task>
     <servers />
   </component>
@@ -430,7 +460,7 @@
     </history-entry>
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="106077000" />
+    <option name="totallyTimeSpent" value="129735000" />
   </component>
   <component name="TodoView" selected-index="2">
     <todo-panel id="selected-file">
@@ -442,9 +472,9 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="-2" width="1920" height="1082" extended-state="6" />
+    <frame x="0" y="1105" width="1920" height="1006" extended-state="6" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.49921754" visible="true" weight="0.23372465" />
+      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.49921754" visible="true" weight="0.23639274" />
       <window_info id="Structure" order="1" sideWeight="0.5007825" side_tool="true" weight="0.22572039" />
       <window_info id="Favorites" order="2" sideWeight="0.5007825" side_tool="true" weight="0.22572039" />
       <window_info anchor="bottom" id="Message" order="0" />
@@ -456,7 +486,7 @@
       <window_info anchor="bottom" id="TODO" order="6" weight="0.32948583" />
       <window_info anchor="bottom" id="Database Changes" order="7" />
       <window_info anchor="bottom" id="Messages" order="8" weight="0.32423925" />
-      <window_info anchor="bottom" id="Terminal" order="9" weight="0.25393495" />
+      <window_info active="true" anchor="bottom" id="Terminal" order="9" visible="true" weight="0.27594072" />
       <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
       <window_info anchor="bottom" id="Version Control" order="11" weight="0.32948583" />
       <window_info anchor="bottom" id="CMake" order="12" weight="0.32948583" />
@@ -513,19 +543,6 @@
     </watches-manager>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/lib/thirdparty/__init__.py" />
-    <entry file="file://$PROJECT_DIR$/README.MD">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="15">
-            <caret line="1" column="35" selection-start-line="1" selection-start-column="35" selection-end-line="1" selection-end-column="35" />
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/thirdparty/rapidjson/bin/data/abcde.txt" />
-    <entry file="file://$PROJECT_DIR$/lib/include/IInput.h" />
     <entry file="file://$PROJECT_DIR$/lib/include/IValue.h" />
     <entry file="file://$PROJECT_DIR$/lib/src/BaseModule.cpp" />
     <entry file="file:///usr/include/c++/7/bits/shared_ptr.h">
@@ -603,13 +620,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="180">
-          <caret line="12" column="70" lean-forward="true" selection-start-line="12" selection-start-column="70" selection-end-line="12" selection-end-column="70" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/lib/README.MD">
       <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
         <state split_layout="SPLIT">
@@ -618,212 +628,244 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/Input.h">
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleCompare.cpp" />
+    <entry file="file://$PROJECT_DIR$/lib/include/ModuleCompare.h" />
+    <entry file="file://$PROJECT_DIR$/lib/include/ModulePass.h" />
+    <entry file="file://$PROJECT_DIR$/lib/src/ModulePass.cpp" />
+    <entry file="file://$PROJECT_DIR$/lib/include/ProcessorManual.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="10" column="25" lean-forward="true" selection-start-line="10" selection-start-column="25" selection-end-line="10" selection-end-column="25" />
+        <state relative-caret-position="105">
+          <caret line="7" column="43" selection-start-line="7" selection-start-column="43" selection-end-line="7" selection-end-column="43" />
           <folding>
-            <element signature="e#41#58#0" expanded="true" />
+            <element signature="e#60#86#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/HandlerModule.h">
+    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleSwitch.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="17" selection-start-line="7" selection-start-column="4" selection-end-line="7" selection-end-column="17" />
+        <state relative-caret-position="705">
+          <caret line="47" column="44" selection-start-line="47" selection-start-column="44" selection-end-line="47" selection-end-column="44" />
+          <folding>
+            <element signature="e#0#24#0" expanded="true" />
+            <element signature="e#70#98#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/IType.h">
+    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleMath.cpp">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="75">
-          <caret line="5" selection-start-line="5" selection-end-line="5" />
+          <caret line="5" column="2" selection-start-line="5" selection-start-column="2" selection-end-line="5" selection-end-column="31" />
+          <folding>
+            <element signature="e#0#24#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleCompare.cpp" />
-    <entry file="file://$PROJECT_DIR$/lib/include/ModuleCompare.h" />
-    <entry file="file://$PROJECT_DIR$/lib/include/ModulePass.h" />
-    <entry file="file://$PROJECT_DIR$/lib/src/ModulePass.cpp" />
-    <entry file="file://$PROJECT_DIR$/lib/include/Output.h">
+    <entry file="file://$PROJECT_DIR$/lib/src/ProcessorManual.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="14" selection-start-line="14" selection-end-line="14" />
+        <state relative-caret-position="420">
+          <caret line="28" column="25" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="25" />
           <folding>
-            <element signature="e#42#62#0" expanded="true" />
+            <element signature="e#0#28#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/Output.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/test/CMakeLists.txt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="300">
-          <caret line="20" column="52" selection-start-line="20" selection-start-column="52" selection-end-line="20" selection-end-column="52" />
+        <state relative-caret-position="45">
+          <caret line="3" column="33" selection-start-line="3" selection-start-column="33" selection-end-line="3" selection-end-column="33" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/IProcessor.h">
+    <entry file="file://$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="195">
-          <caret line="13" column="67" selection-start-line="13" selection-start-column="67" selection-end-line="13" selection-end-column="67" />
+        <state relative-caret-position="1170">
+          <caret line="78" column="74" selection-start-line="78" selection-start-column="68" selection-end-line="78" selection-end-column="74" />
           <folding>
-            <element signature="e#51#71#0" expanded="true" />
+            <element signature="e#0#24#0" expanded="true" />
+            <element signature="e#70#98#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/IOutput.h">
+    <entry file="file://$PROJECT_DIR$/lib/include/ModuleSwitch.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="165">
-          <caret line="11" column="28" selection-start-line="11" selection-start-column="28" selection-end-line="11" selection-end-column="28" />
-          <folding>
-            <element signature="e#44#63#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="120">
+          <caret line="8" column="16" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/ProcessorBase.h">
+    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="540">
-          <caret line="36" column="64" selection-start-line="36" selection-start-column="64" selection-end-line="36" selection-end-column="64" />
-          <folding>
-            <element signature="e#57#72#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="180">
+          <caret line="12" column="70" selection-start-line="12" selection-start-column="70" selection-end-line="12" selection-end-column="70" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/ModuleBase.h">
+    <entry file="file://$PROJECT_DIR$/lib/include/IType.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="330">
-          <caret line="22" column="20" selection-start-line="22" selection-start-column="20" selection-end-line="22" selection-end-column="20" />
-          <folding>
-            <element signature="e#51#69#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="75">
+          <caret line="5" selection-start-line="5" selection-end-line="5" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/ProcessorManual.h">
+    <entry file="file://$PROJECT_DIR$/lib/CMakeLists.txt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="43" selection-start-line="7" selection-start-column="43" selection-end-line="7" selection-end-column="43" />
-          <folding>
-            <element signature="e#60#86#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="345">
+          <caret line="23" column="28" selection-start-line="23" selection-start-column="28" selection-end-line="23" selection-end-column="28" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/IModule.h">
+    <entry file="file://$PROJECT_DIR$/lib/include/UniqueBase.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="375">
-          <caret line="25" selection-start-line="25" selection-end-line="25" />
-          <folding>
-            <element signature="e#45#65#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="180">
+          <caret line="12" column="8" selection-start-line="12" selection-start-column="8" selection-end-line="16" selection-end-column="55" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleSwitch.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/include/IOutput.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="705">
-          <caret line="47" column="44" selection-start-line="47" selection-start-column="44" selection-end-line="47" selection-end-column="44" />
+        <state relative-caret-position="180">
+          <caret line="12" column="43" selection-start-line="12" selection-start-column="43" selection-end-line="12" selection-end-column="43" />
           <folding>
-            <element signature="e#0#24#0" expanded="true" />
-            <element signature="e#70#98#0" expanded="true" />
+            <element signature="e#44#63#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleMath.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/src/UniqueBase.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="2" selection-start-line="5" selection-start-column="2" selection-end-line="5" selection-end-column="31" />
+        <state relative-caret-position="45">
+          <caret line="3" column="4" selection-start-line="3" selection-start-column="4" selection-end-line="19" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/include/Input.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="375">
+          <caret line="25" column="17" lean-forward="true" selection-start-line="25" selection-start-column="17" selection-end-line="25" selection-end-column="17" />
           <folding>
-            <element signature="e#0#24#0" expanded="true" />
+            <element signature="e#41#58#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/CMakeLists.txt">
+    <entry file="file://$PROJECT_DIR$/lib/src/Input.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="300">
-          <caret line="20" column="26" selection-start-line="20" selection-start-column="26" selection-end-line="20" selection-end-column="26" />
+        <state relative-caret-position="435">
+          <caret line="29" column="24" lean-forward="true" selection-start-line="29" selection-start-column="24" selection-end-line="29" selection-end-column="24" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/CMakeLists.txt">
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="3" column="33" selection-start-line="3" selection-start-column="33" selection-end-line="3" selection-end-column="33" />
+        <state relative-caret-position="324">
+          <caret line="370" column="46" lean-forward="true" selection-start-line="370" selection-start-column="46" selection-end-line="370" selection-end-column="46" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/ModuleSwitch.h">
+    <entry file="file://$PROJECT_DIR$/lib/src/Output.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="16" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="16" />
+        <state relative-caret-position="90">
+          <caret line="6" column="21" lean-forward="true" selection-start-line="6" selection-start-column="21" selection-end-line="6" selection-end-column="21" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ProcessorBase.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/include/ModuleMath.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="15">
-          <caret line="8" column="41" selection-start-line="8" selection-start-column="41" selection-end-line="8" selection-end-column="41" />
+        <state relative-caret-position="330">
+          <caret line="22" column="21" selection-start-line="22" selection-start-column="21" selection-end-line="22" selection-end-column="21" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ProcessorManual.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleSwitch.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="420">
-          <caret line="28" column="25" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="25" />
+        <state relative-caret-position="105">
+          <caret line="7" column="40" selection-start-line="7" selection-start-column="40" selection-end-line="7" selection-end-column="40" />
           <folding>
-            <element signature="e#0#28#0" expanded="true" />
+            <element signature="e#0#25#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleSwitch.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/include/HandlerModule.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="150">
+          <caret line="10" column="31" lean-forward="true" selection-start-line="10" selection-start-column="31" selection-end-line="10" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/include/Output.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="18" column="33" selection-start-line="18" selection-start-column="33" selection-end-line="18" selection-end-column="33" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/include/IUnique.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="195">
+          <caret line="13" column="1" lean-forward="true" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/include/IProcessor.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="19" column="27" lean-forward="true" selection-start-line="19" selection-start-column="20" selection-end-line="19" selection-end-column="33" />
+        <state relative-caret-position="165">
+          <caret line="11" column="76" selection-start-line="11" selection-start-column="76" selection-end-line="11" selection-end-column="76" />
           <folding>
-            <element signature="e#0#25#0" expanded="true" />
+            <element signature="e#51#71#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/src/ProcessorBase.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="210">
+          <caret line="23" column="34" selection-start-line="23" selection-start-column="34" selection-end-line="23" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/include/ProcessorBase.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="229">
-          <caret line="24" column="45" selection-start-line="24" selection-start-column="38" selection-end-line="24" selection-end-column="45" />
+        <state relative-caret-position="419">
+          <caret line="32" column="55" selection-start-line="32" selection-start-column="55" selection-end-line="32" selection-end-column="55" />
           <folding>
-            <element signature="e#0#23#0" expanded="true" />
+            <element signature="e#57#72#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/test_ProcessorManual.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="512">
-          <caret line="78" column="74" selection-start-line="78" selection-start-column="68" selection-end-line="78" selection-end-column="74" />
+        <state relative-caret-position="330">
+          <caret line="25" selection-start-line="25" selection-end-line="25" />
           <folding>
-            <element signature="e#0#24#0" expanded="true" />
-            <element signature="e#70#98#0" expanded="true" />
+            <element signature="e#0#23#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/ModuleMath.h">
+    <entry file="file://$PROJECT_DIR$/lib/include/IModule.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="330">
-          <caret line="22" column="15" selection-start-line="22" selection-start-column="15" selection-end-line="22" selection-end-column="15" />
+        <state relative-caret-position="405">
+          <caret line="27" lean-forward="true" selection-start-line="27" selection-end-line="27" />
+          <folding>
+            <element signature="e#45#65#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/include/ModuleBase.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="394">
-          <caret line="294" column="54" lean-forward="true" selection-start-line="294" selection-start-column="54" selection-end-line="294" selection-end-column="54" />
+        <state relative-caret-position="360">
+          <caret line="24" column="54" lean-forward="true" selection-start-line="24" selection-start-column="54" selection-end-line="24" selection-end-column="54" />
+          <folding>
+            <element signature="e#51#69#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>

+ 2 - 0
lib/CMakeLists.txt

@@ -10,6 +10,7 @@ add_library(${PROJECT_NAME} STATIC
         include/Input.h
         include/IOutput.h
         include/IProcessor.h
+        include/IUnique.h
         include/ModuleBase.h
         include/ModuleMath.h
         include/ModuleSwitch.h
@@ -17,6 +18,7 @@ add_library(${PROJECT_NAME} STATIC
         include/ProcessorBase.h
         include/ProcessorManual.h
 
+        src/Input.cpp
         src/ModuleBase.cpp
         src/ModuleMath.cpp
         src/ModuleSwitch.cpp

+ 4 - 3
lib/include/HandlerModule.h

@@ -1,11 +1,12 @@
 #ifndef MDD_HANDLERMODULE_H
 #define MDD_HANDLERMODULE_H
+#include <string>
 
 struct HandlerModule{
 public:
-    int moduleHandler;
-    int accessHandler;
-    HandlerModule(int module, int access){
+    std::string moduleHandler;
+    std::string accessHandler;
+    HandlerModule(std::string module, std::string access){
         moduleHandler = module;
         accessHandler = access;
     }

+ 8 - 6
lib/include/IModule.h

@@ -9,15 +9,17 @@
 namespace mdd {
     class IOutput;
 
-    class IModule {
+    class IModule : public IUnique{
     public:
-        virtual bool connectInput(int handle, std::shared_ptr<IOutput> output) = 0;
-        virtual std::string getType() = 0;
-        virtual json& setInputDefaultValue(int handle) = 0;
-        virtual const json& getInputValue(int handle) = 0;
+        virtual bool connectInput(std::string input_id, std::shared_ptr<IOutput> output) = 0;
+        virtual json& setInputDefaultValue(std::string input_id) = 0;
+        virtual json& setInputDefaultValue(int handler) = 0;
+        virtual const json& getInputValue(std::string input_id) = 0;
         virtual std::vector<std::string> getInputs() = 0;
+        virtual std::vector<std::string> getInputIDs() = 0;
         virtual std::vector<std::string> getOutputs() = 0;
-        virtual std::shared_ptr<IOutput> getOutput(int handle) = 0;
+        virtual std::vector<std::string> getOutputIDs() = 0;
+        virtual std::shared_ptr<IOutput> getOutput(std::string output_id) = 0;
         virtual bool update() = 0;
         virtual ~IModule() = default;
     };

+ 2 - 2
lib/include/IOutput.h

@@ -2,15 +2,15 @@
 #define MDD_IOUTPUT_H
 #include "json.hpp"
 #include <memory>
+#include "IUnique.h"
 
 namespace mdd
 {
     class IModule;
 
-    class IOutput {
+    class IOutput : IUnique{
     public:
         virtual const json& getValue() = 0;
-        virtual std::string getType() = 0;
         virtual bool hasChanged() = 0;
         virtual void resetChange() = 0;
         virtual ~IOutput() = default;

+ 2 - 2
lib/include/IProcessor.h

@@ -9,9 +9,9 @@ namespace mdd
 
     class IProcessor: public  IModule{
     public:
-        virtual int  addModule(std::shared_ptr<IModule> module) = 0;
+        virtual std::string  addModule(std::shared_ptr<IModule> module) = 0;
         virtual std::vector<std::string> getModules() = 0;
-        virtual std::shared_ptr<IModule> getModule(int handle) = 0;
+        virtual std::shared_ptr<IModule> getModule(std::string module_id) = 0;
     };
 }
 

+ 16 - 0
lib/include/IUnique.h

@@ -0,0 +1,16 @@
+#ifndef MDD_IUNIQUE_H
+#define MDD_IUNIQUE_H
+#include <string>
+
+namespace mdd{
+    class IUnique{
+    public:
+        virtual void setType(std::string type) = 0;
+        virtual std::string getType() = 0;
+        virtual std::string getID() = 0;
+        virtual std::string setPrefix(std::string prefix) = 0;
+        virtual std::string setAppendix(int appendix) = 0;
+    };
+}
+
+#endif

+ 15 - 3
lib/include/Input.h

@@ -5,17 +5,29 @@
 #include <functional>
 #include "Output.h"
 #include <bits/shared_ptr.h>
+#include "IUnique.h"
 
 namespace mdd {
-    struct Input {
-        std::string type;
+    class Input : public IUnique{
+    private:
+        std::string _prefix;
+        std::string _type;
+        int _appendix;
+
+    public:
         json value;
         std::function<bool(const json &)> verification;
         std::shared_ptr <IOutput> output;
 
-        Input(const std::string &type, const json &default_value,
+
+        Input(const std::string &type, int appendix, const json &default_value,
               const std::function<bool(const json &)> &verification = [](
                       const json &) { return true; });
+        void setType(std::string type) override;
+        std::string getType() override;
+        std::string getID() override;
+        std::string setPrefix(std::string prefix) override;
+        std::string setAppendix(int appendix) override;
     };
 }
 

+ 16 - 8
lib/include/ModuleBase.h

@@ -8,24 +8,32 @@ namespace mdd {
 
 class ModuleBase : public  IModule{
     private:
+        std::string _prefix;
         std::string _type;
+        int _appendix;
         std::vector<Input> _inputs;
         std::vector<std::shared_ptr<Output>> _outputs;
 
     public:
-        int addInput(const std::string& type, const json& value,
+        std::string addInput(const std::string& type, int appendix, const json& value,
                      const std::function<bool(const json&)>& verification = [](
                              const json&) { return true; });
-        void setType(std:: string type);
-        std::string getType() override;
-        json& setInputDefaultValue(int handle) override;
-        const json& getInputValue(int handle) override;
-        bool connectInput(int handle, std::shared_ptr<IOutput> output) override;
+        json& setInputDefaultValue(int handler) override;
+        json& setInputDefaultValue(std::string input_id) override;
+        const json& getInputValue(std::string input_id) override;
+        bool connectInput(std::string input_id, std::shared_ptr<IOutput> output) override;
         std::vector<std::string> getInputs() override;
+        std::vector<std::string> getInputIDs() override;
         std::vector<std::string> getOutputs() override;
-        std::shared_ptr<IOutput> getOutput(int handle) override;
-        int addOutput(const std::string& type, const json& initial);
+        std::vector<std::string> getOutputIDs() override;
+        std::shared_ptr<IOutput> getOutput(std::string output_id) override;
+        std::string addOutput(const std::string& type, int appendix, const json& initial);
         json &setOutputValue(int handle);
+        void setType(std::string type) override;
+        std::string getType() override;
+        std::string getID() override;
+        std::string setPrefix(std::string prefix) override;
+        std::string setAppendix(int appendix) override;
     };
 }
 #endif //MDD_BASEMODULE_H

+ 10 - 10
lib/include/ModuleMath.h

@@ -20,16 +20,16 @@ namespace mdd {
     private:
         MathOperation _operation;
 
-        json add(const json &val1, const json &val2);
-        json subtract(const json &val1, const json &val2);
-        json multiply(const json &val1, const json &val2);
-        json divide(const json &val1, const json &val2);
-        json power(const json &val1, const json &val2);
-        json logarithm(const json &val1, const json &val2);
-        json minimum(const json &val1, const json &val2);
-        json maximum(const json &val1, const json &val2);
-        json less(const json &val1, const json &val2);
-        json greater(const json &val1, const json &val2);
+        static json add(const json &val1, const json &val2);
+        static json subtract(const json &val1, const json &val2);
+        static json multiply(const json &val1, const json &val2);
+        static json divide(const json &val1, const json &val2);
+        static json power(const json &val1, const json &val2);
+        static json logarithm(const json &val1, const json &val2);
+        static json minimum(const json &val1, const json &val2);
+        static json maximum(const json &val1, const json &val2);
+        static json less(const json &val1, const json &val2);
+        static json greater(const json &val1, const json &val2);
 
     public:
         explicit ModuleMath(MathOperation operation = ADD);

+ 11 - 9
lib/include/Output.h

@@ -2,26 +2,28 @@
 #define MDD_OUTPUT_H
 #include "IOutput.h"
 #include "IModule.h"
+#include "UniqueBase.h"
 
 namespace mdd {
-    class Output : public IOutput {
+    class Output : public IOutput{
     private:
-        std::string _type;
         bool _changed;
         json _value;
+        std::string _prefix;
+        std::string _type;
+        int _appendix;
 
     public:
-        Output(const std::string& type, const json& initial);
-
+        Output(const std::string& type, int appendix, const json& initial);
         const json& getValue() override;
-
         json& getValueInternal();
-
-        std::string getType() override;
-
         bool hasChanged() override;
-
         void resetChange() override;
+        void setType(std::string type) override;
+        std::string getType() override;
+        std::string getID() override;
+        std::string setPrefix(std::string prefix) override;
+        std::string setAppendix(int appendix) override;
     };
 }
 #endif

+ 17 - 15
lib/include/ProcessorBase.h

@@ -9,32 +9,34 @@
 namespace mdd {
     class ProcessorBase : public IProcessor{
     private:
+        std::string _prefix;
         std::string _type;
-        //std::vector<Input> _processor_inputs;
-        //std::vector<std::shared_ptr<Output>> _processor_outputs;
+        int _appendix;
+        std::vector<Input> _processor_inputs;
+        std::vector<std::shared_ptr<Output>> _processor_outputs;
 
         std::vector<HandlerModule> _module_inputs;
         std::vector<HandlerModule> _module_outputs;
         std::vector<std::shared_ptr<IModule>> _modules;
     public:
-        void setType(std:: string type);
+        void setType(std:: string type) override;
         std::string getType() override;
-        int addModule(std::shared_ptr<IModule> module) override ;
-        //int addInput(const std::string& type, const json& value,
-        //             const std::function<bool(const json&)>& verification = [](
-        //                     const json&) { return true; });
-        int addInput(int moduleHandler, int inputHandler);
-        int addOutput(int moduleHandler, int outputHandler);
-        //int addOutput(const std::string& type, const json& initial);
-        json& setInputDefaultValue(int handle) override;
-        //json& setOutputValue(int handle);
+        std::string addModule(std::shared_ptr<IModule> module) override ;
+        std::string addProcesorInput(const std::string& type, int  const json& value,
+                     const std::function<bool(const json&)>& verification = [](
+                             const json&) { return true; });
+        std::string addModuleInput(std::string moduleHandler, std::string inputHandler);
+        std::string addModuleOutput(std::string moduleHandler, std::string outputHandler);
+        std::string addProcessorOutput(const std::string& type, const json& initial);
+        json& setInputDefaultValue(std::string input_id) override;
+        json& setOutputValue(int handle);
         const json& getInputValue(int handle) override;
-        bool connectInput(int handle, std::shared_ptr<IOutput> output) override;
+        bool connectInput(std::string input_id, std::shared_ptr<IOutput> output) override;
         std::vector<std::string> getInputs() override;
         std::vector<std::string> getOutputs() override;
-        std::shared_ptr<IOutput> getOutput(int handle) override;
+        std::shared_ptr<IOutput> getOutput(std::string output_id) override;
         std::vector<std::string> getModules() override;
-        std::shared_ptr<IModule> getModule(int handle) override;
+        std::shared_ptr<IModule> getModule(std::string module_id) override;
     };
 }
 #endif

+ 32 - 0
lib/src/Input.cpp

@@ -0,0 +1,32 @@
+#include "Input.h"
+
+namespace mdd{
+    Input::Input(const std::string& type, int appendix, const json& default_value,
+                 const std::function<bool(const json&)>& verification) {
+        _type = type;
+        value = default_value;
+        this->verification = std::move(verification);
+        _prefix = "";
+        _appendix = appendix;
+    }
+
+    void Input::setType(std::string type){
+        _type = type;
+    }
+    std::string Input::getType(){
+        return  _type;
+    }
+    std::string Input::getID(){
+        return _prefix + "/" + _type + std::to_string(_appendix);
+    }
+
+    std::string Input::setPrefix(std::string prefix){
+        _prefix = prefix;
+        return getID();
+    }
+
+    std::string Input::setAppendix(int appendix){
+        _appendix = appendix;
+        return  getID();
+    }
+}

+ 80 - 19
lib/src/ModuleBase.cpp

@@ -3,20 +3,27 @@
 
 namespace mdd {
 
-    Input::Input(const std::string& type, const json& default_value,
-                 const std::function<bool(const json&)>& verification) {
-        this->type = type;
-        value = default_value;
-        this->verification = std::move(verification);
-    }
-
     void ModuleBase::setType(std:: string type){
         _type=type;
+        std::string new_prefix =  _prefix + "/" + _type + std::to_string(_appendix);
+        for (auto &input  : _inputs){
+            input.setPrefix(new_prefix);
+        }
+        for (auto &output  : _outputs){
+            output->setPrefix(new_prefix);
+        }
     }
     std::string ModuleBase::getType(){
         return _type;
     }
 
+    json& ModuleBase::setInputDefaultValue(std::string input_id) {
+        auto handler = std::find(_inputs.begin(), _inputs.end(), input_id);
+        if (handler != _inputs.end()){
+            return handler->value;
+        }
+    }
+
     json& ModuleBase::setInputDefaultValue(int handle) {
         return _inputs[handle].value;
     }
@@ -41,7 +48,15 @@ namespace mdd {
     std::vector<std::string> ModuleBase::getInputs() {
         std::vector<std::string> ret;
         for (auto &input  : _inputs) {
-            ret.push_back(input.type);
+            ret.push_back(input.getType());
+        }
+        return ret;
+    }
+
+    std::vector<std::string> ModuleBase::getInputIDs(){
+        std::vector<std::string> ret;
+        for (auto &input  : _inputs) {
+            ret.push_back(input.getID());
         }
         return ret;
     }
@@ -54,26 +69,72 @@ namespace mdd {
         return ret;
     }
 
-    int ModuleBase::addInput(const std::string& type, const json& value,
+    std::vector<std::string> ModuleBase::getOutputIDs(){
+        std::vector<std::string> ret;
+        for (auto &output  : _outputs) {
+            ret.push_back(output->getID());
+        }
+        return ret;
+    }
+
+    std::string ModuleBase::addInput(const std::string& type, int appendix , const json& value,
                              const std::function<bool(const json&)>& verification) {
-        _inputs.emplace_back(Input(type, value, verification));
-        return _inputs.size() - 1;
+        _inputs.emplace_back(Input(type, appendix, value, verification));
+        _inputs[_inputs.size() - 1].setPrefix(getID());
+        return _inputs[_inputs.size() - 1].getID();
     }
 
-    bool ModuleBase::connectInput(int handle, std::shared_ptr<IOutput> output) {
-        if (_inputs[handle].verification(output->getValue())) {
-            _inputs[handle].output = output;
-            return true;
+    bool ModuleBase::connectInput(std::string input_id, std::shared_ptr<IOutput> output) {
+        auto handler = std::find(_inputs.begin(),_inputs.end(), input_id);
+        if (handler != _inputs.end()){
+            if (handler->verification(output->getValue())) {
+                handler->output = output;
+                return true;
+            }
         }
         return false;
     }
 
-    std::shared_ptr<IOutput> ModuleBase::getOutput(int handle) {
-        return _outputs[handle];
+    std::shared_ptr<IOutput> ModuleBase::getOutput(std::string output_id) {
+        auto handler = std::find(_outputs.begin(),_outputs.end(), output_id);
+        if (handler != _outputs.end()) {
+            return *handler;
+        }
+        return nullptr;
     }
 
-    int ModuleBase::addOutput(const std::string& type, const json& initial) {
+    std::string ModuleBase::addOutput(const std::string& type, int appendix, const json& initial) {
         _outputs.push_back(std::make_shared<Output>( type, initial));
-        return _outputs.size()-1;
+        _outputs[_outputs.size() - 1]->setPrefix(getID());
+        return  _outputs[_outputs.size()-1]->getID();
     }
+
+    std::string ModuleBase::getID(){
+        return _prefix + "/" + _type + std::to_string(_appendix);
+    }
+
+    std::string ModuleBase::setPrefix(std::string prefix){
+        _prefix = prefix;
+        std::string new_prefix =  getID();
+        for (auto &input  : _inputs){
+            input.setPrefix(new_prefix);
+        }
+        for (auto &output  : _outputs){
+            output->setPrefix(new_prefix);
+        }
+        return new_prefix;
+    }
+
+    std::string ModuleBase::setAppendix(int appendix){
+        _appendix = appendix;
+        std::string new_prefix =  getID();
+        for (auto &input  : _inputs){
+            input.setPrefix(new_prefix);
+        }
+        for (auto &output  : _outputs){
+            output->setPrefix(new_prefix);
+        }
+        return new_prefix;
+    }
+
 }

+ 3 - 3
lib/src/ModuleMath.cpp

@@ -10,9 +10,9 @@ namespace mdd {
                 return false;
             return true;
         };
-        addInput("Value", default_val, veri);
-        addInput("Value", default_val, veri);
-        addOutput("Value", default_val);
+        addInput("Value", 0, default_val, veri);
+        addInput("Value", 1, default_val, veri);
+        addOutput("Value", 0, default_val);
         setType("Math");
     }
 

+ 4 - 4
lib/src/ModuleSwitch.cpp

@@ -10,10 +10,10 @@ namespace mdd{
                 return false;
             return true;
         };
-        addInput("Switch", default_val, veri);
-        addInput("Value", default_val, veri);
-        addInput("Value", default_val, veri);
-        addOutput("Value", default_val);
+        addInput("Switch",0, default_val, veri);
+        addInput("Value0",0, default_val, veri);
+        addInput("Default",0, default_val, veri);
+        addOutput("Value",0, default_val);
         setType("Switch");
     }
     bool ModuleSwitch::update(){

+ 22 - 2
lib/src/Output.cpp

@@ -1,9 +1,11 @@
 #include "Output.h"
 namespace mdd {
-    Output::Output( const std::string& type, const json& initial) :
+    Output::Output( const std::string& type, int appendix, const json& initial) :
             _changed(false)
     {
-        _type= type;
+        _appendix = appendix;
+        _prefix = "";
+        _type = type;
         _value = initial;
     }
 
@@ -19,4 +21,22 @@ namespace mdd {
     bool Output::hasChanged() { return _changed; }
 
     void Output::resetChange() { _changed = false; }
+
+    void Output::setType(std::string type){
+        _type = type;
+    }
+
+    std::string Output::getID(){
+        return _prefix + "/" + _type + std::to_string(_appendix);
+    }
+
+    std::string Output::setPrefix(std::string prefix){
+        _prefix = prefix;
+        return getID();
+    }
+
+    std::string Output::setAppendix(int appendix){
+        _appendix = appendix;
+        return getID();
+    }
 }

+ 22 - 6
lib/src/ProcessorBase.cpp

@@ -10,14 +10,15 @@ namespace mdd{
         return _type;
     }
 
-    int ProcessorBase::addModule(std::shared_ptr<IModule> module){
+    std::string ProcessorBase::addModule(std::shared_ptr<IModule> module){
         _modules.emplace_back(module);
-        return _modules.size()-1;
+        _modules[_modules.size()-1]->setPrefix(getID());
+        return _modules[_modules.size()-1]->getID();
     }
 
-    int ProcessorBase::addInput(int moduleHandler, int inputHandler){
+    std::string ProcessorBase::addModuleInput(std::string moduleHandler, std::string inputHandler){
         _module_inputs.emplace_back(HandlerModule(moduleHandler, inputHandler));
-        return _module_inputs.size()-1;
+        return _module_inputs[_module_inputs.size()-1].accessHandler;
     }
 
     json& ProcessorBase::setInputDefaultValue(int handle){
@@ -28,8 +29,23 @@ namespace mdd{
         _modules[_module_inputs[handle].moduleHandler]->getInputValue(_module_inputs[handle].accessHandler);
     }
 
-    bool ProcessorBase::connectInput(int handle, std::shared_ptr<IOutput> output){
-        return _modules[_module_inputs[handle].moduleHandler]->connectInput(_module_inputs[handle].accessHandler, output);
+    bool ProcessorBase::connectInput(std::string input_id, std::shared_ptr<IOutput> output){
+        auto module_handler = std::find(_module_inputs.begin(),_module_inputs.end(), input_id);
+        if (module_handler != _module_inputs.end()){
+            auto handler = std::find(_modules.begin(),_modules.end(), module_handler->moduleHandler);
+            if(handler != _modules.end()){
+                return (*handler)->connectInput(module_handler->accessHandler, output);
+            }
+        } else{
+            auto procesor_handler = std::find(_processor_inputs.begin(),_processor_inputs.end(), input_id);
+            if (procesor_handler != _processor_inputs.end()){
+                if (procesor_handler->verification(output->getValue())) {
+                    procesor_handler->output = output;
+                    return true;
+                }
+            }
+        }
+        return false;
     }
 
     std::vector<std::string> ProcessorBase::getInputs(){