Skip to content
Snippets Groups Projects
Commit e6639bae authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

IOFactory: disambiguate fct names

parent e290a8d3
No related branches found
No related tags found
1 merge request!1579save axis in rad (#504)
...@@ -50,23 +50,23 @@ Datafield* IOFactory::readDatafield(const std::string& file_name, LoaderSelector ...@@ -50,23 +50,23 @@ Datafield* IOFactory::readDatafield(const std::string& file_name, LoaderSelector
Datafield* result = nullptr; Datafield* result = nullptr;
if (readAs(bornagain)) if (readAs(bornagain))
result = readDatafield(file_name, result = functional_read(file_name,
[](std::istream& s) { return ReadWriteINT().readDatafield(s); }); [](std::istream& s) { return ReadWriteINT().readDatafield(s); });
else if (readAs(nicos)) else if (readAs(nicos))
result = readDatafield(file_name, [](std::istream& s) { return IO::readNicosData(s); }); result = functional_read(file_name, [](std::istream& s) { return IO::readNicosData(s); });
#ifdef BA_TIFF_SUPPORT #ifdef BA_TIFF_SUPPORT
else if (readAs(tiff)) else if (readAs(tiff))
result = readDatafield(file_name, result = functional_read(file_name,
[](std::istream& s) { return ReadWriteTiff().readDatafield(s); }); [](std::istream& s) { return ReadWriteTiff().readDatafield(s); });
#endif #endif
else else
// Try to read ASCII by default. Binary maps to ASCII. // Try to read ASCII by default. Binary maps to ASCII.
// If the file is not actually a matrix of numbers, // If the file is not actually a matrix of numbers,
// the error will be thrown during the reading. // the error will be thrown during the reading.
result = readDatafield( result = functional_read(
file_name, [](std::istream& s) { return ReadWriteNumpyTXT().readDatafield(s); }); file_name, [](std::istream& s) { return ReadWriteNumpyTXT().readDatafield(s); });
ASSERT(result); ASSERT(result);
...@@ -75,26 +75,27 @@ Datafield* IOFactory::readDatafield(const std::string& file_name, LoaderSelector ...@@ -75,26 +75,27 @@ Datafield* IOFactory::readDatafield(const std::string& file_name, LoaderSelector
Datafield* IOFactory::readReflectometryData(const std::string& file_name) Datafield* IOFactory::readReflectometryData(const std::string& file_name)
{ {
return readDatafield(file_name, return functional_read(file_name,
[](std::istream& s) { return ReadReflectometry().readDatafield(s); }); [](std::istream& s) { return ReadReflectometry().readDatafield(s); });
} }
void IOFactory::writeDatafield(const Datafield& data, const std::string& file_name) void IOFactory::writeDatafield(const Datafield& data, const std::string& file_name)
{ {
if (DataUtils::Format::isIntFile(file_name)) if (DataUtils::Format::isIntFile(file_name))
writeDatafield(file_name, [&](std::ostream& s) { ReadWriteINT().writeDatafield(data, s); }); functional_write(file_name,
[&](std::ostream& s) { ReadWriteINT().writeDatafield(data, s); });
#ifdef BA_TIFF_SUPPORT #ifdef BA_TIFF_SUPPORT
else if (DataUtils::Format::isTiffFile(file_name)) else if (DataUtils::Format::isTiffFile(file_name))
writeDatafield(file_name, functional_write(file_name,
[&](std::ostream& s) { ReadWriteTiff().writeDatafield(data, s); }); [&](std::ostream& s) { ReadWriteTiff().writeDatafield(data, s); });
#endif #endif
else else
writeDatafield(file_name, functional_write(file_name,
[&](std::ostream& s) { ReadWriteNumpyTXT().writeDatafield(data, s); }); [&](std::ostream& s) { ReadWriteNumpyTXT().writeDatafield(data, s); });
} }
void IOFactory::writeDatafield(const std::string& file_name, void IOFactory::functional_write(const std::string& file_name,
std::function<void(std::ostream&)> writeData) std::function<void(std::ostream&)> writeData)
{ {
using namespace DataUtils::Format; using namespace DataUtils::Format;
...@@ -149,8 +150,8 @@ void IOFactory::writeSimulationResult(const SimulationResult& result, const std: ...@@ -149,8 +150,8 @@ void IOFactory::writeSimulationResult(const SimulationResult& result, const std:
writeDatafield(result.data_field(), file_name); writeDatafield(result.data_field(), file_name);
} }
Datafield* IOFactory::readDatafield(const std::string& file_name, Datafield* IOFactory::functional_read(const std::string& file_name,
std::function<Datafield*(std::istream&)> readData) std::function<Datafield*(std::istream&)> readData)
{ {
if (!BaseUtils::Filesystem::IsFileExists(file_name)) if (!BaseUtils::Filesystem::IsFileExists(file_name))
throw std::runtime_error("File does not exist: " + file_name); throw std::runtime_error("File does not exist: " + file_name);
......
...@@ -63,11 +63,11 @@ public: ...@@ -63,11 +63,11 @@ public:
static void writeSimulationResult(const SimulationResult& result, const std::string& file_name); static void writeSimulationResult(const SimulationResult& result, const std::string& file_name);
private: private:
static Datafield* readDatafield(const std::string& file_name, static Datafield* functional_read(const std::string& file_name,
std::function<Datafield*(std::istream&)> readData); std::function<Datafield*(std::istream&)> readData);
static void writeDatafield(const std::string& file_name, static void functional_write(const std::string& file_name,
std::function<void(std::ostream&)> writeData); std::function<void(std::ostream&)> writeData);
static bool fileTypeMatchesLoaderSelector(const std::string& fileName, LoaderSelector selector); static bool fileTypeMatchesLoaderSelector(const std::string& fileName, LoaderSelector selector);
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment