#ifndef SENSORREADER_H #define SENSORREADER_H #include /** entry for one sensor */ struct SensorEntry { /** timestamp of occurrence */ uint64_t ts; /** sensor's number */ int idx; /** sensor data */ std::string data; }; /** read sensor data from CSV */ class SensorReader { private: std::string file; std::ifstream fp; public: SensorReader(const std::string& file) : file(file) { rewind(); } bool hasNext() { return !fp.bad() && !fp.eof(); } /** read the next sensor entry */ SensorEntry getNext() { char delim; SensorEntry entry; fp >> entry.ts; fp >> delim; fp >> entry.idx; fp >> delim; fp >> entry.data; return entry; } /** start again */ void rewind() { fp.close(); fp.open(file); assert(fp.is_open()); } }; #endif // SENSORREADER_H