summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Project/FileHanding.cpp188
-rw-r--r--Project/Project.mk2
2 files changed, 189 insertions, 1 deletions
diff --git a/Project/FileHanding.cpp b/Project/FileHanding.cpp
index 7698fb6..244fbdf 100644
--- a/Project/FileHanding.cpp
+++ b/Project/FileHanding.cpp
@@ -1852,6 +1852,194 @@ void FileHanding::SaveControlElements(rapidxml::xml_document<>& doc,
auto value = AppendNode(doc, gainNode, "Value");
SetNodeValue(doc, value, gain->GetValue());
} //}
+
+ //{ IO
+ auto iosNode = AppendNode(doc, elementsNode, "IOList");
+ auto ioList = ctrlContainer->GetIOControlList();
+ for(auto it = ioList.begin(), itEnd = ioList.end(); it != itEnd; ++it) {
+ IOControl* io = *it;
+ auto ioNode = AppendNode(doc, iosNode, "IO");
+ SetNodeAttribute(doc, ioNode, "ID", io->GetID());
+ auto cadProp = AppendNode(doc, ioNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, io->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, io->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, io->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, io->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, io->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, ioNode, "NodeList");
+ SaveControlNodes(doc, nodeList, io->GetNodeList());
+
+ // Control properties
+ auto value = AppendNode(doc, ioNode, "Value");
+ SetNodeValue(doc, value, io->GetValue());
+ auto ioFlags = AppendNode(doc, ioNode, "IOFlags");
+ SetNodeValue(doc, ioFlags, io->GetIOFlags());
+ }//}
+
+ //{ Limiter
+ auto limitersNode = AppendNode(doc, elementsNode, "LimiterList");
+ auto limiterList = ctrlContainer->GetLimiterList();
+ for(auto it = limiterList.begin(), itEnd = limiterList.end(); it != itEnd; ++it) {
+ Limiter* limiter = *it;
+ auto limiterNode = AppendNode(doc, limitersNode, "Limiter");
+ SetNodeAttribute(doc, limiterNode, "ID", limiter->GetID());
+ auto cadProp = AppendNode(doc, limiterNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, limiter->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, limiter->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, limiter->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, limiter->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, limiter->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, limiterNode, "NodeList");
+ SaveControlNodes(doc, nodeList, limiter->GetNodeList());
+
+ // Control properties
+ auto upLimit = AppendNode(doc, limiterNode, "UpperLimit");
+ SetNodeValue(doc, upLimit, limiter->GetUpLimit());
+ auto lowLimit = AppendNode(doc, limiterNode, "LowerLimit");
+ SetNodeValue(doc, lowLimit, limiter->GetLowLimit());
+ }//}
+
+ //{ Multiplier
+ auto multipliersNode = AppendNode(doc, elementsNode, "MultiplierList");
+ auto multiplierList = ctrlContainer->GetMultiplierList();
+ for(auto it = multiplierList.begin(), itEnd = multiplierList.end(); it != itEnd; ++it) {
+ Multiplier* multiplier = *it;
+ auto multiplierNode = AppendNode(doc, multipliersNode, "Multiplier");
+ SetNodeAttribute(doc, multiplierNode, "ID", multiplier->GetID());
+ auto cadProp = AppendNode(doc, multiplierNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, multiplier->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, multiplier->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, multiplier->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, multiplier->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, multiplier->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, multiplierNode, "NodeList");
+ SaveControlNodes(doc, nodeList, multiplier->GetNodeList());
+ } //}
+
+ //{ Rate limiter
+ auto rateLimitersNode = AppendNode(doc, elementsNode, "RateLimiterList");
+ auto rateLimiterList = ctrlContainer->GetRateLimiterList();
+ for(auto it = rateLimiterList.begin(), itEnd = rateLimiterList.end(); it != itEnd; ++it) {
+ RateLimiter* rateLimiter = *it;
+ auto rateLimiterNode = AppendNode(doc, rateLimitersNode, "RateLimiter");
+ SetNodeAttribute(doc, rateLimiterNode, "ID", rateLimiter->GetID());
+ auto cadProp = AppendNode(doc, rateLimiterNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, rateLimiter->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, rateLimiter->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, rateLimiter->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, rateLimiter->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, rateLimiter->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, rateLimiterNode, "NodeList");
+ SaveControlNodes(doc, nodeList, rateLimiter->GetNodeList());
+
+ // Control properties
+ auto upLimit = AppendNode(doc, rateLimiterNode, "UpperLimit");
+ SetNodeValue(doc, upLimit, rateLimiter->GetUpLimit());
+ auto lowLimit = AppendNode(doc, rateLimiterNode, "LowerLimit");
+ SetNodeValue(doc, lowLimit, rateLimiter->GetLowLimit());
+ } //}
+
+ //{ Sum
+ auto sumsNode = AppendNode(doc, elementsNode, "SumList");
+ auto sumList = ctrlContainer->GetSumList();
+ for(auto it = sumList.begin(), itEnd = sumList.end(); it != itEnd; ++it) {
+ Sum* sum = *it;
+ auto sumNode = AppendNode(doc, sumsNode, "Sum");
+ SetNodeAttribute(doc, sumNode, "ID", sum->GetID());
+ auto cadProp = AppendNode(doc, sumNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, sum->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, sum->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, sum->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, sum->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, sum->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, sumNode, "NodeList");
+ SaveControlNodes(doc, nodeList, sum->GetNodeList());
+ } //}
+
+ //{ Transfer function
+ auto tfsNode = AppendNode(doc, elementsNode, "TransferFunctionList");
+ auto tfList = ctrlContainer->GetTFList();
+ for(auto it = tfList.begin(), itEnd = tfList.end(); it != itEnd; ++it) {
+ TransferFunction* tf = *it;
+ auto tfNode = AppendNode(doc, tfsNode, "TransferFunction");
+ SetNodeAttribute(doc, tfNode, "ID", tf->GetID());
+ auto cadProp = AppendNode(doc, tfNode, "CADProperties");
+ auto position = AppendNode(doc, cadProp, "Position");
+ auto posX = AppendNode(doc, position, "X");
+ SetNodeValue(doc, posX, tf->GetPosition().m_x);
+ auto posY = AppendNode(doc, position, "Y");
+ SetNodeValue(doc, posY, tf->GetPosition().m_y);
+ auto size = AppendNode(doc, cadProp, "Size");
+ auto width = AppendNode(doc, size, "Width");
+ SetNodeValue(doc, width, tf->GetWidth());
+ auto height = AppendNode(doc, size, "Height");
+ SetNodeValue(doc, height, tf->GetHeight());
+ auto angle = AppendNode(doc, cadProp, "Angle");
+ SetNodeValue(doc, angle, tf->GetAngle());
+
+ // Nodes
+ auto nodeList = AppendNode(doc, tfNode, "NodeList");
+ SaveControlNodes(doc, nodeList, tf->GetNodeList());
+
+ //Control properties
+ auto numeratorNode = AppendNode(doc, tfNode, "Numerator");
+ auto numerator = tf->GetNumerator();
+ for(int i = 0; i < (int)numerator.size(); ++i) {
+ auto value = AppendNode(doc, numeratorNode, "Value");
+ SetNodeValue(doc, value, numerator[i]);
+ }
+ auto denominatorNode = AppendNode(doc, tfNode, "Denominator");
+ auto denominator = tf->GetDenominator();
+ for(int i = 0; i < (int)denominator.size(); ++i) {
+ auto value = AppendNode(doc, denominatorNode, "Value");
+ SetNodeValue(doc, value, denominator[i]);
+ }
+ } //}
//{ Connection line
auto cLinesNode = AppendNode(doc, elementsNode, "ConnectionList");
diff --git a/Project/Project.mk b/Project/Project.mk
index b2aab3f..62793ec 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=NDSE-69
-Date :=18/04/2017
+Date :=19/04/2017
CodeLitePath :="C:/Program Files/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC