--- /dev/null
+#include "CSVRow.h"
+
+#include <iostream>
+#include <sstream>
+#include <vector>
+#include <string>
+
+
+std::string const& CSVRow::operator[](std::size_t index) const {
+ return m_data[index];
+}
+
+std::size_t CSVRow::size() const {
+ return m_data.size();
+}
+
+void CSVRow::readNextRow(std::istream& str) {
+ std::string line;
+ std::getline(str,line);
+
+ std::stringstream lineStream(line);
+ std::string cell;
+
+ m_data.clear();
+ while(std::getline(lineStream,cell,'\t')) {
+ m_data.push_back(cell);
+ }
+}
+
+std::istream& operator>>(std::istream& str,CSVRow& data) {
+ data.readNextRow(str);
+ return str;
+}
+
--- /dev/null
+#ifndef CSVROW_H
+#define CSVROW_H
+
+
+#include <vector>
+#include <string>
+
+class CSVRow {
+public:
+ std::string const& operator[](std::size_t index) const;
+ std::size_t size() const;
+ void readNextRow(std::istream& str);
+
+ friend std::istream& operator>>(std::istream& str,CSVRow& data);
+
+private:
+ std::vector<std::string> m_data;
+};
+
+//std::istream& operator>>(std::istream& str,CSVRow& data);
+
+#endif