From e2d4e2a349ad1fe38da4c4811eacb42e83033e15 Mon Sep 17 00:00:00 2001
From: Carl Philipp Klemm <philipp@uvos.xyz>
Date: Mon, 6 Nov 2023 14:18:42 +0100
Subject: [PATCH] Model: add getDefaultParameters and getFlatParameterRanges

---
 eisgenerator/componant/componant.h |  2 +-
 eisgenerator/model.h               |  2 ++
 model.cpp                          | 35 ++++++++++++++++++++++++++----
 3 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/eisgenerator/componant/componant.h b/eisgenerator/componant/componant.h
index b14b93f..a667dc5 100644
--- a/eisgenerator/componant/componant.h
+++ b/eisgenerator/componant/componant.h
@@ -4,7 +4,7 @@
 #include <vector>
 #include <string>
 
-#include "eistype.h"
+#include "../eistype.h"
 
 namespace eis
 {
diff --git a/eisgenerator/model.h b/eisgenerator/model.h
index cd5c462..2fd622b 100644
--- a/eisgenerator/model.h
+++ b/eisgenerator/model.h
@@ -51,6 +51,8 @@ public:
 	size_t getUuid();
 	std::vector<Componant*> getFlatComponants(Componant *model = nullptr);
 	std::vector<fvalue> getFlatParameters();
+	std::vector<Range> getFlatParameterRanges();
+	std::vector<Range> getDefaultParameters();
 	size_t getParameterCount();
 	bool compile();
 	bool isReady();
diff --git a/model.cpp b/model.cpp
index f334dc0..7e0a0a7 100644
--- a/model.cpp
+++ b/model.cpp
@@ -168,17 +168,43 @@ Model::~Model()
 	delete _model;
 }
 
-std::vector<fvalue> Model::getFlatParameters()
+
+std::vector<Range> Model::getFlatParameterRanges()
 {
 	std::vector<Componant*> flatComponants = getFlatComponants();
+	std::vector<Range> out;
+	out.reserve(getParameterCount());
+	for(Componant* componant : flatComponants)
+	{
+		const std::vector<Range> ranges = componant->getParamRanges();
+		for(const Range& range : ranges)
+			out.push_back(range);
+	}
+	return out;
+}
+
+std::vector<fvalue> Model::getFlatParameters()
+{
+	std::vector<Range> flatRanges = getFlatParameterRanges();
 
 	std::vector<fvalue> out;
+	out.reserve(flatRanges.size());
+	for(const Range& range : flatRanges)
+		out.push_back(range.stepValue());
+	return out;
+}
+
+std::vector<Range> Model::getDefaultParameters()
+{
+	std::vector<Componant*> flatComponants = getFlatComponants();
+
+	std::vector<Range> out;
 	out.reserve(getParameterCount());
 	for(Componant* componant : flatComponants)
 	{
-		const std::vector<Range> ranges = componant->getParamRanges();
+		const std::vector<Range> ranges = componant->getDefaultParameters(true);
 		for(const Range& range : ranges)
-			out.push_back(range.stepValue());
+			out.push_back(range);
 	}
 	return out;
 }
@@ -527,7 +553,8 @@ bool Model::compile()
 {
 	if(!_model->compileable())
 	{
-		Log(Log::WARN)<<"This model could not be compiled, expect performance degredation";
+		Log(Log::WARN)<<"This model can not be compiled, because it contains "
+			<<"componants that lack a compiled reprisentation, expect performance degredation";
 		return false;
 	}
 
-- 
GitLab