blob: 5344d027bed9df124483ed879ab493babc5fe69e (
plain)
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
54
|
#ifndef RULE_H
#define RULE_H
#include "types.h"
#include <bu/formatter.h>
class Rule
{
friend Bu::Formatter &operator<<( Bu::Formatter &f, const Rule &t );
public:
Rule( const Bu::FString &sName );
virtual ~Rule();
const Bu::FString &getName() const;
void setInput( const AstBranch *pNewInput );
const AstBranch *getInput() const;
bool hasOutputs() const;
void addOutput( const AstBranch *pNewOutput );
void addProfile( const AstBranch *pProfile );
void prepTarget( class Target *pTarget );
class Target *createTarget( class Runner &r, const Bu::FString &sInput,
class Target *pParent );
bool ruleMatches( class Runner &r, const Bu::FString &sInput );
void addTag( const Bu::FString &sTag );
const StrList &getTagList() const;
void setDisplay( const Bu::FString &sStr );
const Bu::FString &getDisplay() const;
void addRequires( const AstBranch *pBr );
private:
Bu::FString sName;
Bu::FString sDisplay;
const AstBranch *pInput;
AstBranchList lOutput;
ProfileHash hProfiles;
StrList lsTags;
AstBranchList lRequires;
};
Bu::Formatter &operator<<( Bu::Formatter &f, const Rule &t );
namespace Bu
{
template<> Bu::Formatter &operator<< <Rule>( Bu::Formatter &f, const Rule *t );
};
#endif
|