From 9d152e6f0ef6ce9450d38c6b68a2c63f0df9d9e7 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Tue, 23 Nov 2021 21:24:46 +0100
Subject: [PATCH] do without class member variable

---
 .../InputOutput/OutputDataReadWriteNicos.cpp  | 51 ++++++++++---------
 Device/InputOutput/OutputDataReadWriteNicos.h |  7 ---
 2 files changed, 26 insertions(+), 32 deletions(-)

diff --git a/Device/InputOutput/OutputDataReadWriteNicos.cpp b/Device/InputOutput/OutputDataReadWriteNicos.cpp
index 14ffd179994..a80e9237dfd 100644
--- a/Device/InputOutput/OutputDataReadWriteNicos.cpp
+++ b/Device/InputOutput/OutputDataReadWriteNicos.cpp
@@ -22,6 +22,25 @@ std::string lineRelatedError(const std::string& errorText, int lineNumber)
     return "Line " + std::to_string(lineNumber) + ": " + errorText;
 }
 
+
+unsigned int readAssignedPositiveIntValue(const std::string& line, int lineNumber)
+{
+    const auto parts = BaseUtils::String::split(line, "=");
+    if (parts.size() != 2)
+        throw std::runtime_error(lineRelatedError("Missing assigned value.", lineNumber));
+
+    int value = 0;
+    if (!BaseUtils::String::to_int(parts[1], &value))
+        throw std::runtime_error(
+            lineRelatedError("Can't parse assigned value '" + parts[1] + "'.", lineNumber));
+
+    if (value <= 0)
+        throw std::runtime_error(lineRelatedError("Value of '" + parts[1] + "' is nonpositive.",
+                                     lineNumber));
+
+    return value;
+}
+
 } // namespace
 
 
@@ -29,7 +48,7 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
 {
     auto result = std::make_unique<OutputData<double>>(); // as unique ptr to ensure delete on throw
     std::string line;
-    m_currentLineNr = 0;
+    int lineNumber = 0;
 
     unsigned int width = 0;
     unsigned int height = 0;
@@ -38,7 +57,7 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
     bool inFileSection = false;
     bool fileSectionFound = false;
     while (std::getline(input_stream, line)) {
-        m_currentLineNr++;
+        lineNumber++;
         line = BaseUtils::String::trimFront(line, " ");
         if (!inFileSection && BaseUtils::String::startsWith(line, "%File")) {
             inFileSection = true;
@@ -55,9 +74,9 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
         }
 
         if (BaseUtils::String::startsWith(line, "DataSizeX"))
-            width = readAssignedPositiveIntValue(line);
+            width = readAssignedPositiveIntValue(line, lineNumber);
         else if (BaseUtils::String::startsWith(line, "DataSizeY"))
-            height = readAssignedPositiveIntValue(line);
+            height = readAssignedPositiveIntValue(line, lineNumber);
 
         if (width != 0 && height != 0)
             break;
@@ -79,7 +98,7 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
     unsigned int dataRow = 0;
 
     while (std::getline(input_stream, line)) {
-        m_currentLineNr++;
+        lineNumber++;
         line = BaseUtils::String::trimFront(line, " ");
         if (!inCountSection && BaseUtils::String::startsWith(line, "%Counts")) {
             inCountSection = true;
@@ -105,7 +124,7 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
             throw std::runtime_error(
                 lineRelatedError("Number of found values (" + std::to_string(valuesAsString.size())
                                  + ") does not match DataSizeX (" + std::to_string(width) + ").",
-                    m_currentLineNr));
+                    lineNumber));
 
         for (unsigned col = 0; col < width; ++col) {
             const size_t global_index = result->toGlobalIndex(
@@ -117,7 +136,7 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
                 throw std::runtime_error(
                     lineRelatedError("Value '" + valuesAsString[col] +
                                      "' could not be converted to integer.",
-                                     m_currentLineNr));
+                                     lineNumber));
 
             (*result)[global_index] = value;
         }
@@ -135,21 +154,3 @@ OutputData<double>* OutputDataReadWriteNicos::readOutputData(std::istream& input
 
     return result.release();
 }
-
-unsigned int OutputDataReadWriteNicos::readAssignedPositiveIntValue(const std::string& line) const
-{
-    const auto parts = BaseUtils::String::split(line, "=");
-    if (parts.size() != 2)
-        throw std::runtime_error(lineRelatedError("Missing assigned value.", m_currentLineNr));
-
-    int value = 0;
-    if (!BaseUtils::String::to_int(parts[1], &value))
-        throw std::runtime_error(
-            lineRelatedError("Can't parse assigned value '" + parts[1] + "'.", m_currentLineNr));
-
-    if (value <= 0)
-        throw std::runtime_error(lineRelatedError("Value of '" + parts[1] + "' is nonpositive.",
-                                     m_currentLineNr));
-
-    return value;
-}
diff --git a/Device/InputOutput/OutputDataReadWriteNicos.h b/Device/InputOutput/OutputDataReadWriteNicos.h
index 94540f0d19e..cdf86f7b876 100644
--- a/Device/InputOutput/OutputDataReadWriteNicos.h
+++ b/Device/InputOutput/OutputDataReadWriteNicos.h
@@ -22,13 +22,6 @@
 class OutputDataReadWriteNicos {
 public:
     OutputData<double>* readOutputData(std::istream& input_stream);
-
-private:
-    //! Reads the assigned integer value from a line content like "DataSizeX = 100"
-    //! Throws if not successful or if value is nonpositive
-    unsigned int readAssignedPositiveIntValue(const std::string& line) const;
-
-    int m_currentLineNr = 0; //!< "1" means "first line" (human readable counting)
 };
 
 #endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADWRITENICOS_H
-- 
GitLab