#include #include #include #include #include "mpt_lineIterator.h" /* Sample data: #AU Subject Not_Present High_Intensity Intensity 1 16 701-705 2104-2108 5 1 46 1001-1005 2712-2716 5 2 24 1101-1105 2081-2085 5 2 79 2601-2605 2469-2473 5 */ typedef std::pair mpt_range; typedef std::set mpt_frames; class mpt_RutgersData { public: mpt_RutgersData( unsigned int _au=0, unsigned int _subject=0, unsigned int _intensity=5 ); void clear(); unsigned int getAU(); unsigned int getSubject(); unsigned int getIntensity(); mpt_frames::iterator beginPresent() { return framesPresent.begin(); } mpt_frames::iterator endPresent() { return framesPresent.end(); } mpt_frames::iterator beginNotPresent() { return framesNotPresent.begin(); } mpt_frames::iterator endNotPresent() { return framesNotPresent.end(); } std::string filenameForFrame( unsigned int frame ); void setAU( unsigned int _au ); void setSubject( unsigned int _subject ); void setIntensity( unsigned int _intensity ); void setNotPresent( unsigned int start, unsigned int end ); void setPresent( unsigned int start, unsigned int end ); private: unsigned int au; unsigned int subject; unsigned int intensity; mpt_frames framesPresent; mpt_frames framesNotPresent; }; class mpt_RutgersIterator { public: mpt_RutgersIterator( const char *filepath ); mpt_RutgersIterator( const std::string &filepath ); mpt_RutgersIterator( std::istream &_is ); ~mpt_RutgersIterator(); bool nextData( mpt_RutgersData &data ); unsigned int line(); // line number of most recently read line bool eof(); private: std::ifstream ifstr; mpt_lineIterator lines; };