Download | Plain Text | No Line Numbers
- /**
- * @module cfile
- * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348)
- * @brief Abstract class for handling files.
- * Needed for generic use in CScriptparser.
- * @date 17.04.2009
- */
-
- #ifndef CFILE_H
- #define CFILE_H
-
- #include <string>
- #include <set>
- #include <list>
- #include <fstream>
- #include <stdexcept>
-
- /**
- * @class CFile
- * @brief Abstract class for handling files. Needed for generic use in
- * CScriptparser.
- *
- * In order for CScriptparser to determine which instance of CFile supports
- * which filetype, every implemententation need to insert their filetypes to
- * the member m_types in their constructor.
- *
- * On error throw FileError.
- */
- class CFile
- {
- public:
- /**
- * @class FileError
- * @brief Exception thrown by implemententations of CFile
- */
- class FileError : public std::invalid_argument {
- public:
- /**
- * @method FileError
- * @brief Default exception ctor
- * @param what message to pass along
- * @return -
- * @globalvars none
- * @exception none
- * @conditions none
- */
- FileError(const std::string& what)
- : std::invalid_argument(what)
- {}
- };
-
- /**
- * @method ~CFile
- * @brief Default dtor (virtual)
- * @param -
- * @return -
- * @globalvars none
- * @exception none
- * @conditions none
- */
- virtual ~CFile()
- {};
-
- /**
- * @method read
- * @brief Pure virtual method (interface). Should read data from filestream.
- * @param in filestream to read data from
- * @return -
- * @globalvars none
- * @exception FileError
- * @conditions none
- */
- virtual void read(std::ifstream& in) = 0;
-
- /**
- * @method write
- * @brief Pure virtual method (interface). Should write data to filestream.
- * @param out filestream to write data to
- * @return -
- * @globalvars none
- * @exception FileError
- * @conditions none
- */
- virtual void write(std::ofstream& out) = 0;
-
- /**
- * @method callFunc
- * @brief Pure virtual method (interface). Should delegate the function
- * and its parameters to the correct internal method.
- * @param func function name
- * @param params function parameters as list
- * @return -
- * @globalvars none
- * @exception FileError
- * @conditions none
- */
- virtual void callFunc(const std::string& func, const std::list<std::string>& params) = 0;
-
- /**
- * @method supportsType
- * @brief Check if filetype is supported by this implementation.
- * @param type filetype
- * @return true if filetype is supported. false otherwise
- * @globalvars none
- * @exception none
- * @conditions none
- */
- bool supportsType(const std::string& type)
- {
- return (m_types.find(type) == m_types.end()) ? false : true;
- }
-
- protected:
- /* members */
- /** set of filetypes suppported by this implementation */
- std::set<std::string> m_types;
- };
-
- #endif
-
- /* vim: set et sw=2 ts=2: */
-