]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2013 Daniel James | |
3 | ||
4 | Use, modification and distribution is subject to the Boost Software | |
5 | License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
6 | http://www.boost.org/LICENSE_1_0.txt) | |
7 | =============================================================================*/ | |
8 | ||
9 | #if !defined(QUICKBOOK_DEPENDENCY_TRACKER_HPP) | |
10 | #define QUICKBOOK_DEPENDENCY_TRACKER_HPP | |
11 | ||
11fdf7f2 | 12 | #include <iosfwd> |
7c673cae FG |
13 | #include <map> |
14 | #include <set> | |
7c673cae FG |
15 | #include <boost/filesystem/path.hpp> |
16 | ||
17 | namespace quickbook | |
18 | { | |
19 | namespace fs = boost::filesystem; | |
20 | ||
11fdf7f2 TL |
21 | struct dependency_tracker |
22 | { | |
23 | private: | |
7c673cae FG |
24 | typedef std::map<fs::path, bool> dependency_list; |
25 | typedef std::map<fs::path, std::set<fs::path> > glob_list; | |
26 | ||
27 | dependency_list dependencies; | |
28 | glob_list glob_dependencies; | |
29 | glob_list::iterator last_glob; | |
30 | ||
11fdf7f2 TL |
31 | public: |
32 | enum flags | |
33 | { | |
7c673cae FG |
34 | default_ = 0, |
35 | checked = 1, | |
36 | escaped = 2 | |
37 | }; | |
38 | ||
39 | dependency_tracker(); | |
40 | ||
41 | // Call this before loading any file so that it will be included in the | |
42 | // list of dependencies. Returns true if file exists. | |
43 | bool add_dependency(fs::path const&); | |
44 | ||
45 | void add_glob(fs::path const&); | |
46 | void add_glob_match(fs::path const&); | |
47 | ||
48 | void write_dependencies(fs::path const&, flags = default_); | |
49 | void write_dependencies(std::ostream&, flags = default_); | |
50 | }; | |
51 | } | |
52 | ||
53 | #endif |