]> git.tdb.fi Git - builder.git/blob - source/pattern.h
Refactor transitive dependencies to work on all targets
[builder.git] / source / pattern.h
1 #ifndef PATTERN_H_
2 #define PATTERN_H_
3
4 #include <list>
5 #include <string>
6
7 /**
8 Stores a filename pattern.  A pattern consists of a prefix and a suffix, and
9 can be applied to a body to form a complete filename.  Either or both of the
10 prefix and suffix may be empty.
11 */
12 class Pattern
13 {
14 private:
15         std::string prefix;
16         std::string suffix;
17
18 public:
19         /** Constructs a pattern from a single string.  The string must have exactly
20         one percent sign (%) to separate the prefix and suffix. */
21         Pattern(const std::string &);
22
23         /** Applies the pattern to a body string. */
24         std::string apply(const std::string &) const;
25
26         /** Applies a list of patterns to the same body. */
27         static std::list<std::string> apply_list(const std::list<Pattern> &, const std::string &);
28 };
29
30 #endif