/** \file FormatParserStorage.hpp * * date: Jun, 22 2010 * author: heber * */ #ifndef FORMATPARSERSTORAGE_HPP_ #define FORMATPARSERSTORAGE_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include "Patterns/Singleton.hpp" #include #include class FormatParser; class MpqcParser; class PcpParser; class TremoloParser; class XyzParser; // enum has to be outside of class for operator++ to be possible enum ParserTypes { mpqc, pcp, tremolo, xyz, ParserTypes_end, ParserTypes_begin = mpqc }; typedef enum ParserTypes ParserTypes; ParserTypes &operator++(ParserTypes &type); class FormatParserStorage : public Singleton { friend class Singleton; public: void addMpqc(); void addPcp(); void addTremolo(); void addXyz(); MpqcParser &getMpqc(); PcpParser &getPcp(); TremoloParser &getTremolo(); XyzParser &getXyz(); void SetOutputPrefixForAll(std::string &_prefix); void SaveAll(); private: // private constructors as this is a singleton FormatParserStorage(); ~FormatParserStorage(); // list of allocated parsers std::vector ParserList; // list of allocated strams std::vector ParserStream; // which parser is already present std::vector ParserPresent; // default suffix of each parser type std::vector ParserSuffix; // prefix of the filenames to use on save std::string prefix; }; #endif // FORMATPARSERSTORAGE_HPP_