]> git.tdb.fi Git - builder.git/blob - source/condition.h
Change mspparser -> mspdatafile
[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
18 class Condition
19 {
20 public:
21         class Loader: public Msp::DataFile::Loader
22         {
23         public:
24                 Loader(Condition &);
25         private:
26                 Condition &cond;
27
28                 void require(const std::string &);
29                 void build_info();
30         };
31
32         Condition(Package &, const std::string &);
33         const PkgRefList &get_requires() const { return requires; }
34         const BuildInfo  &get_build_info() const { return build_info; }
35         void             resolve_refs();
36         bool             eval();
37 private:
38         Package    &pkg;
39         StringMap  expression;
40         PkgRefList requires;
41         BuildInfo  build_info;
42 };
43 typedef std::list<Condition> ConditionList;
44
45 #endif