#ifndef __SITECING_FILE_FACTORY_H #define __SITECING_FILE_FACTORY_H #include #include /** * @file * @brief the file_factory class declaration. */ namespace sitecing { using namespace std; /** * The factory class. Does the job similar to that which is done by make * utility. */ class file_factory { public: /** * The recursion depth. */ int depth; /** * The list of files type. The list of strings, in fact. */ typedef list file_list_t; file_factory() : depth(0) { } /** * Fetch dependencies for the given file. * @param dst the destination file. * @param deps where to put dependencies to. */ virtual void get_dependencies(const string& dst,file_list_t& deps) = 0; /** * Check if the destination is up to day. * @param dst the destination file. * @param deps if the deps pointer is non there, the dependencies * retrieved will be stored there. * @return true if yes. * @see get_dependencies() */ virtual bool is_uptodate(const string& dst,file_list_t* deps=0); /** * Build the file requested. * @param dst the file requested. */ virtual void build(const string& dst) = 0; /** * Make the file requested, which means: build it, unless it's * uptodate. * @see is_uptodate() * @see build() */ virtual void make(const string& dst); }; } #endif /* __SITECING_FILE_FACTORY_H */