#ifndef WEBVTTPARSER_HPP #define WEBVTTPARSER_HPP namespace WebvttParser { class IReader { protected: IReader(); virtual ~IReader(); public: virtual int Read(char& c) = 0; }; class Parser { private: Parser(const Parser&); Parser& operator=(const Parser&); public: Parser(IReader*); ~Parser(); int Parse(); //need to know kind: // caption, description, metadata, etc // is this a webvtt stream? // //cue identifier //timestamp (or defaults?) + cue settings //payload // preserve each line //machine states: // parsing stream id ("webvtt") // parsing file-wide metadata // parsing cue // //within cue: // parsing line // is this a cue identifier or timestamp line? // // parsing cue id // parsing timestamp // parsing lines, looking for end-of-cue private: IReader* const m_pReader; }; } //end namespace WebvttParser #endif