blob: 2da44f5c038360f880721e081628999f3b28bde5 [file] [log] [blame]
/*=============================================================================
Copyright (c) 2013 Daniel James
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
#if !defined(QUICKBOOK_DEPENDENCY_TRACKER_HPP)
#define QUICKBOOK_DEPENDENCY_TRACKER_HPP
#include <map>
#include <set>
#include <iosfwd>
#include <boost/filesystem/path.hpp>
namespace quickbook
{
namespace fs = boost::filesystem;
struct dependency_tracker {
private:
typedef std::map<fs::path, bool> dependency_list;
typedef std::map<fs::path, std::set<fs::path> > glob_list;
dependency_list dependencies;
glob_list glob_dependencies;
glob_list::iterator last_glob;
public:
enum flags {
default_ = 0,
checked = 1,
escaped = 2
};
dependency_tracker();
// Call this before loading any file so that it will be included in the
// list of dependencies. Returns true if file exists.
bool add_dependency(fs::path const&);
void add_glob(fs::path const&);
void add_glob_match(fs::path const&);
void write_dependencies(fs::path const&, flags = default_);
void write_dependencies(std::ostream&, flags = default_);
};
}
#endif