File: dependency_tracker.hpp

package info (click to toggle)
boost1.74 1.74.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 464,084 kB
  • sloc: cpp: 3,338,324; xml: 131,293; python: 33,088; ansic: 14,336; asm: 4,034; sh: 3,351; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (53 lines) | stat: -rw-r--r-- 1,504 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*=============================================================================
    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 <iosfwd>
#include <map>
#include <set>
#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