aboutsummaryrefslogtreecommitdiff
path: root/src/armnnUtils/CsvReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnnUtils/CsvReader.cpp')
-rw-r--r--src/armnnUtils/CsvReader.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/armnnUtils/CsvReader.cpp b/src/armnnUtils/CsvReader.cpp
new file mode 100644
index 0000000000..5b66c942ba
--- /dev/null
+++ b/src/armnnUtils/CsvReader.cpp
@@ -0,0 +1,63 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// See LICENSE file in the project root for full license information.
+//
+
+#include "CsvReader.hpp"
+
+#include <boost/algorithm/string.hpp>
+#include <boost/tokenizer.hpp>
+
+#include <fstream>
+#include <string>
+#include <vector>
+
+using Tokenizer = boost::tokenizer<boost::escaped_list_separator<char>>;
+
+namespace armnnUtils
+{
+
+CsvRow ParseLine(const std::string& csvLine)
+{
+ Tokenizer tokenizer(csvLine);
+ CsvRow entry;
+
+ for (const auto &token : tokenizer)
+ {
+ entry.values.push_back(boost::trim_copy(token));
+ }
+ return entry;
+}
+
+std::vector<CsvRow> CsvReader::ParseFile(const std::string& csvFile)
+{
+ std::vector<CsvRow> result;
+
+ std::ifstream in(csvFile.c_str());
+ if (!in.is_open())
+ return result;
+
+ std::string line;
+ while (getline(in, line))
+ {
+ if(!line.empty())
+ {
+ CsvRow entry = ParseLine(line);
+ result.push_back(entry);
+ }
+ }
+ return result;
+}
+
+std::vector<CsvRow> CsvReader::ParseVector(const std::vector<std::string>& csvVector)
+{
+ std::vector<CsvRow> result;
+
+ for (auto const& line: csvVector)
+ {
+ CsvRow entry = ParseLine(line);
+ result.push_back(entry);
+ }
+ return result;
+}
+} // namespace armnnUtils \ No newline at end of file