]> git.tdb.fi Git - builder.git/blob - source/condition.h
Split class Package into SourcePackage and BinaryPackage
[builder.git] / source / condition.h
1 /* $Id$
2
3 This file is part of builder
4 Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef CONDITION_H_
9 #define CONDITION_H_
10
11 #include <msp/datafile/loader.h>
12 #include "buildinfo.h"
13 #include "misc.h"
14 #include "packageref.h"
15
16 class Config;
17 class SourcePackage;
18
19 class Condition
20 {
21 public:
22         class Loader: public Msp::DataFile::Loader
23         {
24         public:
25                 Loader(Condition &);
26         private:
27                 Condition &cond;
28
29                 void require(const std::string &);
30                 void build_info();
31         };
32
33         Condition(SourcePackage &, const std::string &);
34         const PkgRefList &get_requires() const { return requires; }
35         const BuildInfo  &get_build_info() const { return build_info; }
36         void             resolve_refs();
37         bool             eval();
38 private:
39         SourcePackage &pkg;
40         StringMap  expression;
41         PkgRefList requires;
42         BuildInfo  build_info;
43 };
44 typedef std::list<Condition> ConditionList;
45
46 #endif